record merging.. pick the lead from the bucket
authorphasefx <phasefx@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Sun, 30 Apr 2006 04:26:39 +0000 (04:26 +0000)
committerphasefx <phasefx@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Sun, 30 Apr 2006 04:26:39 +0000 (04:26 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@3983 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/xul/staff_client/chrome/content/cat/opac.xul
Open-ILS/xul/staff_client/server/cat/record_buckets.js

index 3d1d433..f85aff2 100644 (file)
                                'chrome,resizable,modal,center'
                        );
                }
-
-               function mark_destination() {
-                       JSAN.use('OpenILS.data'); var data = new OpenILS.data(); data.init({'via':'stash'});
-                       data.marked_record = docid;
-                       data.stash('marked_record');
-                       alert('Record marked as Merge Record Destination');
-               }
-
        ]]>
        </script>
 
                        <menuitem label="MARC Edit" accesskey="E" id="marc_edit" oncommand="set_marc_edit();"/>
                        <menuitem label="Holdings Maintenance" accesskey="H" id="copy_browse" oncommand="set_copy_browser();"/>
                        <menuseparator/>
-                       <menuitem label="Mark as a Merge Record Destination" accesskey="M" id="mark_destination" oncommand="mark_destination();"/>
                        <menuitem label="Add to Bucket" accesskey="B" id="add_bucket" oncommand="add_to_bucket();"/>
                        <menuseparator/>
                        <menuitem label="Duplicate in New Tab" id="bib_in_new_tab" oncommand="bib_in_new_tab();"/>
index b336bb2..dc5729e 100644 (file)
@@ -263,7 +263,7 @@ cat.record_buckets.prototype = {
                                                                var bucket = obj.controller.view.bucket_menulist.value;
                                                                var name = obj.bucket_id_name_map[ bucket ];
                                                                var conf = window.confirm('Delete the bucket named ' + name + '?');
-                                                               if (conf != name) return;
+                                                               if (!conf) return;
                                                                obj.list2.clear();
                                                                var robj = obj.network.simple_request('BUCKET_DELETE',[ses(),'biblio',bucket]);
                                                                if (typeof robj == 'object') throw robj;
@@ -348,10 +348,6 @@ cat.record_buckets.prototype = {
                                                function() {
                                                        try {
                                                                obj.data.stash_retrieve();
-                                                               if (!obj.data.marked_record) {
-                                                                       alert('Please mark a record from within the catalog as the Merge Record Destination.');
-                                                                       return;
-                                                               }
                                                                JSAN.use('util.functional');
 
                                                                var record_ids = util.functional.map_list(
@@ -362,41 +358,51 @@ cat.record_buckets.prototype = {
                                                                );
 
                                                                netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite');
-                                                               var xml = '<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" >';
-                                                               xml += '<description>Merge these records? (the lead record will be the first listed)</description>';
-                                                               xml += '<hbox><button label="Merge" name="fancy_submit"/><button label="Cancel" accesskey="C" name="fancy_cancel"/></hbox>';
-                                                               xml += '<hbox flex="1" style="overflow: scroll;">';
-
-                                                                       html = obj.network.simple_request('MARC_HTML_RETRIEVE',[ obj.data.marked_record ]);
-                                                                       xml += '<vbox flex="1" style="">';
-                                                                       xml += '<iframe src="' + xulG.url_prefix( urls.XUL_BIB_BRIEF ) + '?docid=' + obj.data.marked_record + '"/>';
-                                                                       xml += '<iframe flex="1" src="data:text/html,' + window.escape(html) + '"/>';
-                                                                       xml += '</vbox><splitter><grippy/></splitter>';
+                                                               var top_xml = '<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" >';
+                                                               top_xml += '<description>Merge these records? (Select the "lead" record first)</description>';
+                                                               top_xml += '<hbox><button id="lead" disabled="true" label="Merge" 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><input value="Lead" id="record_' + record_ids[i] + '" type="radio" name="lead"';
+                                                                       xml += ' onclick="' + "try { var x = document.getElementById('lead'); x.setAttribute('value',";
+                                                                       xml += record_ids[i] + '); x.disabled = false; } catch(E) { alert(E); }">';
+                                                                       xml += '</input>Lead 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="' + xulG.url_prefix( 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 += '<vbox flex="1" style="">';
-                                                                       xml += '<iframe src="' + xulG.url_prefix( urls.XUL_BIB_BRIEF ) + '?docid=' + record_ids[i] + '"/>';
-                                                                       xml += '<iframe flex="1" src="data:text/html,' + window.escape(html) + '"/>';
-                                                                       xml += '</vbox><splitter><grippy/></splitter>';
-
+                                                                       xml += '<td nowrap="nowrap"><iframe style="min-height: 1000px; min-width: 300px;" flex="1" src="data:text/html,' + window.escape(html) + '"/></td>';
                                                                }
-
-                                                               xml += '</hbox>';
-                                                               xml += '</vbox>';
-                                                               obj.data.temp_merge = xml; obj.data.stash('temp_merge');
+                                                               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'
+                                                                       + '?xml_in_stash=temp_merge_mid'
+                                                                       + '&top_xml_in_stash=temp_merge_top'
                                                                        + '&title=' + window.escape('Record Merging'),
                                                                        'fancy_prompt', 'chrome,resizable,modal,width=700,height=500'
                                                                );
-                                                               JSAN.use('OpenILS.data');
-                                                               var data = new OpenILS.data(); data.init({'via':'stash'});
-                                                               if (data.fancy_prompt_data == '') { alert('Merge Aborted'); return; }
-
-                                                               var robj = obj.network.simple_request('MERGE_RECORDS', [ ses(), obj.data.marked_record, record_ids ]);
+                                                               obj.data.stash_retrieve();
+                                                               if (obj.data.fancy_prompt_data == '') { alert('Merge Aborted'); return; }
+                                                               var robj = obj.network.simple_request('MERGE_RECORDS', 
+                                                                       [ 
+                                                                               ses(), 
+                                                                               obj.data.fancy_prompt_data.lead, 
+                                                                               util.functional.filter_list( record_ids,
+                                                                                       function(o) {
+                                                                                               return o != obj.data.fancy_prompt_data.lead;
+                                                                                       }
+                                                                               )
+                                                                       ]
+                                                               );
                                                                if (typeof robj.ilsevent != 'undefined') {
                                                                        throw(robj);
                                                                } else {