more metarecord hold goodness
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 16 Jun 2006 20:40:15 +0000 (20:40 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 16 Jun 2006 20:40:15 +0000 (20:40 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@4662 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/web/opac/common/js/opac_utils.js
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/js/rdetail.js
Open-ILS/web/opac/skin/default/xml/common/cn_browse.xml
Open-ILS/web/opac/skin/default/xml/common/holds.xml
Open-ILS/web/opac/skin/default/xml/myopac/myopac_prefs.xml
Open-ILS/web/opac/skin/default/xml/rdetail/rdetail_extras.xml

index ec328db..2a95a9f 100644 (file)
@@ -749,6 +749,18 @@ function MARCFormatToMods(format) {
    return "text";
 }
 
+function MARCTypeToFriendly(format) {
+       var words = $('format_words');
+       switch(format) {
+               case 'a' :
+               case 't' : return $n(words, 'at').innerHTML;
+               default:
+                       var node = $n(words,format);
+                       if( node ) return node.innerHTML;
+       }
+       return "";
+}
+
 function setResourcePic( img, resource ) {
        img.setAttribute( "src", "../../../../images/tor/" + resource + ".jpg");
        img.title = resource;
index 50b8dc9..e5eb88a 100644 (file)
        Your PINES library will contact you when you hold items become
        available.">
 
+<!ENTITY holds.advanced_options 
+       "If you wish to broaden the scope of your hold to include other 
+       versions of this title, select the formats that would be acceptable. 
+       The first available copy will be sent to you.">
 
 <!--   ================================================================= 
                Events and Permissions 
index 89becef..0450568 100644 (file)
@@ -69,6 +69,7 @@ function holdsDrawEditor(args) {
                holdArgs.status = req.result();
                _holdsUpdateEditHold();
        }  
+
 }
 
 
@@ -172,6 +173,8 @@ function holdFetchObjects(hold, doneCallback) {
                } else {
                        if( type == 'T' ) {
                                _h_set_rec(args, doneCallback);
+                       } else {
+                               _h_set_rec_descriptors(args, doneCallback);
                        }
                }
        }
@@ -214,6 +217,7 @@ function _h_set_rec(args, doneCallback) {
                if(doneCallback) doneCallback(args);
 }
 
+
 function _h_set_rec_descriptors(args, doneCallback) {
 
        /* grab the list of record desciptors attached to this records metarecord */
@@ -224,7 +228,7 @@ function _h_set_rec_descriptors(args, doneCallback) {
                        if( args.metarecord )
                                params = { metarecord : args.metarecord };
                        else 
-                               params = { metarecord : args.metarecordObject.id() };
+                               params = { metarecord : args.metarecordObject.doc_id() };
                }
 
                var req = new Request(FETCH_MR_DESCRIPTORS, params );
@@ -233,6 +237,9 @@ function _h_set_rec_descriptors(args, doneCallback) {
                                var data = r.getResultObject();
                                args.recordDescriptors = data.descriptors;
                                args.metarecord = data.metarecord;
+                               if( args.type == 'M' && ! args.metarecordObject) 
+                                       args.metarecordObject = findRecord(args.metarecord, 'M');       
+                                
                                if(doneCallback) doneCallback(args);
                        }
                );
@@ -241,10 +248,13 @@ function _h_set_rec_descriptors(args, doneCallback) {
        } else {
                if(doneCallback) doneCallback(args);
        }
+
+       return args;
 }
 
 
 
