option for batch record deletion in bucket interface
authorphasefx <phasefx@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Sun, 15 Jul 2007 03:04:42 +0000 (03:04 +0000)
committerphasefx <phasefx@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Sun, 15 Jul 2007 03:04:42 +0000 (03:04 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@7552 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/xul/staff_client/chrome/content/main/constants.js
Open-ILS/xul/staff_client/server/cat/record_buckets.js
Open-ILS/xul/staff_client/server/cat/record_buckets.xul
Open-ILS/xul/staff_client/server/cat/record_buckets_overlay.xul

index 2ee34b1..c33a5f1 100644 (file)
@@ -110,6 +110,7 @@ const api = {
        'FM_BRE_RETRIEVE_VIA_ID' : { 'app' : 'open-ils.cat', 'method' : 'open-ils.cat.biblio.record.metadata.retrieve', 'secure' : false },
        'FM_BRE_ID_SEARCH_VIA_BARCODE' : { 'app' : 'open-ils.search', 'method' : 'open-ils.search.biblio.find_by_barcode', 'secure' : false },
        'FM_BRE_ID_SEARCH_VIA_TCN' : { 'app' : 'open-ils.search', 'method' : 'open-ils.search.biblio.tcn', 'secure' : false },
+       'FM_BRE_DELETE' : { 'app' : 'open-ils.cat', 'method' : 'open-ils.cat.biblio.record_entry.delete', 'secure' : false },
        'FM_BRN_FROM_MARCXML' : { 'app' : 'open-ils.search', 'method' : 'open-ils.search.z3950.marcxml_to_brn', 'secure' : false },
        'FM_CCS_RETRIEVE' : { 'app' : 'open-ils.search', 'method' : 'open-ils.search.config.copy_status.retrieve.all', 'secure' : false },
        'FM_CIRC_DETAILS' : { 'app' : 'open-ils.circ', 'method' : 'open-ils.circ.fleshed.retrieve' },
index c11fe24..0da10d2 100644 (file)
@@ -550,6 +550,81 @@ cat.record_buckets.prototype = {
 
                                                }
                                        ],
+                                       
+                                       'cmd_delete_records' : [
+                                               ['command'],
+                                               function() {
+                                                       try {
+                                                               obj.list2.select_all();
+                                                               obj.data.stash_retrieve();
+                                                               JSAN.use('util.functional');
+
+                                                               var record_ids = util.functional.map_list(
+                                                                       obj.list2.dump_retrieve_ids(),
+                                                                       function (o) {
+                                                                               return JSON2js(o).docid; // docid
+                                                                       }
+                                                               );
+
+                                                               netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite');
+                                                               var top_xml = '<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" >';
+                                                               top_xml += '<description>Delete these records? (Select the "lead" record first)</description>';
+                                                               top_xml += '<hbox><button id="lead" disabled="true" label="Delete" name="fancy_submit"/><button label="Cancel" accesskey="C" name="fancy_cancel"/></hbox></vbox>';
+
+                                                               var xml = '<form xmlns="http://www.w3.org/1999/xhtml">';
+                                                               xml += '<table><tr valign="top">';
+                                                               for (var i = 0; i < record_ids.length; i++) {
+                                                                       xml += '<td>Record #' + record_ids[i] + '</td>';
+                                                               }
+                                                               xml += '</tr><tr valign="top">';
+                                                               for (var i = 0; i < record_ids.length; i++) {
+                                                                       xml += '<td nowrap="nowrap"><iframe src="' + urls.XUL_BIB_BRIEF; 
+                                                                       xml += '?docid=' + record_ids[i] + '"/></td>';
+                                                               }
+                                                               xml += '</tr><tr valign="top">';
+                                                               for (var i = 0; i < record_ids.length; i++) {
+                                                                       html = obj.network.simple_request('MARC_HTML_RETRIEVE',[ record_ids[i] ]);
+                                                                       xml += '<td nowrap="nowrap"><iframe style="min-height: 1000px; min-width: 300px;" flex="1" src="data:text/html,' + window.escape(html) + '"/></td>';
+                                                               }
+                                                               xml += '</tr></table></form>';
+                                                               //obj.data.temp_merge_top = top_xml; obj.data.stash('temp_merge_top');
+                                                               //obj.data.temp_merge_mid = xml; obj.data.stash('temp_merge_mid');
+                                                               window.open(
+                                                                       urls.XUL_FANCY_PROMPT,
+                                                                       //+ '?xml_in_stash=temp_merge_mid'
+                                                                       //+ '&top_xml_in_stash=temp_merge_top'
+                                                                       //+ '&title=' + window.escape('Record Purging'),
+                                                                       'fancy_prompt', 'chrome,resizable,modal,width=700,height=500',
+                                                                       {
+                                                                               'top_xml' : top_xml, 'xml' : xml, 'title' : 'Record Purging'
+                                                                       }
+                                                               );
+                                                               obj.data.stash_retrieve();
+                                                               if (obj.data.fancy_prompt_data == '') { alert('Delete Aborted'); return; }
+                                                               var s = '';
+                                                               for (var i = 0; i < record_ids.length; i++) {
+                                                                       var robj = obj.network.simple_request('FM_BRE_DELETE',[ses(),record_ids[i]]);
+                                                                       if (typeof robj.ilsevent != 'undefined') {
+                                                                               if (!s) s = 'Error deleting these records:\n';
+                                                                               s += 'Record #' + record_ids[i] + ' : ' + robj.textcode + ' : ' + robj.desc + '\n';
+                                                                       }
+                                                               }
+                                                               if (s) { alert(s); } else { alert('Records deleted.'); }
+
+                                                               obj.render_pending_records(); // FIXME -- need a generic refresh for lists
+                                                               setTimeout(
+                                                                       function() {
+                                                                               JSAN.use('util.widgets'); 
+                                                                               util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
+                                                                       }, 0
+                                                               );
+                                                       } catch(E) {
+                                                               obj.error.standard_unexpected_error_alert('Records were not likely deleted.',E);
+                                                       }
+
+                                               }
+                                       ],
+
                                        'cmd_broken' : [
                                                ['command'],
                                                function() { alert('Not Yet Implemented'); }
index bfcac3c..4b84445 100644 (file)
@@ -93,6 +93,7 @@
                <command id="cmd_record_buckets_reprint" />
                <command id="cmd_record_buckets_done" />
                <command id="cmd_merge_records" />
+               <command id="cmd_delete_records" />
                <command id="cmd_sel_opac" />
        </commandset>
 
index 614c6ff..d408896 100644 (file)
@@ -70,6 +70,7 @@
        <hbox style="background: grey">
                <vbox><spacer flex="1"/><label value="Batch:" style="font-weight: bold"/><spacer flex="1"/></vbox>
                <button command="cmd_sel_opac" label="Show All in Catalog" accesskey="S"/>
+               <button id="record_buckets_delete_records" command="cmd_delete_records" label="Delete All Records"/>
                <button id="record_buckets_merge_records" command="cmd_merge_records" label="Merge All Records"/>
        </hbox>
 </hbox>