From: erickson Date: Wed, 21 Nov 2007 18:08:13 +0000 (+0000) Subject: Backporting: X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=1611aa7019da255d2c2cd75e378396ad32ea69b4;p=Evergreen.git Backporting: Hold freeze/thaw OPAC UI Batch hold management OPAC UI (batch delete, etc.) New limit-2-available search filter New sort options dropdown on title results page Advanced search syntax for propogating searches to and from the advanced search page A large set of Dan's XHTML compliance and CSS fixes git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_1_2@8110 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/web/opac/common/js/config.js b/Open-ILS/web/opac/common/js/config.js index 87c6ab639c..e77b3e9370 100644 --- a/Open-ILS/web/opac/common/js/config.js +++ b/Open-ILS/web/opac/common/js/config.js @@ -35,6 +35,7 @@ var PARAM_LANGUAGE = 'la'; var PARAM_TFORM = 'tf'; /* temporary format for title result pages */ var PARAM_RDEPTH = 'rd'; var PARAM_REDIR = 're'; /* true if we have been redirected by IP (we're at a real lib) */ +var PARAM_AVAIL = 'av'; /* limit search results to available items */ /* URL param values (see comments above) */ var TERM; @@ -67,6 +68,7 @@ var SEARCHES; var LANGUAGE; var TFORM; var RDEPTH; +var AVAIL; /* cookie values */ var SBEXTRAS; @@ -80,6 +82,7 @@ var COOKIE_SES = "ses"; var COOKIE_FONT = "fnt"; var COOKIE_SKIN = "skin"; var COOKIE_RIDS = "rids"; /* list of record ids */ +var COOKIE_SEARCH = 'sr'; /* pages */ var MRESULT = "mresult"; @@ -140,6 +143,13 @@ var PREF_DEF_LOCATION = 'opac.default_search_location'; var PREF_DEF_DEPTH = 'opac.default_search_depth'; +/** If enabled, added content attribution links will be + made visible where appropriate. The added content vendor name + and URL are defined in the entities in opac.dtd + */ +var ENABLE_ADDED_CONTENT_ATTRIB_LINKS = false; + + /* container for global variables shared accross pages */ var G = {}; G.user = null; /* global user object */ @@ -263,6 +273,8 @@ config.ids.altcanvas = {}; var SEARCH_MRS = 'open-ils.search:open-ils.search.metabib.multiclass:1'; var SEARCH_RS = 'open-ils.search:open-ils.search.biblio.multiclass:1'; +var SEARCH_MRS_QUERY = 'open-ils.search:open-ils.search.metabib.multiclass.query:1'; +var SEARCH_RS_QUERY = 'open-ils.search:open-ils.search.biblio.multiclass.query:1'; var FETCH_SEARCH_RIDS = "open-ils.search:open-ils.search.biblio.record.class.search:1"; var FETCH_MRMODS = "open-ils.search:open-ils.search.biblio.metarecord.mods_slim.retrieve"; var FETCH_MODS_FROM_COPY = "open-ils.search:open-ils.search.biblio.mods_from_copy"; diff --git a/Open-ILS/web/opac/common/js/opac_utils.js b/Open-ILS/web/opac/common/js/opac_utils.js index 57babc144e..cd0f2a198b 100644 --- a/Open-ILS/web/opac/common/js/opac_utils.js +++ b/Open-ILS/web/opac/common/js/opac_utils.js @@ -153,42 +153,45 @@ function initParams() { LANGUAGE = cgi.param(PARAM_LANGUAGE); TFORM = cgi.param(PARAM_TFORM); RDEPTH = cgi.param(PARAM_RDEPTH); + AVAIL = cgi.param(PARAM_AVAIL); /* set up some sane defaults */ - //if(isNaN(DEPTH)) DEPTH = 0; - if(isNaN(RDEPTH)) RDEPTH = 0; - if(isNaN(OFFSET)) OFFSET = 0; - if(isNaN(COUNT)) COUNT = 10; + //if(isNaN(DEPTH)) DEPTH = 0; + if(isNaN(RDEPTH)) RDEPTH = 0; + if(isNaN(OFFSET)) OFFSET = 0; + if(isNaN(COUNT)) COUNT = 10; if(isNaN(HITCOUNT)) HITCOUNT = 0; if(isNaN(MRID)) MRID = 0; - if(isNaN(RID)) RID = 0; + if(isNaN(RID)) RID = 0; if(isNaN(ORIGLOC)) ORIGLOC = 0; /* so we know it hasn't been set */ if(isNaN(AUTHTIME)) AUTHTIME = 0; - if(ADVTERM==null) ADVTERM = ""; + if(ADVTERM==null) ADVTERM = ""; + if(isNaN(AVAIL)) AVAIL = 0; } function clearSearchParams() { - TERM = null; - STYPE = null; - FORM = null; - OFFSET = 0; - HITCOUNT = 0; - ADVTERM = null; - ADVTYPE = null; - MRID = null; - RID = null; - RTYPE = null; - SORT = null; - SORT_DIR = null; - RLIST = null; - CALLNUM = null; - LITFORM = null; - ITEMFORM = null; - ITEMTYPE = null; - AUDIENCE = null; - SEARCHES = null; - LANGUAGE = null; - RDEPTH = null; + TERM = null; + STYPE = null; + FORM = null; + OFFSET = 0; + HITCOUNT = 0; + ADVTERM = null; + ADVTYPE = null; + MRID = null; + RID = null; + RTYPE = null; + SORT = null; + SORT_DIR = null; + RLIST = null; + CALLNUM = null; + LITFORM = null; + ITEMFORM = null; + ITEMTYPE = null; + AUDIENCE = null; + SEARCHES = null; + LANGUAGE = null; + RDEPTH = null; + AVAIL = null; } @@ -198,6 +201,10 @@ function initCookies() { scaleFonts(font); if(font) FONTSIZE = font; SKIN = cookieManager.read(COOKIE_SKIN); + if(findCurrentPage() == HOME) + cookieManager.remove(COOKIE_SEARCH); + + } /* URL param accessors */ @@ -231,6 +238,7 @@ function getAudience() { return AUDIENCE; } function getSearches() { return SEARCHES; } function getLanguage() { return LANGUAGE; } function getRdepth() { return RDEPTH; } +function getAvail() { return AVAIL; } function findBasePath() { @@ -377,6 +385,8 @@ function buildOPACLink(args, slim, ssl) { string += _appendParam(SORT, PARAM_SORT, args, getSort, string); if(getSortDir() != null) string += _appendParam(SORT_DIR, PARAM_SORT_DIR, args, getSortDir, string); + if(getAvail()) + string += _appendParam(AVAIL, PARAM_AVAIL, args, getAvail, string); return string.replace(/\&$/,'').replace(/\?\&/,"?"); } @@ -702,6 +712,7 @@ function doLogout(noredirect) { cookieManager.remove(COOKIE_RIDS); cookieManager.remove(COOKIE_SES); cookieManager.remove(COOKIE_SKIN); + cookieManager.remove(COOKIE_SEARCH); checkUserSkin("default"); COUNT = 10; diff --git a/Open-ILS/web/opac/common/js/utils.js b/Open-ILS/web/opac/common/js/utils.js index 079ad73d08..19c484c5ce 100644 --- a/Open-ILS/web/opac/common/js/utils.js +++ b/Open-ILS/web/opac/common/js/utils.js @@ -681,4 +681,24 @@ function debugFMObject(obj) { } +function getTableRows(tbody) { + var rows = []; + if(!tbody) return rows; + var children = tbody.childNodes; + if(!children) return rows; + + for(var i = 0; i < children.length; i++) { + var child = children[i]; + if(child.nodeName.match(/^tr$/i)) + rows.push(child); + } + return rows; +} + +function getObjectKeys(obj) { + keys = [] + for(var k in obj) + keys.push(k) + return keys; +} diff --git a/Open-ILS/web/opac/locale/en-US/lang.dtd b/Open-ILS/web/opac/locale/en-US/lang.dtd index 104a90bf70..937546e84f 100644 --- a/Open-ILS/web/opac/locale/en-US/lang.dtd +++ b/Open-ILS/web/opac/locale/en-US/lang.dtd @@ -232,6 +232,8 @@ + + diff --git a/Open-ILS/web/opac/locale/en-US/opac.dtd b/Open-ILS/web/opac/locale/en-US/opac.dtd index f7276b6752..653299be9b 100644 --- a/Open-ILS/web/opac/locale/en-US/opac.dtd +++ b/Open-ILS/web/opac/locale/en-US/opac.dtd @@ -59,6 +59,12 @@ "The password must be at least 7 characters in length, contain at least one letter (a-z/A-Z), and contain at least one number."> + + + + + + @@ -195,7 +201,7 @@ avoid using bookbags all together. Thank you."> ================================================================= --> - + @@ -203,6 +209,24 @@ avoid using bookbags all together. Thank you."> + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Open-ILS/web/opac/skin/default/css/layout.css b/Open-ILS/web/opac/skin/default/css/layout.css index 33cbce6e90..2f170e5a54 100644 --- a/Open-ILS/web/opac/skin/default/css/layout.css +++ b/Open-ILS/web/opac/skin/default/css/layout.css @@ -82,6 +82,7 @@ table { border-collapse: collapse; } #searchbar_table { border-collapse: collapse; } .search_box_container { width: 240px; padding: 3px; }/* border: 1px solid #A0A0A0;' class='color_2'>*/ +#search_box { width: 260px; } /* ---------------------------------------------------------------------- */ @@ -203,6 +204,44 @@ table { border-collapse: collapse; } .copy_more_info { padding-left: 6px; color: #804070; } - .invalid_hold { background: #F0F0D0; } .myopac_summary_table td { padding : 3px; } + +.jacket_attrib { font-size: 7pt; } + +/* block that contains footer links and copyright */ +#copyright_block { + width: 100%; + text-align: center; + vertical-align: bottom; + margin-top: 10px; +} + +/* block that contains the footer links */ +#footer_links { + width: 80%; + text-align: center; + padding: 10px; + margin: auto; +} + +/* span for each link in the footer */ +.footer-link { + margin-left: 10px; + margin-right: 10px; +} + +/* block that contains the copyright text */ +#copyright_text { + margin-top: 4px; +} + +/* block that contains the logo */ +#footer_logo { + text-align: center; + margin: auto; +} + +#opac.result.sort { margin-left: 5px; } + + diff --git a/Open-ILS/web/opac/skin/default/js/adv_global.js b/Open-ILS/web/opac/skin/default/js/adv_global.js index f49d2e4a28..1dd7dd9e85 100644 --- a/Open-ILS/web/opac/skin/default/js/adv_global.js +++ b/Open-ILS/web/opac/skin/default/js/adv_global.js @@ -33,6 +33,50 @@ function advgInit() { var input = $n($('adv_global_trow'), 'term'); input.focus(); setEnterFunc(input, advSubmitGlobal); + + if(getSort() && getSortDir()) { + setSelector($('adv_global_sort_by'), getSort()); + setSelector($('adv_global_sort_dir'), getSortDir()); + if(getSort() != 'rel') + $('adv_global_sort_dir').disabled = false; + } + + if(getAvail()) + $('opac.result.limit2avail').checked = true; + + initSearchBoxes(); +} + +function initSearchBoxes() { + /* loads the compiled search from the search cookie + and sets the widgets accordingly */ + + search = cookieManager.read(COOKIE_SEARCH); + if(!search) return; + _debug("loaded compiled search cookie: " + search); + + search = JSON2js(search); + if(!search) return; + + var types = getObjectKeys(search.searches); + + /* pre-add the needed rows */ + while($('adv_global_tbody').getElementsByTagName('tr').length - 1 < types.length) + advAddGblRow(); + + var rows = $('adv_global_tbody').getElementsByTagName('tr'); + for(var t = 0; t < types.length; t++) { + var row = rows[t]; + setSelector($n(row, 'type'), types[t]); + var term = search.searches[types[t]].term; + + /* if this is a single - search, set the selector to nocontains */ + if(match = term.match(/^-(\w+)$/)) { + term = match[1]; + setSelector($n(row, 'contains'), 'nocontains'); + } + $n(row, 'term').value = term; + } } function advAddGblRow() { @@ -94,6 +138,7 @@ function advSubmitGlobal() { var itemtypes = advGetVisSelectorVals('adv_global_item_type'); var audiences = advGetVisSelectorVals('adv_global_audience'); var languages = getSelectedList($('adv_global_lang')) + ''; + var limit2avail = $('opac.result.limit2avail').checked ? 1 : '' var searches = advBuildSearchBlob(); if(!searches) return; @@ -107,14 +152,15 @@ function advSubmitGlobal() { args[PARAM_LITFORM] = litforms; args[PARAM_AUDIENCE] = audiences; args[PARAM_LANGUAGE] = languages; - args[PARAM_SEARCHES] = js2JSON(searches); /* break these out */ + //args[PARAM_SEARCHES] = js2JSON(searches); /* break these out */ args[PARAM_DEPTH] = depthSelGetDepth(); args[PARAM_LOCATION] = depthSelGetNewLoc(); args[PARAM_SORT] = sortby; args[PARAM_SORT_DIR] = sortdir; args[PARAM_ADVTYPE] = ADVTYPE_MULTI; args[PARAM_STYPE] = ""; - args[PARAM_TERM] = ""; + args[PARAM_TERM] = searches; + args[PARAM_AVAIL] = limit2avail; /* pubdate sorting causes a record (not metarecord) search */ if( sortby == SORT_TYPE_PUBDATE || !$('adv_group_titles').checked ) { @@ -134,7 +180,7 @@ function advSubmitGlobal() { function advBuildSearchBlob() { - var searches; + var searches = ''; var tbody = $('adv_global_tbody'); var rows = tbody.getElementsByTagName('tr'); @@ -150,14 +196,6 @@ function advBuildSearchBlob() { if(!term) continue; var string = ""; - - if(!searches) searches = {}; - - if(searches[stype]) - string = searches[stype].term; - else - searches[stype] = { term : "" }; - switch(contains) { case 'contains' : string += " " + term; @@ -178,10 +216,15 @@ function advBuildSearchBlob() { if(string) { string = string.replace(/'/g,' '); string = string.replace(/\\/g,' '); - searches[stype].term = string; + string = string.replace(/^\s*/,''); + string = string.replace(/\s*$/,''); + //searches[stype].term = string; + if(searches) searches += ' '; + searches += stype + ':'+ string; } } + _debug("created search query " + searches); return searches; } diff --git a/Open-ILS/web/opac/skin/default/js/advanced.js b/Open-ILS/web/opac/skin/default/js/advanced.js index 27e9994d9a..12728c123c 100644 --- a/Open-ILS/web/opac/skin/default/js/advanced.js +++ b/Open-ILS/web/opac/skin/default/js/advanced.js @@ -5,7 +5,6 @@ attachEvt("common", "run", advInit); function advInit() { /* propogate these? */ - clearSearchParams(); depthSelInit(); setEnterFunc( $n( $('advanced.marc.tbody'), 'advanced.marc.value'), advMARCRun ); @@ -34,6 +33,8 @@ function advAddMARC() { function advMARCRun() { + clearSearchParams(); + var div = $('adv_marc_search_sidebar'); var tbodies = div.getElementsByTagName('tbody'); var searches = []; @@ -77,6 +78,7 @@ function advExtractMARC(tbody) { } function advGenericSearch() { + clearSearchParams(); var type = getSelectorVal($('adv_quick_type')); var term = $('adv_quick_text').value; diff --git a/Open-ILS/web/opac/skin/default/js/holds.js b/Open-ILS/web/opac/skin/default/js/holds.js index b803147cdd..e6a1bd6f3f 100644 --- a/Open-ILS/web/opac/skin/default/js/holds.js +++ b/Open-ILS/web/opac/skin/default/js/holds.js @@ -91,12 +91,19 @@ function _holdsUpdateEditHold() { var status = holdArgs.status; var orgsel = $('holds_org_selector'); + var frozenbox = $('holds_frozen_chkbox'); + setSelector(orgsel, hold.pickup_lib()); - if( hold.capture_time() || status > 2 ) + if( hold.capture_time() || status > 2 ) { orgsel.disabled = true; - else + frozenbox.disabled = true; + $('holds_frozen_thaw_input').disabled = true; + + } else { orgsel.disabled = false; + frozenbox.disabled = false; + } $('holds_submit').onclick = holdsEditHold; @@ -117,6 +124,21 @@ function _holdsUpdateEditHold() { } else { $('holds_enable_email').checked = false; } + + /* populate the hold freezing info */ + if(!frozenbox.disabled && isTrue(hold.frozen())) { + frozenbox.checked = true; + unHideMe($('hold_frozen_thaw_row')); + if(hold.thaw_date()) { + $('holds_frozen_thaw_input').value = hold.thaw_date(); + } else { + $('holds_frozen_thaw_input').value = ''; + } + } else { + frozenbox.checked = false; + $('holds_frozen_thaw_input').value = ''; + hideMe($('hold_frozen_thaw_row')); + } } function holdsEditHold() { @@ -673,6 +695,17 @@ function holdsBuildHoldFromWindow() { hold.target(target); hold.hold_type(holdArgs.type); + // see if this hold should be frozen and for how long + if($('holds_frozen_chkbox').checked) { + hold.frozen('t'); + unHideMe($('hold_frozen_thaw_row')); + thawDate = $('holds_frozen_thaw_input').value; + if(thawDate) + hold.thaw_date(thawDate); + else + hold.thaw_date(null); + } + //check for alternate hold formats var fstring = holdsSetSelectedFormats(); if(fstring) { diff --git a/Open-ILS/web/opac/skin/default/js/mresult.js b/Open-ILS/web/opac/skin/default/js/mresult.js index ca15d60cd0..aaad90d93d 100644 --- a/Open-ILS/web/opac/skin/default/js/mresult.js +++ b/Open-ILS/web/opac/skin/default/js/mresult.js @@ -37,11 +37,11 @@ function mresultDoSearch() { } function _mresultCollectIds() { - resultCollectSearchIds(true, SEARCH_MRS, mresultHandleMRIds ); + resultCollectSearchIds(true, SEARCH_MRS_QUERY, mresultHandleMRIds ); } function mresultCollectAdvIds() { - resultCollectSearchIds(false, SEARCH_MRS, mresultHandleMRIds ); + resultCollectSearchIds(false, SEARCH_MRS_QUERY, mresultHandleMRIds ); } @@ -51,6 +51,7 @@ function mresultHandleMRIds(r) { if( getOffset() == 0 ) HITCOUNT = res.count; runEvt('result', 'hitCountReceived'); } + cookieManager.write(COOKIE_SEARCH, js2JSON(res.compiled_search), -1); runEvt('result', 'idsReceived', res.ids); } diff --git a/Open-ILS/web/opac/skin/default/js/myopac.js b/Open-ILS/web/opac/skin/default/js/myopac.js index bfe6a24ad2..fc8d7cf776 100644 --- a/Open-ILS/web/opac/skin/default/js/myopac.js +++ b/Open-ILS/web/opac/skin/default/js/myopac.js @@ -6,6 +6,7 @@ attachEvt('common','locationUpdated', myopacReload ); var fleshedUser = null; var fleshedContainers = {}; var holdCache = {}; +var holdStatusCache = {}; function clearNodes( node, keepArray ) { @@ -294,14 +295,18 @@ function myOPACShowHolds() { var req = new Request(FETCH_HOLDS, G.user.session, G.user.id()); req.callback(myOPACDrawHolds); req.send(); + $('myopac_holds_actions_none').selected = true; } var holdsTemplateRowOrig; var holdsTemplateRow; +var myopacForceHoldsRedraw = false; function myOPACDrawHolds(r) { var tbody = $("myopac_holds_tbody"); - if(holdsTemplateRow) return; + if(holdsTemplateRow && !myopacForceHoldsRedraw) return; + myopacForceHoldsRedraw = false; + if(holdsTemplateRowOrig) { holdsTemplateRow = holdsTemplateRowOrig; removeChildren(tbody); @@ -331,12 +336,23 @@ function myOPACDrawHolds(r) { tbody.appendChild(row); - $n(row,'myopac_holds_cancel_link').setAttribute( - 'href','javascript:myOPACCancelHold("'+ h.id()+'");'); - $n(row,'myopac_holds_edit_link').setAttribute( 'href','javascript:myOPACEditHold("'+ h.id()+'");'); + if(isTrue(h.frozen())) { + hideMe($n(row, 'myopac_hold_unfrozen_true')) + unHideMe($n(row, 'myopac_hold_unfrozen_false')) + if(h.thaw_date()) { + var d = Date.parseIso8601(h.thaw_date()); + $n(row, 'myopac_holds_frozen_until').appendChild(text(d.iso8601Format('YMD'))); + } + } else { + unHideMe($n(row, 'myopac_hold_unfrozen_true')) + hideMe($n(row, 'myopac_hold_unfrozen_false')) + } + + $n(row, 'myopac_holds_selected_chkbx').checked = false; + unHideMe(row); myOPACDrawHoldTitle(h); @@ -359,15 +375,6 @@ function myOPACEditHold(holdid) { } -function myOPACCancelHold(holdid) { - if( confirm($('myopac_holds_cancel_verify').innerHTML) ) { - holdsCancel(holdid); - holdsTemplateRow = null - myOPACShowHolds(); - } -} - - function myOPACDrawHoldStatus(hold) { var req = new Request(FETCH_HOLD_STATUS, G.user.session, hold.id() ); req.callback(myOShowHoldStatus); @@ -379,6 +386,8 @@ function myOShowHoldStatus(r) { var hold = r.hold; var status = r.getResultObject(); + holdStatusCache[hold.id()] = status; + var row = $("myopac_holds_row_" + r.hold.id()); if( status < 3 ) @@ -443,7 +452,6 @@ function _myOPACFleshHoldTitle(hold, holdObjects) { if(copy) $n(row, 'copy').appendChild(text(copy.barcode())); } - /*var form = $("myopac_holds_form_" + hold.id() + '_' + record.doc_id());*/ var form = $("myopac_holds_form_" + hold.id()); if(form) { @@ -1285,5 +1293,148 @@ function myHandleRenewResponse(r) { myOPACShowChecked(); } +/** ---- batch hold processing ------------ */ + + +/* myopac_holds_checkbx */ +function myopacSelectAllHolds() { + var rows = getTableRows($("myopac_holds_tbody")); + for(var i = 0; i < rows.length; i++) { + cb = $n(rows[i], 'myopac_holds_selected_chkbx'); + if(cb) cb.checked = true; + } +} + +function myopacSelectNoneHolds() { + var rows = getTableRows($("myopac_holds_tbody")); + for(var i = 0; i < rows.length; i++) { + cb = $n(rows[i], 'myopac_holds_selected_chkbx'); + if(cb) cb.checked = false; + } +} +function myopacSelectedHoldsRows() { + var r = []; + var rows = getTableRows($("myopac_holds_tbody")); + for(var i = 0; i < rows.length; i++) { + cb = $n(rows[i], 'myopac_holds_selected_chkbx'); + if(cb && cb.checked) + r.push(rows[i]); + } + return r; +} + +var myopacProcessedHolds = 0; +var myopacTotalHoldsToProcess = 0; +function myopacDoHoldAction() { + + var selectedRows = myopacSelectedHoldsRows(); + action = getSelectorVal($('myopac_holds_actions')); + $('myopac_holds_actions_none').selected = true; + if(selectedRows.length == 0) return; + + myopacProcessedHolds = 0; + + if(!confirmId('myopac.holds.'+action+'.confirm')) return; + + myopacSelectNoneHolds(); /* clear the selection */ + + + /* first, let's collect the holds that actually need processing and + collect the full process count while we're at it */ + var holds = []; + for(var i = 0; i < selectedRows.length; i++) { + hold = holdCache[myopacHoldIDFromRow(selectedRows[i])]; + var status = holdStatusCache[hold.id()]; + switch(action) { + case 'cancel': + holds.push(hold); + break; + case 'thaw_date': + case 'thaw': + if(isTrue(hold.frozen())) + holds.push(hold); + break; + case 'freeze': + if(!isTrue(hold.frozen()) && status < 3) + holds.push(hold); + break; + } + } + myopacTotalHoldsToProcess = holds.length; + if(myopacTotalHoldsToProcess == 0) return; + myopacShowHoldProcessing(); + + var thawDate = null; + var thawDateSet = false; + + /* now we process them */ + for(var i = 0; i < holds.length; i++) { + + hold = holds[i]; + + var req; + switch(action) { + + case 'cancel': + req = new Request(CANCEL_HOLD, G.user.session, hold.id()); + break; + + case 'thaw': + hold.frozen('f'); + hold.thaw_date(null); + req = new Request(UPDATE_HOLD, G.user.session, hold); + break; + + case 'thaw_date': + if(!thawDateSet) + thawDate = prompt($('myopac.holds.freeze.select_thaw').innerHTML) || null; + thawDateSet = true; + hold.thaw_date(thawDate); + req = new Request(UPDATE_HOLD, G.user.session, hold); + break; + + + case 'freeze': + if(!thawDateSet) + thawDate = prompt($('myopac.holds.freeze.select_thaw').innerHTML); + thawDateSet = true; + hold.frozen('t'); + if(thawDate) + hold.thaw_date(thawDate); + req = new Request(UPDATE_HOLD, G.user.session, hold); + break; + + } + + req.callback(myopacBatchHoldCallback); + req.send(); + req = null; + } +} + +function myopacHoldIDFromRow(row) { + return row.id.replace(/.*_(\d+)$/, '$1'); +} + +function myopacShowHoldProcessing() { + unHideMe($('myopac_holds_processing')); + hideMe($('myopac_holds_main_table')); +} + +function myopacHideHoldProcessing() { + hideMe($('myopac_holds_processing')); + unHideMe($('myopac_holds_main_table')); +} + +function myopacBatchHoldCallback(r) { + r.getResultObject(); + if(++myopacProcessedHolds >= myopacTotalHoldsToProcess) { + myopacHideHoldProcessing(); + holdCache = {}; + holdStatusCache = {}; + myopacForceHoldsRedraw = true; + myOPACShowHolds(); + } +} diff --git a/Open-ILS/web/opac/skin/default/js/rdetail.js b/Open-ILS/web/opac/skin/default/js/rdetail.js index a2c2d0651c..76aee75813 100644 --- a/Open-ILS/web/opac/skin/default/js/rdetail.js +++ b/Open-ILS/web/opac/skin/default/js/rdetail.js @@ -184,10 +184,26 @@ function _rdetailDraw(r) { G.ui.rdetail.pubdate.appendChild(text(record.pubdate())); G.ui.rdetail.publisher.appendChild(text(record.publisher())); $('rdetail_physical_desc').appendChild(text(record.physical_description())); - G.ui.rdetail.tor.appendChild(text(record.types_of_resource()[0])); - setResourcePic( G.ui.rdetail.tor_pic, record.types_of_resource()[0]); + r = record.types_of_resource(); + if(r) { + G.ui.rdetail.tor.appendChild(text(r[0])); + setResourcePic( G.ui.rdetail.tor_pic, r[0]); + } G.ui.rdetail.abstr.appendChild(text(record.synopsis())); + try{ + if(record.isbn()) { + if(ENABLE_ADDED_CONTENT_ATTRIB_LINKS) { + unHideMe($('rdetail.jacket_attrib_div')); + var href = $('rdetail.jacket_attrib_link').getAttribute('href') +cleanISBN(record.isbn()); + $('rdetail.jacket_attrib_link').setAttribute('href', href); + } + } else { + hideMe($("rdetail.jacket_attrib_div")); + hideMe($("rdetail_img_link")); + } + } catch(E) {} + // see if the record has any external links var links = record.online_loc(); @@ -203,7 +219,6 @@ function _rdetailDraw(r) { } - $('rdetail_place_hold').setAttribute( 'href','javascript:holdsDrawEditor({record:"'+record.doc_id()+'",type:"T"});'); diff --git a/Open-ILS/web/opac/skin/default/js/result_common.js b/Open-ILS/web/opac/skin/default/js/result_common.js index 35ba9110b0..3df7c48bf4 100644 --- a/Open-ILS/web/opac/skin/default/js/result_common.js +++ b/Open-ILS/web/opac/skin/default/js/result_common.js @@ -42,21 +42,11 @@ function resultCollectSearchIds( type, method, handler ) { var args = {}; if( type ) { - args.searches = {}; - args.searches[getStype()] = {}; - var term = getTerm(); - if( term ) { - term = term.replace(/'/g,' '); - term = term.replace(/\\/g,' '); - args.searches[getStype()].term = term; - } - var form = parseForm(getForm()); item_type = form.item_type; item_form = form.item_form; } else { - args.searches = JSON2js(getSearches()); item_type = (getItemType()) ? getItemType().split(/,/) : null; item_form = (getItemForm()) ? getItemForm().split(/,/) : null; } @@ -73,21 +63,23 @@ function resultCollectSearchIds( type, method, handler ) { args.limit = limit; args.offset = getOffset(); args.visibility_limit = 3000; + args.default_class = getStype(); if(sort) args.sort = sort; if(sortdir) args.sort_dir = sortdir; if(item_type) args.item_type = item_type; if(item_form) args.item_form = item_form; + if(getAvail()) args.available = 1; if(getAudience()) args.audience = getAudience().split(/,/); if(getLitForm()) args.lit_form = getLitForm().split(/,/); if(getLanguage()) args.language = getLanguage().split(/,/); - //alert(js2JSON(args)); + _debug('Search args: ' + js2JSON(args)); + _debug('Raw query: ' + getTerm()); - _debug('SEARCH: \n' + js2JSON(args) + '\n\n'); - var req = new Request(method, args, 1); + var req = new Request(method, args, getTerm(), 1); req.callback(handler); req.send(); } @@ -183,6 +175,8 @@ function resultLowHits() { sreq.callback(resultSuggestSpelling); sreq.send(); + /* XXX patch to use the search results */ + var words = getTerm().split(' '); var word; while( word = words.shift() ) { diff --git a/Open-ILS/web/opac/skin/default/js/rresult.js b/Open-ILS/web/opac/skin/default/js/rresult.js index c314dfd33b..0b11da9de5 100644 --- a/Open-ILS/web/opac/skin/default/js/rresult.js +++ b/Open-ILS/web/opac/skin/default/js/rresult.js @@ -27,35 +27,9 @@ function rresultDoSearch() { rresultCollectIds(); } -function rresultCachedSearch() { - - /* XXX */ - return false; - - /* - if(!getOffset()) { - cookieManager.remove(COOKIE_SRIDS); - return false; - } - - var data = JSON2js(cookieManager.read(COOKIE_SRIDS)); - //alert('cached count = ' + data.count); - - if( data && data.ids[getOffset()] != null && - data.ids[resultFinalPageIndex()] != null ) { - _rresultHandleIds( data.ids, data.count ); - return true; - } - - return false; - */ -} - function rresultCollectIds() { var ids; - if(rresultCachedSearch()) return; - switch(getRtype()) { case RTYPE_COOKIE: @@ -278,7 +252,8 @@ function rresultCollectRecords(ids) { runEvt("result", "preCollectRecords"); var x = 0; - var base = getOffset(); + //var base = getOffset(); + var base = 0; if( rresultIsPaged ) base = 0; for( var i = base; i!= getDisplayCount() + base; i++ ) { @@ -308,12 +283,12 @@ function rresultLaunchDrawn(id, node) { function rresultDoRecordSearch() { rresultIsPaged = true; - resultCollectSearchIds(true, SEARCH_RS, rresultFilterSearchResults ); + resultCollectSearchIds(true, SEARCH_RS_QUERY, rresultFilterSearchResults ); } function rresultDoRecordMultiSearch() { rresultIsPaged = true; - resultCollectSearchIds(false, SEARCH_RS, rresultFilterSearchResults ); + resultCollectSearchIds(false, SEARCH_RS_QUERY, rresultFilterSearchResults ); } @@ -324,6 +299,8 @@ function rresultFilterSearchResults(r) { for( var i = 0; i != result.ids.length; i++ ) ids.push(result.ids[i][0]); } + + cookieManager.write(COOKIE_SEARCH, js2JSON(result.compiled_search), -1); _rresultHandleIds( ids, result.count ); } diff --git a/Open-ILS/web/opac/skin/default/js/search_bar.js b/Open-ILS/web/opac/skin/default/js/search_bar.js index 335720dfc4..0369744ec5 100644 --- a/Open-ILS/web/opac/skin/default/js/search_bar.js +++ b/Open-ILS/web/opac/skin/default/js/search_bar.js @@ -41,6 +41,11 @@ function searchBarInit() { attachEvt('common','depthChanged', searchBarSubmit); } + if( (limit = $('opac.result.limit2avail')) ) { + if(getAvail()) limit.checked = true; + if(getSort() && getSortDir()) + setSelector($('opac.result.sort'), getSort()+'.'+getSortDir()); + } } function searchBarSubmit() { @@ -53,8 +58,6 @@ function searchBarSubmit() { var d = (newSearchDepth != null) ? newSearchDepth : depthSelGetDepth(); if(isNaN(d)) d = 0; - //text = text.replace(/'/,''); - var args = {}; if(SHOW_MR_DEFAULT) { @@ -70,6 +73,14 @@ function searchBarSubmit() { args[PARAM_DEPTH] = d; args[PARAM_FORM] = _fs.options[_fs.selectedIndex].value; + if($('opac.result.limit2avail')) { + args[PARAM_AVAIL] = ($('opac.result.limit2avail').checked) ? 1 : ''; + if( (val = getSelectorVal($('opac.result.sort'))) ) { + args[PARAM_SORT] = val.split('.')[0] + args[PARAM_SORT_DIR] = val.split('.')[1] + } + } + goTo(buildOPACLink(args)); } diff --git a/Open-ILS/web/opac/skin/default/xml/advanced/adv_global_row.xml b/Open-ILS/web/opac/skin/default/xml/advanced/adv_global_row.xml index 4a2baac87f..f5c5ca7dd9 100644 --- a/Open-ILS/web/opac/skin/default/xml/advanced/adv_global_row.xml +++ b/Open-ILS/web/opac/skin/default/xml/advanced/adv_global_row.xml @@ -21,7 +21,7 @@ - + +  (&opac.holds.freeze.thaw_date.format;) + + + + + +
@@ -143,7 +193,7 @@ - diff --git a/Open-ILS/web/opac/skin/default/xml/common/js_common.xml b/Open-ILS/web/opac/skin/default/xml/common/js_common.xml index 8385e453ae..3c5ed220b1 100644 --- a/Open-ILS/web/opac/skin/default/xml/common/js_common.xml +++ b/Open-ILS/web/opac/skin/default/xml/common/js_common.xml @@ -1,26 +1,23 @@ -
- - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - -
- - diff --git a/Open-ILS/web/opac/skin/default/xml/common/libselect.xml b/Open-ILS/web/opac/skin/default/xml/common/libselect.xml index 8935d327d3..45a7da780c 100644 --- a/Open-ILS/web/opac/skin/default/xml/common/libselect.xml +++ b/Open-ILS/web/opac/skin/default/xml/common/libselect.xml @@ -1,5 +1,5 @@ - + &library.select; diff --git a/Open-ILS/web/opac/skin/default/xml/common/login.xml b/Open-ILS/web/opac/skin/default/xml/common/login.xml index 197166f944..81720896ff 100644 --- a/Open-ILS/web/opac/skin/default/xml/common/login.xml +++ b/Open-ILS/web/opac/skin/default/xml/common/login.xml @@ -1,7 +1,7 @@
- - + +
diff --git a/Open-ILS/web/opac/skin/default/xml/common/searchbar.xml b/Open-ILS/web/opac/skin/default/xml/common/searchbar.xml index beb83218ec..505f6ab32b 100644 --- a/Open-ILS/web/opac/skin/default/xml/common/searchbar.xml +++ b/Open-ILS/web/opac/skin/default/xml/common/searchbar.xml @@ -4,7 +4,7 @@ diff --git a/Open-ILS/web/opac/skin/default/xml/common/sidebar.xml b/Open-ILS/web/opac/skin/default/xml/common/sidebar.xml index 6e39a17993..cbdc677e1f 100644 --- a/Open-ILS/web/opac/skin/default/xml/common/sidebar.xml +++ b/Open-ILS/web/opac/skin/default/xml/common/sidebar.xml @@ -57,7 +57,7 @@