+
 function holdsDrawWindow() {
        swapCanvas($('holds_box'));
        $('holds_cancel').onclick = function(){ runEvt('common', 'holdUpdateCanceled'), showCanvas() };
@@ -258,6 +268,9 @@ function __holdsDrawWindow() {
        var rec = holdArgs.recordObject;
        var vol = holdArgs.volumeObject;
        var copy = holdArgs.copyObject;
+       var mr = holdArgs.metarecordObject;
+
+       rec = (rec) ? rec : mr;
 
        if(!holdsOrgSelectorBuilt) {
                holdsBuildOrgSelector(null,0);
@@ -309,21 +322,39 @@ function __holdsDrawWindow() {
        }
 
        removeChildren($('holds_format'));
-       var formats = rec.types_of_resource();
+
+       var mods_formats = rec.types_of_resource();
+       var formats;
+
+       if(holdArgs.recordDescriptors)
+               formats = holdArgs.recordDescriptors[0].item_type();
+
+       if( holdArgs.type == 'T' ) {
+               var desc = grep( holdArgs.recordDescriptors,
+                       function(i) {
+                               return (i.record() == holdArgs.record); 
+                       }
+               );
+               formats = desc[0].item_type();
+       }
 
        if( holdArgs.type == 'M' ) {
                var data = holdsParseMRFormats(holdArgs.editHold.holdable_formats());
+               mods_formats = data.mods_formats;
                formats = data.formats;
        }
 
 
-       for( var i in formats ) {
-               var res = formats[i];
+       for( var i in mods_formats ) {
+               var res = mods_formats[i];
                var img = elem("img");
                setResourcePic(img, res);
-               $('holds_format').appendChild(text(' '+res+' '));
                $('holds_format').appendChild(img);
-               $('holds_format').appendChild(text(' '));
+               if(formats)
+                       $('holds_format').appendChild(text(' '+ MARCTypeToFriendly(formats[i]) +' '));
+               else
+                       $('holds_format').appendChild(text(' '+ mods_formats[i] +' '));
+               $('holds_format').appendChild(elem('br'));
        }
 
 
@@ -353,38 +384,40 @@ function holdsParseMRFormats(str) {
        var data = str.split(/-/);      
 
        var formats = [];
-       for( var i = 0; i < data[0].length; i++ ) 
-               formats.push(MARCFormatToMods(data[0].charAt(i)));
+       var mods_formats = [];
+
+       for( var i = 0; i < data[0].length; i++ ) {
+               formats.push( data[0].charAt(i) );
+               mods_formats.push( MARCFormatToMods( formats[i] ) );
+       }
        
        formats = uniquify(formats);
+       mods_formats = uniquify(mods_formats);
 
        return {
-               formats         : formats,
-               lang                    : data[2],
-               largeprint      : data[1],      
+               formats                 : formats,
+               mods_formats    : mods_formats,
+               lang                            : data[2],
+               largeprint              : data[1],      
        }
 }
 
 
 function holdsSetFormatSelector() {
        var type = holdArgs.type;
-       if( type == 'C' || type == 'V' ) return;
+       if( type == 'C' || type == 'V' || holdArgs.editHold ) return;
 
        var data                                = holdsGetFormats();
        var avail_formats       = data.avail_formats;
        var sel_formats = data.sel_formats;
        holdArgs.language = data.lang;
 
-       if( avail_formats.length > 1 ) {
-
-               unHideMe($('holds_alt_formats_row'));
-               var selector = $('hold_alt_form_selector');
+       unHideMe($('holds_alt_formats_row_extras'));
+       var selector = $('hold_alt_form_selector');
 
-               for( var i = 0; i < avail_formats.length; i++ ) {
-                       var form = avail_formats[i];
-                       if( contains(sel_formats, form) ) continue;
-                       unHideMe(findSelectorOptByValue(selector, form));
-               }
+       for( var i = 0; i < avail_formats.length; i++ ) {
+               var form = avail_formats[i];
+               unHideMe(findSelectorOptByValue(selector, form));
        }
 }
 
@@ -446,8 +479,10 @@ function holdsSetSelectedFormats() {
 
        if(vals.length == 0) return;
 
+       /*
        if( holdArgs.type == 'T' ) 
                vals.push(holdArgs.myFormat);
+               */
 
        var fstring = "";
 
@@ -569,6 +604,8 @@ function holdsBuildHoldFromWindow() {
                hold.target(holdArgs.metarecord);
        }
 
+       //alert(fstring); return;
+
        if(isXUL())             
                hold.selection_depth(getSelectorVal($('holds_depth_selector')));
 
index 45cec22..16c2125 100644 (file)
@@ -282,11 +282,8 @@ function myOPACDrawHolds(r) {
                var row = holdsTemplateRow.cloneNode(true);
                row.id = "myopac_holds_row_" + h.id();
 
-               var formats = (h.holdable_formats()) ? h.holdable_formats() : null;
                var form = $n(row, "myopac_holds_formats");
-               /*form.id = "myopac_holds_form_" + h.id() + '_' + h.target();*/
                form.id = "myopac_holds_form_" + h.id();
-               //if(formats) form.appendChild(text(formats));
 
                var orglink = $n(row, "myopac_holds_location");
                orglink.appendChild(text(findOrgUnit(h.pickup_lib()).name()));
@@ -401,16 +398,16 @@ function _myOPACFleshHoldTitle(hold, holdObjects) {
        var form = $("myopac_holds_form_" + hold.id());
 
        if(form) {
-               var formats = record.types_of_resource();
+               var mods_formats = record.types_of_resource();
 
                if( hold.hold_type() == 'M' ) {
                        var data = holdsParseMRFormats(hold.holdable_formats());
-                       formats = data.formats;
+                       mods_formats = data.mods_formats;
                }
 
-               for( var i = 0; i < formats.length; i++ ) {
+               for( var i = 0; i < mods_formats.length; i++ ) {
                        var img = elem("img");
-                       setResourcePic(img, formats[i]);
+                       setResourcePic(img, mods_formats[i]);
                        form.appendChild(img);
                }
        }
index b1089be..b7e7dd9 100644 (file)
@@ -147,6 +147,7 @@ function rdetailViewMarc(r,id) {
 
        var d = new Date();
 
+       var div = elem('div', { "class" : 'hide_me' });
        var span = div.appendChild( elem('abbr') );
 
        buildunAPISpan( span, 'biblio-record_entry', record.doc_id() );
@@ -444,7 +445,14 @@ function rdetailGatherCN() {
 
 
 function rdetailShowCNBrowse( cn, loc, depth, fromOnclick ) {
-       if(!cn) return;
+
+       if(!cn) {
+               unHideMe($('cn_browse_none'));
+               hideMe($('rdetail_cn_browse_select_div'));
+               return;
+       }
+               
+       unHideMe($('rdetail_cn_browse_select_div'));
        rdetailBuildCNList();
        setSelector( $('cn_browse_selector'), cn );
        hideMe($('rdetail_copy_info_div'));
index c1cffca..98ef379 100644 (file)
@@ -6,6 +6,8 @@
        style='width: 95%; text-align: center; padding: 15px;'>
        <div id='cn_browse_loading'  class='cn_browse_loading hide_me'>Loading Callnumber Page...</div>
        <div id='cn_browse_div'> 
+
+
                <div style='width: 90%; text-align: center; margin: 10px;' class='color_4'>
                        <span>You are now browsing</span><b style='margin-left: 6px;' id='cn_browse_where'> </b>
                </div>
index 02aa064..69419ce 100644 (file)
                                                <select id='holds_org_selector'> </select>
                                        </td>
                                </tr>
+
+                               <tr id='holds_alt_formats_row_extras' class='hide_me'>
+                                       <td colspan='2' align='center'>
+                                               <div style='padding: 8px;'>
+                                                       <a class='classic_link' href='javascript:void(0);' style='padding: 5px;'
+                                                               onclick='unHideMe($("holds_alt_formats_row"));'>Advanced Hold Options</a>
+                                               </div>
+                                       </td>
+                               </tr>
+
                                <tr id='holds_alt_formats_row' class='hide_me'>
+
                                        <td class='holds_cell'>
                                                <div style='margin-bottom: 5px;'>
-                                                       <!--
-                                                       Any of the following formats are acceptible for this hold: 
-                                                       -->
-                                                       I would be interested in receiving my hold in the following alternate formats:
+                                                       <span>Acceptable Alternative Formats: </span>
+                                                       <span> <a class='classic_link' style='color:red;' href='javascript:void(0);' 
+                                                               onclick='alert($("holds_explain_adv").innerHTML)'>(??)</a></span>
                                                </div>
                                                <div>(control-click to select multiple formats)</div>
                                        </td>
+
                                        <td class='holds_cell'>
                                                <select id='hold_alt_form_selector' multiple='true' style='width: 14em;'>
                                                        <option value='at'      class='hide_me'>&opac.search.books;</option>
                </span>
 
        </div>
+
+       <span class='hide_me' id='format_words'>
+               <span name='at'>&opac.search.books;</span>
+               <span name='at-d'>&opac.search.largePrint;</span>
+               <span name='i'>&opac.search.audioBooks;</span>
+               <span name='g'>&opac.search.videoRecordings;</span>
+               <span name='j'>&opac.search.music;</span>
+               <span name='m'>&opac.search.electronic;</span>
+       </span>
+
+       <span class='hide_me' id='holds_explain_adv'>&holds.advanced_options;</span>
+
 </div>
+
+
index 277edc3..0559276 100644 (file)
@@ -42,7 +42,7 @@
                        <!-- default hold notification type -->
                        <tr>
                                <td>
-                                       <span>Default Hold Notification Style</span>
+                                       <span>Default Hold Notification Method</span>
                                        <a class='classic_link' href='javascript:void(0);' 
                                                onclick='alert($("myopac_pref_hold_notify_alert").textContent);' >(??)</a>
                                </td>
index 175deeb..d3f9374 100644 (file)
                </div>
 
                <div id='rdetail_cn_browse_div' style='text-align: center;' class='hide_me'>
+
+                       <div id='cn_browse_none' class='hide_me color_4' style='width: 90%; text-align: center; margin: 10px;'>
+                               There are no call numbers for this item at this location.
+                       </div>
+
                        <div id='rdetail_cn_browse_select_div' 
                                style='width: 100%; border: 1px solid black; padding: 6px; margin-top: 5px;'>
                                <span>Local Call Numbers: </span>