wrap up holds placement, editing, and viewing for p-type holds
authorBill Erickson <erickson@esilibrary.com>
Thu, 24 Mar 2011 15:26:08 +0000 (11:26 -0400)
committerBill Erickson <erickson@esilibrary.com>
Thu, 24 Mar 2011 15:26:08 +0000 (11:26 -0400)
Open-ILS/web/opac/locale/en-US/opac.dtd
Open-ILS/web/opac/skin/default/js/holds.js
Open-ILS/web/opac/skin/default/js/myopac.js
Open-ILS/web/opac/skin/default/xml/common/holds.xml
Open-ILS/web/opac/skin/default/xml/myopac/myopac_holds.xml

index 74b7a27..ac9d626 100644 (file)
@@ -202,6 +202,7 @@ avoid using bookbags all together.  Thank you.">
 <!--   ================================================================= 
        MyOPAC Holds Page 
        ================================================================= -->
+
 <!ENTITY myopac.holds.formats "Formats">
 <!ENTITY myopac.holds.location "Pickup Location">
 <!ENTITY myopac.holds.edit "Edit">
index 522978d..153a8d5 100644 (file)
@@ -229,8 +229,11 @@ function holdFetchObjects(hold, doneCallback) {
         } else if( type == 'I' ) {
             _h_set_issuance(args, doneCallback);
 
+        } else if( type == 'P' ) {
+            _h_set_parts(args, doneCallback);
+
                } else {
-                       if( type == 'T' ) {
+                       if( type == 'T') {
                                _h_set_rec(args, doneCallback);
                        } else {
                                _h_set_rec_descriptors(args, doneCallback);
@@ -241,6 +244,25 @@ function holdFetchObjects(hold, doneCallback) {
        return args;
 }
 
+function _h_set_parts(args, doneCallback) {
+
+    var preq = new Request(
+        'open-ils.fielder:open-ils.fielder.bmp.atomic',
+        {"cache":1, "fields":["label", "record"],"query": {"id":args.part}}
+    );
+
+    preq.callback(
+        function(r) {
+            var part = r.getResultObject()[0];
+            args.record = part.record;
+            args.partObject = part;
+            _h_set_rec(args, doneCallback);
+        }
+    );
+
+    preq.send();
+}
+
 function _h_set_vol(args, doneCallback) {
 
        if( args.volumeObject ) {
@@ -292,10 +314,13 @@ function _h_set_rec(args, doneCallback) {
        else 
                args.recordObject = findRecord( args.record, 'T' );
        
-       if( args.type == 'T' || args.type == 'M' ) 
+       if( args.type == 'T' || args.type == 'M' )  {
                _h_set_rec_descriptors(args, doneCallback);
-       else 
+       //} else if(args.type == 'P') {
+        //_h_get_parts(args, doneCallback);
+    } else {
                if(doneCallback) doneCallback(args);
+    }
 }
 
 
@@ -305,7 +330,7 @@ function _h_set_rec_descriptors(args, doneCallback) {
         args.pickup_lib = getSelectorVal($('holds_org_selector'));
 
     if(args.pickup_lib === null)
-        args.pickup_lib = holdArgs.recipient.home_ou();
+        args.pickup_lib = args.recipient.home_ou();
 
        // grab the list of record desciptors attached to this records metarecord 
        if( ! args.recordDescriptors )  {
@@ -333,54 +358,41 @@ function _h_set_rec_descriptors(args, doneCallback) {
                req.callback(
                        function(r) {
                                var data = r.getResultObject();
-                               holdArgs.recordDescriptors = args.recordDescriptors = data.descriptors;
-                               holdArgs.metarecord = args.metarecord = data.metarecord;
+                               args.recordDescriptors = args.recordDescriptors = data.descriptors;
+                               args.metarecord = args.metarecord = data.metarecord;
                                if( args.type == 'M' && ! args.metarecordObject) 
-                                       holdArgs.metarecordObject = args.metarecordObject = findRecord(args.metarecord, 'M');   
+                                       args.metarecordObject = args.metarecordObject = findRecord(args.metarecord, 'M');       
 
-                _h_set_parts(args, doneCallback);
+                _h_get_parts(args, doneCallback);
                        }
                );
                req.send();
 
        } else {
-        _h_set_parts(args, doneCallback);
+        _h_get_parts(args, doneCallback);
        }
 
        return args;
 }
 
-function _h_set_parts(args, doneCallback) {
+function _h_get_parts(args, doneCallback) {
 
-    if(args.recordParts) {
-        if(doneCallback) doneCallback(args);
-    } else {
-               var params = { pickup_lib: args.pickup_lib };
+    if(args.type == 'M' || args.editHold || args.holdParts) {
+        if(doneCallback) 
+            doneCallback(args);
 
-        if (args.type == 'M') {
-               if( !args.metarecord && args.record) {
-                params.metarecord = args.metarecord = args.record;
-                delete(args.record);
-               } else {
-                               params.metarecord = args.metarecordObject.doc_id();
-               }
-        } else {
-               params.record = args.record;
-        }
+    } else {
 
-               if( ! args.record ) {
-                       if( args.metarecord )
-                               params.metarecord = args.metarecord;
-                       else 
-                               params.metarecord = args.metarecordObject.doc_id();
-               }
+               var req = new Request(
+            'open-ils.search:open-ils.search.biblio.record_hold_parts', 
+                   {pickup_lib: args.pickup_lib, record: args.record}
+        );
 
-               var req = new Request('open-ils.search:open-ils.search.metabib.record_hold_parts', params);
                req.callback(
                        function(r) {
-                               holdArgs.recordParts = r.getResultObject();
+                               args.recordParts = r.getResultObject();
                 if(doneCallback)
-                    doneCallback();
+                    doneCallback(args);
                        }
                );
                req.send();
@@ -492,13 +504,27 @@ function __holdsDrawWindow() {
        }
 
     if(holdArgs.recordParts && holdArgs.recordParts.length) {
+        var selector = $('holds_parts_selector');
         unHideMe($('holds_parts_row'));
+        unHideMe(selector);
+
+        var nodeList = [];
+        dojo.forEach(selector.options, 
+            function(node) { if(node.value != '') nodeList.push(node) } );
+
+        dojo.forEach(nodeList, function(node) { selector.removeChild(node); });
+
         dojo.forEach(
             holdArgs.recordParts, 
             function(part) {
-                insertSelectorVal($('holds_parts_selector'), -1, part.label, part.id);
+                insertSelectorVal(selector, -1, part.label, part.id);
             }
         );
+
+    } else if(holdArgs.type == 'P') {
+        unHideMe($('holds_parts_row'));
+        unHideMe($('holds_parts_label'));
+           appendClear( $('holds_parts_label'), text(holdArgs.partObject.label));
     }
 
        removeChildren($('holds_format'));
index 6fd49f9..819f8aa 100644 (file)
@@ -499,7 +499,7 @@ function myOShowHoldStatus(r) {
 function myOPACDrawHoldTitle(hold) {
        var method;
 
-       if( hold.hold_type() == 'T' || hold.hold_type() == 'M' ) {
+       if( hold.hold_type() == 'T' || hold.hold_type() == 'M') {
                if(hold.hold_type() == "M") method = FETCH_MRMODS;
                if(hold.hold_type() == "T") method = FETCH_RMODS;
                var req = new Request(method, hold.target());
@@ -521,7 +521,7 @@ function myOPACFleshHoldTitle(r) {
 
 function _myOPACFleshHoldTitle(hold, holdObjects) {
 
-       var record = holdObjects.recordObject;
+       var record  = holdObjects.recordObject;
        var volume      = holdObjects.volumeObject;
        var copy        = holdObjects.copyObject;
 
@@ -539,6 +539,11 @@ function _myOPACFleshHoldTitle(hold, holdObjects) {
        buildTitleDetailLink(record, title_link);
        buildSearchLink(STYPE_AUTHOR, record.author(), author_link);
 
+    if(hold.hold_type() == 'P') {
+        unHideMe($n(row, 'vol_copy'));
+        $n(row, 'part').appendChild(text(holdObjects.partObject.label));
+    }
+
        if( volume ) {
                $n(row, 'volume').appendChild(text(volume.label()));
                unHideMe($n(row, 'vol_copy'));
index 34d28f5..7d8712d 100644 (file)
@@ -54,7 +54,8 @@
                                <tr class='hide_me' id='holds_parts_row'>
                                        <td class='holds_cell'>&common.mono_parts.label;</td>
                                        <td class='holds_cell'>
-                        <select id='holds_parts_selector'>
+                        <span class='hide_me' id='holds_parts_label'></span>
+                        <select id='holds_parts_selector' class='hide_me'>
                             <option value=''></option>
                         </select>
                     </td>
index 4d5b46d..08d1690 100644 (file)
@@ -71,8 +71,9 @@
                                <td name='myopac_holds_title'>
                                        <a href='javascript:void(0);' name='myopac_holds_title_link'> </a>
                                        <div name='vol_copy' style='border: 1px solid #808080; width:98%; margin-top: 2px;' class='hide_me'>
-                                               <div style='font-size: 90%' name='volume'/>
-                                               <div style='font-size: 90%' name='copy'/>
+                                               <div style='font-size: 90%' name='part'></div>
+                                               <div style='font-size: 90%' name='volume'></div>
+                                               <div style='font-size: 90%' name='copy'></div>
                                        </div>
                                </td>