[open-ils-commits] r980 - conifer/branches/rel_1_6_1/web/opac/skin/uwin/js (artunit)
svn at svn.open-ils.org
svn at svn.open-ils.org
Thu Sep 9 21:41:40 EDT 2010
Author: artunit
Date: 2010-09-09 21:41:38 -0400 (Thu, 09 Sep 2010)
New Revision: 980
Modified:
conifer/branches/rel_1_6_1/web/opac/skin/uwin/js/holds.js
Log:
limiting pickup location to where item available
Modified: conifer/branches/rel_1_6_1/web/opac/skin/uwin/js/holds.js
===================================================================
--- conifer/branches/rel_1_6_1/web/opac/skin/uwin/js/holds.js 2010-09-07 03:09:31 UTC (rev 979)
+++ conifer/branches/rel_1_6_1/web/opac/skin/uwin/js/holds.js 2010-09-10 01:41:38 UTC (rev 980)
@@ -1,3 +1,4 @@
+var holdLocs = [109,122];
var holdsOrgSelectorBuilt = false;
var holdArgs;
@@ -11,6 +12,32 @@
var noEmailMessage;
var noEmailMessageXUL;
+function checkLoc(search){
+ for (var i=0; i<holdLocs.length; i++)
+ if (holdLocs[i] == search) return true;
+
+ return false;
+}
+
+/*
+ inefficient to check this again but need to go beyond search location
+*/
+function holdsCheckOk(loc_id, rec_id) {
+ var req = new Request( 'open-ils.search:open-ils.search.biblio.record.copy_count', loc_id, rec_id );
+ req.send(true);
+ if (req) {
+ var ccDepths = req.result();
+ if (
+ (parseInt(ccDepths[(ccDepths.length - 1)].available) == 0) &&
+ (parseInt(ccDepths[(ccDepths.length - 1)].count) > 0))
+ {
+ return loc_id;
+ }//if
+ }
+ return 0;
+}
+
+
function holdsHandleStaff() {
// if we know the recipient's barcode, use it
@@ -56,6 +83,8 @@
return
}
+ grabUserPrefs(user);
+
holdArgs.recipient = user;
holdsDrawEditor();
}
@@ -343,7 +372,21 @@
rec = (rec) ? rec : mr;
if(!holdsOrgSelectorBuilt) {
- holdsBuildOrgSelector(null,0);
+
+ //give preference to home location
+ var holdLoc = holdsCheckOk(holdArgs.recipient.home_ou(),rec.doc_id());
+ for (var i=0; i<holdLocs.length && holdLoc == 0; i++) {
+ if (holdLoc != holdArgs.recipient.home_ou())
+ holdLoc = holdsCheckOk(holdLocs[i], rec.doc_id())
+ }//for
+
+ //this should be rare, but if someone from another library was using
+ //the skin, it could happen, in which case we block it here
+ if (holdLoc == 0) {
+ alert("Sorry, this material is not available for hold.");
+ return;
+ }
+ holdsBuildOrgSelector(holdLoc,null,0);
holdsOrgSelectorBuilt = true;
var selector = $('holds_org_selector');
@@ -445,15 +488,21 @@
$('holds_phone').value = holdArgs.recipient.day_phone();
appendClear( $('holds_email'), text(holdArgs.recipient.email()));
- var pref = G.user.prefs[PREF_HOLD_NOTIFY];
+ var pref = holdArgs.recipient.prefs[PREF_HOLD_NOTIFY];
if(pref) {
- if( ! pref.match(/email/i) )
+ if( ! pref.match(/email/i) ) {
$('holds_enable_email').checked = false;
+ } else {
+ $('holds_enable_email').checked = true;
+ }
if( ! pref.match(/phone/i) ) {
$('holds_phone').disabled = true;
$('holds_enable_phone').checked = false;
+ } else {
+ $('holds_phone').disabled = false;
+ $('holds_enable_phone').checked = true;
}
}
@@ -652,9 +701,8 @@
}
}
+function holdsBuildOrgSelector(holdLoc,node) {
-function holdsBuildOrgSelector(node) {
-
if(!node) node = globalOrgTree;
if(!isTrue(node.opac_visible())) return;
@@ -663,15 +711,20 @@
var type = findOrgType(node.ou_type());
var indent = type.depth() - 1;
- var opt = setSelectorVal( selector, index, node.name(), node.id(), null, indent );
- if(!type.can_have_users()) {
- opt.disabled = true;
- addCSSClass(opt, 'disabled_option');
- }
+ /*
+ pick up location is only ever one option for uwin
+ */
+ if (node.id() == holdLoc) {
+ var opt = setSelectorVal( selector, index, node.name(), node.id(), null, indent );
+ if(!type.can_have_users()) {
+ opt.disabled = true;
+ addCSSClass(opt, 'disabled_option');
+ }//if
+ }//if
for( var i in node.children() ) {
var child = node.children()[i];
- if(child) holdsBuildOrgSelector(child);
+ if(child) holdsBuildOrgSelector(holdLoc,child);
}
}
@@ -744,8 +797,9 @@
if($('holds_frozen_chkbox').checked) {
hold.frozen('t');
unHideMe($('hold_frozen_thaw_row'));
- thawDate = dojo.date.stamp.toISOString(dijit.byId('holds_frozen_thaw_input').getValue());
+ var thawDate = dijit.byId('holds_frozen_thaw_input').attr('value');
if(thawDate) {
+ thawDate = dojo.date.stamp.toISOString(thawDate);
thawDate = holdsVerifyThawDate(thawDate);
if(thawDate)
hold.thaw_date(thawDate);
More information about the open-ils-commits
mailing list