var LOGOUT_WARNING_TIME = 30; /* "head up" for session timeout */
/* user preferences */
-var PREF_HITS_PER = 'opac.hits_per_page';
-var PREF_BOOKBAG = 'opac.bookbag_enabled';
-var PREF_DEF_FONT = 'opac.default_font';
+var PREF_HITS_PER = 'opac.hits_per_page';
+//var PREF_BOOKBAG = 'opac.bookbag_enabled';
+var PREF_DEF_FONT = 'opac.default_font';
+var PREF_HOLD_NOTIFY = 'opac.hold_notify';
/* container for global variables shared accross pages */
function grabUser(ses, force) {
if(!ses && isXUL()) ses = xulG['authtoken'];
- if(!ses) ses = cookieManager.read(COOKIE_SES);
+
+ if(!ses) {
+ ses = cookieManager.read(COOKIE_SES);
+ /* https cookies don't show up in http servers.. */
+ }
+
if(!ses) return false;
if(!force)
G.user = user;
G.user.fleshed = false;
G.user.session = ses;
- cookieManager.write(COOKIE_SES, ses, '+1y');
+ cookieManager.write(COOKIE_SES, ses, '+1d');
grabUserPrefs();
if(G.user.prefs['opac.hits_per_page'])
setFontSize(G.user.prefs[PREF_DEF_FONT]);
var at = getAuthtime();
- if(isXUL()) at = xulG['authtime'];
+ //if(isXUL()) at = xulG['authtime'];
- if(at) new AuthTimer(at).run();
+ if(at && !isXUL()) new AuthTimer(at).run();
return G.user;
}
#loading_div { width: 100%;}
+
+
+/* default to image size to avoid image stretching */
+/*
.logo { height: 65px; width: 180px; }
+*/
+
+
+
/*
.org_tree { height: 500px; padding-left: 2px; padding-right: 2px; }
*/
var holdRequestor
var holdEmail;
var holdPhone;
+var holdEditHold;
+var holdEditCallback;
function holdsHandleStaff() {
holdsDrawWindow( currentHoldRecord, null );
}
-function holdsDrawWindow(recid, type) {
+function holdsDrawWindow(recid, type, edithold, done_callback) {
if(recid == null) {
recid = currentHoldRecord;
if(recid == null) return;
}
currentHoldRecord = recid;
+ holdEditHold = edithold;
+ holdEditCallback = done_callback;
if(isXUL() && holdRecipient == null ) {
holdsHandleStaff();
swapCanvas($('check_holds_box'));
- setTimeout( function() { holdsCheckPossibility(recid, type); }, 10 );
+
+ if(!edithold) {
+ setTimeout( function() { holdsCheckPossibility(recid, type); }, 10 );
+
+ } else {
+ _holdsDrawWindow(recid, type);
+ _holdsUpdateEditHold(edithold);
+ }
+}
+
+function _holdsUpdateEditHold(hold) {
+
+ if( hold.capture_time() )
+ $('holds_org_selector').disabled = true;
+ else
+ setSelector($('holds_org_selector'), hold.pickup_lib());
+
+ $('holds_submit').onclick = holdsEditHold;
+
+
+ if(hold.phone_notify()) {
+ $('holds_enable_phone').checked = true;
+ $('holds_phone').value = hold.phone_notify();
+
+ } else {
+ $('holds_phone').disabled = true;
+ $('holds_enable_phone').checked = false;
+ }
+
+ if(hold.email_notify()) {
+ $('holds_enable_email').checked = true;
+
+ } else {
+ $('holds_enable_email').checked = false;
+ }
}
+function holdsEditHold() {
+ var hold = holdsBuildHoldFromWindow();
+ hold.id( holdEditHold.id() );
+ holdsUpdate(hold);
+ showCanvas();
+ if(holdEditCallback) holdEditCallback(hold);
+}
+
+
function _holdsDrawWindow(recid, type) {
swapCanvas($('holds_box'));
$('holds_format').appendChild(text(' '));
}
+
$('holds_phone').value = holdRecipient.day_phone();
appendClear( $('holds_email'), text(holdRecipient.email()));
- $('holds_cancel').onclick = showCanvas;
- $('holds_submit').onclick = holdsPlaceHold;
+ var pref = G.user.prefs[PREF_HOLD_NOTIFY];
+
+ if(pref) {
+ if( ! pref.match(/email/i) )
+ $('holds_enable_email').checked = false;
+
+ if( ! pref.match(/phone/i) ) {
+ $('holds_phone').disabled = true;
+ $('holds_enable_phone').checked = false;
+ }
+ }
+
+ $('holds_cancel').onclick = showCanvas;
+ $('holds_submit').onclick = function(){holdsPlaceHold(holdsBuildHoldFromWindow())};
appendClear($('holds_physical_desc'), text(rec.physical_description()));
- if(hold.hold_type() == 'M') hideMe($('hold_physical_desc_row'));
+ if(type == 'M') hideMe($('hold_physical_desc_row'));
}
}
}
-function holdsPlaceHold() {
+function holdsBuildHoldFromWindow() {
var org = $('holds_org_selector').options[
$('holds_org_selector').selectedIndex].value;
if( $('holds_enable_phone').checked ) {
var phone = $('holds_phone').value;
if( !phone.match(REGEX_PHONE) ) {
- alert($('holds_bad_phone').textContent);
+ alert($('holds_bad_phone').innerHTML);
return;
}
hold.phone_notify(phone);
} else {
- hold.phone_notify(null);
+ hold.phone_notify("");
}
if( $('holds_enable_email').checked )
hold.email_notify(0);
-
hold.pickup_lib(org);
hold.request_lib(org);
hold.requestor(holdRequestor.id());
hold.usr(holdRecipient.id());
hold.hold_type('T');
hold.target(currentHoldRecord);
+ return hold;
+}
+function holdsPlaceHold(hold) {
+
var req = new Request( CREATE_HOLD, holdRequestor.session, hold );
req.send(true);
var res = req.result();
return req.result();
}
+function holdsUpdate(hold, user) {
+ if(!user) user = G.user;
+ var req = new Request(UPDATE_HOLD, user.session, hold);
+ req.send(true);
+ var x = req.result(); /* cause an exception if there is one */
+}
+
+
+
var orglink = $n(row, "myopac_holds_location");
orglink.appendChild(text(findOrgUnit(h.pickup_lib()).name()));
- orglink.setAttribute('href', 'javascript:myOPACChangeHoldPickupLib('+h.id()+');');
- if(h.email_notify())
- $n(row, "myopac_holds_email_link").checked = true;
- else
- $n(row, "myopac_holds_email_link").checked = false;
-
- var plink = $n(row, "myopac_holds_phone_link");
-
- if( h.phone_notify() ) {
- plink.appendChild(text(h.phone_notify()));
- $n(row, 'myopac_holds_enable_phone').checked = true;
- } else {
- $n(row, 'myopac_holds_enable_phone').checked = false;
- }
-
- plink.setAttribute('href', 'javascript:myOPACChangeHoldPhone('+h.id()+');');
tbody.appendChild(row);
$n(row,'myopac_holds_cancel_link').setAttribute(
'href','javascript:myOPACCancelHold("'+ h.id()+'");');
- unHideMe(row);
-
- myOPACDrawHoldTitle(h);
- }
-}
-var holdsOrgRowTemplate;
-function myOPACChangeHoldPickupLib(holdid) {
- var hold = holdCache[holdid];
- var row = $('myopac_holds_row_' + holdid + '_' + hold.target());
- if(!holdsOrgRowTemplate)
- holdsOrgRowTemplate = $('myopac_holds_org_row').cloneNode(true);
- var orgrow = holdsOrgRowTemplate;
- var tbody = row.parentNode;
- if( row.nextSibling ) tbody.insertBefore(orgrow, row.nextSibling);
- else tbody.appendChild(orgrow);
- var selector = $n(orgrow, 'myopac_holds_org_selector');
- buildOrgSel( selector, globalOrgTree, 0 );
- setSelector( selector, hold.pickup_lib() );
-
- for( var i = 0; i != selector.options.length; i++ ) {
- var ou = findOrgUnit(selector.options[i].value);
- var t = findOrgType(ou.ou_type());
- if(!t.can_have_vols()) selector.options[i].disabled = true;
- }
-
- unHideMe(orgrow);
-
- $n(orgrow, 'myopac_hold_org_update_submit').onclick =
- function(){myOPACUpdateHoldPickupLib(tbody, orgrow, hold);}
- $n(orgrow, 'myopac_hold_org_update_cancel').onclick =
- function(){tbody.removeChild(orgrow);}
-}
+ $n(row,'myopac_holds_edit_link').setAttribute(
+ 'href','javascript:myOPACEditHold("'+ h.id()+'");');
-function myOPACUpdateHoldPickupLib( tbody, orgrow, hold ) {
+ unHideMe(row);
- if( hold.capture_time() ) {
- alert($('myopac_cannot_change_pickup').textContent);
- return;
+ myOPACDrawHoldTitle(h);
}
-
- var org = getSelectorVal($n(orgrow, 'myopac_holds_org_selector'));
- hold.pickup_lib(org);
- tbody.removeChild(orgrow);
- myOPACUpdateHold(hold);
}
-
-function myOPACUpdateHold(hold) {
- var req = new Request(UPDATE_HOLD, G.user.session, hold);
- req.send(true);
- var x = req.result();
- holdsTemplateRow = null
- myOPACShowHolds();
-}
-
-
-function myOPACChangeHoldPhone(holdid) {
+function myOPACEditHold(holdid) {
var hold = holdCache[holdid];
- var phone;
-
- var origphone = hold.phone_notify();
- if(!origphone) origphone = G.user.day_phone();
-
- phone = prompt($('myopac_hold_phone_change').innerHTML, origphone);
- if(!phone) return;
- if( phone == hold.phone_notify() ) return;
- if( !phone.match(REGEX_PHONE) ) {
- alert($('myopac_bad_phone').textContent);
- myOPACChangeHoldPhone(holdid);
- return;
- }
-
- hold.phone_notify(phone);
- myOPACUpdateHold(hold);
-}
-
-
-function myopacChangeEmailNotify(node) {
- var id = node.parentNode.parentNode.id.replace(/myopac_holds_row_/,"").replace(/_\d+$/,"");
- var hold = holdCache[id];
-
- if(!confirm($('myopac_hold_email_verify').innerHTML)) {
- if( hold.email_notify() ) node.checked = true;
- else node.checked = false;
- return;
- }
-
- if( hold.email_notify() ) {
- hold.email_notify(0);
- node.checked = false;
- } else {
- hold.email_notify(1);
- node.checked = true;
- }
-
- myOPACUpdateHold(hold);
-}
-
-function myopacChangePhoneNotify(node) {
- var id = node.parentNode.parentNode.id.replace(/myopac_holds_row_/,"").replace(/_\d+$/,"");
- var hold = holdCache[id];
-
- if(!node.checked) {
- if(!confirm($('myopac_hold_phone_verify').innerHTML)) {
- node.checked = true;
- return;
+ holdsDrawWindow(hold.target(), hold.hold_type(), hold,
+ function(){
+ holdsTemplateRow = null;
+ myOPACShowHolds();
}
- }
-
- if( hold.phone_notify() ) hold.phone_notify("");
- else myOPACChangeHoldPhone(id);
-
- myOPACUpdateHold(hold);
+ );
}
+
function myOPACCancelHold(holdid) {
if( confirm($('myopac_holds_cancel_verify').innerHTML) ) {
holdsCancel(holdid);
function myOPACSavePrefs() {
G.user.prefs[PREF_HITS_PER] = getSelectorVal($('prefs_hits_per'));
G.user.prefs[PREF_DEF_FONT] = getSelectorVal($('prefs_def_font'));
+ G.user.prefs[PREF_HOLD_NOTIFY] = getSelectorVal($('prefs_hold_notify'));
if(commitUserPrefs())
alert($('prefs_update_success').innerHTML);
else alert($('prefs_update_failure').innerHTML);
setSelector($('prefs_def_font'), font);
}
+function myOPACShowHoldNotify() {
+ var pref = G.user.prefs[PREF_HOLD_NOTIFY];
+
+ if(pref) {
+ if(pref.match(/email/i) && pref.match(/phone/i)) {
+ setSelector($('prefs_hold_notify'), 'phone:email');
+ } else if( pref.match(/email/i) ) {
+ setSelector($('prefs_hold_notify'), 'email');
+ } else if( pref.match(/phone/i) ) {
+ setSelector($('prefs_hold_notify'), 'phone');
+ }
+
+ } else {
+ setSelector($('prefs_hold_notify'), 'phone:email');
+ }
+}
+
function myOPACShowPrefs() {
grabUserPrefs();
myOPACShowHitsPer();
myOPACShowDefFont();
+ myOPACShowHoldNotify();
hideMe($('myopac_prefs_loading'));
}
if( cont.pub() ) {
unHideMe($n(row, 'myopac_bb_published_yes'));
var link = $n(row, 'myopac_bb_published_view');
+ /*
link.setAttribute('href', buildExtrasLink( 'bbags.xml?bb='+cont.id(), false));
+ */
+ link.setAttribute('href', buildExtrasLink( 'feed/bookbag/html/'+cont.id(), false));
link.setAttribute('target', '_blank' );
unHideMe(link);
}
nextContainerIndex = index;
- if(!found) insertSelectorVal( selector, 3, "name", "value", 1 );
+ if(!found) insertSelectorVal( selector, index, "name", "value", 1 );
}
var _actions = {};
<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'/>
+ <span>You are now browsing</span><b style='margin-left: 6px;' id='cn_browse_where'> </b>
</div>
<table class='data_grid bookshelf' width='100%'>
<thead>
<tbody>
<tr>
<td class='holds_cell color_1'
- align='center' colspan='2'>&opac.holds.placeHold;</td>
+ align='center' colspan='2'>Place or Edit a Hold</td>
</tr>
<tr>
<td class='holds_cell'>&opac.holds.recipient;:</td>
<tr>
<td class='holds_cell'>Enable phone notifications for this hold?</td>
<td class='holds_cell'>
- <input type='checkbox' id='holds_enable_phone' checked='checked'/>
+ <input type='checkbox' id='holds_enable_phone' checked='checked'
+ onchange='
+ if (this.checked) $("holds_phone").disabled=false;
+ else $("holds_phone").disabled = true;'/>
</td>
</tr>
</tr>
<tr>
<td class='holds_cell' align='center' colspan='2'>
+ <!--
<button id='holds_submit'>&opac.holds.placeHold;</button>
+ -->
+ <button id='holds_submit'>Update Hold</button>
<span style='padding: 20px;'> </span>
<button id='holds_cancel'>&common.cancel;</button>
</td>
<div id='logo_div'>
<script language='javascript'>config.ids.common.top_logo = "top_left_logo";</script>
- <img src='<!--#echo var="OILS_BASE"-->/images/small_logo.jpg' id='top_left_logo' border='0' class='logo'> </img>
+ <img style='margin-right: 4px;' src='<!--#echo var="OILS_BASE"-->/images/small_logo.jpg' id='top_left_logo' border='0' class='logo'> </img>
</div>
<td width='30%'>Author</td>
<td>Formats</td>
<td>Pickup Location</td>
+ <!--
<td>Enable Email Notification</td>
<td>Enable Phone Notification</td>
<td>Notification Phone Number</td>
- <td>Cancel This Hold</td>
+ -->
+ <td>Edit/Cancel</td>
</tr>
</thead>
<tbody id='myopac_holds_tbody'>
- <tr id='myopac_holds_org_row' class='hide_me' style='padding: 6px; border: 3px solid #E0F0E0;'>
- <td style='padding: 4px;' colspan='10'>
- <select name='myopac_holds_org_selector'> </select>
- <input name='myopac_hold_org_update_submit' type='submit' value='Submit'> </input>
- <input name='myopac_hold_org_update_cancel' type='submit' value='Cancel'> </input>
- </td>
- </tr>
-
<tr id='myopac_holds_none' class='hide_me'>
<td colspan='10'><b>You have no items on hold at this time</b></td>
</tr>
<td name='myopac_holds_formats'> </td>
- <td><a name='myopac_holds_location' class='classic_link'/></td>
+ <td name='myopac_holds_location'></td>
- <td>
- <input type='checkbox' name='myopac_holds_email_link' onclick='myopacChangeEmailNotify(this);'/>
- </td>
-
- <td>
- <input type='checkbox' name='myopac_holds_enable_phone'
- onclick='myopacChangePhoneNotify(this);'/>
- </td>
-
- <td name='myopac_holds_phone' class='classic_link'>
- <a href='javascript:void(0);' name='myopac_holds_phone_link'></a>
- </td>
-
- <td name='myopac_holds_cancel'>
+ <td name='myopac_holds_cancel' style='border-left: 3px solid #E0E0E0; border-right: 3px solid #E0E0E0;'>
+ <a href='javascript:void(0);'
+ name='myopac_holds_edit_link' class='classic_link'>Edit</a>
<a href='javascript:void(0);'
name='myopac_holds_cancel_link' class='classic_link'>Cancel</a>
</td>
</tbody>
</table>
- <div class='hide_me' id='myopac_holds_cancel_verify'>Are you sure you wish to cancel the selected hold?</div>
+ <span class='hide_me' id='myopac_holds_cancel_verify'>
+ If you wish to cancel the selected hold, click OK, otherwise click Cancel.
+ </span>
+ <!--
<span class='hide_me' id='myopac_hold_email_verify'>
Are you sure you wish to the email notification setting for this hold?
</span>
The selected hold is either in transit or has arrived at the pickup location.
The pickup location for this hold cannot be changed.
</span>
+ -->
</div>
</td>
</tr>
+ <!-- FONT size preference -->
<tr>
<td>Default Font Size</td>
<td>
</td>
</tr>
+ <!-- default hold notification type -->
+ <tr>
+ <td>
+ <span>Default Hold Notification Style</span>
+ <a class='classic_link' href='javascript:void(0);'
+ onclick='alert($("myopac_pref_hold_notify_alert").textContent);' >(??)</a>
+ </td>
+ <td>
+ <select id='prefs_hold_notify'>
+ <option value='phone:email' selected='selected'>Use Phone and Email</option>
+ <option value='phone'>Use Phone Only</option>
+ <option value='email'>Use Email Only</option>
+ </select>
+ </td>
+ </tr>
+
+
+ <!-- Save the preferences -->
<tr><td colspan='2'><br/></td></tr>
<tr>
<div class='hide_me' id='prefs_update_success'>Preferences successfully updated</div>
<div class='hide_me' id='prefs_update_failure'>Preferences update failed!</div>
+ <span class='hide_me' id='myopac_pref_hold_notify_alert'>
+ This setting defines how you will be notified of holds that are ready to be picked up from the library.
+ By default, holds will use the notification style you choose here.
+ However, you will still have the option to change individual holds regardless of this setting.
+ </span>
</div>
<span style='padding-right: 7px;' class='hide_me' id='rdetail_more_actions'>
<select id='rdetail_more_actions_selector' style='max-width: 11em;'>
<option value='start'>More Actions...</option>
+ <!--
+ <option value='place_hold'
+ onclick='holdsDrawWindow(record.doc_id())'>Place a hold on this item</option>
+ -->
<option disabled='disabled'>--------------</option>
<option disabled='disabled'>Add to Bookbag</option>
<option disabled='disabled'>--------------</option>