From 6a3692d1efe31744182452ccbbc4f03162abb5c1 Mon Sep 17 00:00:00 2001 From: miker Date: Mon, 20 Sep 2010 19:14:28 +0000 Subject: [PATCH] Backport BibTemplate callback support from trunk git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_2_0@17846 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/web/js/dojo/openils/BibTemplate.js | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/Open-ILS/web/js/dojo/openils/BibTemplate.js b/Open-ILS/web/js/dojo/openils/BibTemplate.js index 5827a6e03e..790d16a60e 100644 --- a/Open-ILS/web/js/dojo/openils/BibTemplate.js +++ b/Open-ILS/web/js/dojo/openils/BibTemplate.js @@ -99,6 +99,16 @@ if(!dojo._hasResource["openils.BibTemplate"]) { var item_limit = parseInt(slot.getAttribute('limit')); var item_offset = parseInt(slot.getAttribute('offset')) || 0; + var pre_render_callbacks = dojo.query( '*[type=opac/call-back+pre-render]', slot ); + var post_render_callbacks = dojo.query( '*[type=opac/call-back+post-render]', slot ); + var pre_query_callbacks = dojo.query( '*[type=opac/call-back+pre-query]', slot ); + var post_query_callbacks = dojo.query( '*[type=opac/call-back+post-query]', slot ); + + // Do pre-query stuff + dojo.forEach(pre_query_callbacks, function (cb) { + try { (new Function( 'BT', 'slotXML', 'slot', unescape(cb.innerHTML) ))(BT,bib,slot) } catch (e) {/*meh*/} + }); + var item_list = dojo.query( slot.getAttribute('query'), bib @@ -107,9 +117,20 @@ if(!dojo._hasResource["openils.BibTemplate"]) { if (item_limit) { if (debug) alert('BibTemplate debug -- item list limit/offset requested: ' + item_limit + '/' + item_offset); if (item_list.length) item_list = BT.subsetNL(item_list, item_offset, item_offset + item_limit); - if (!item_list.length) return; } + // Do post-query stuff, only if there's an item list! + dojo.forEach(post_query_callbacks, function (cb) { + try { (new Function( 'item_list', 'BT', 'slotXML', 'slot', unescape(cb.innerHTML) ))(item_list,BT,bib,slot) } catch (e) {/*meh*/} + }); + + if (!item_list.length) return; + + // Do pre-render stuff + dojo.forEach(pre_render_callbacks, function (cb) { + try { (new Function( 'item_list', 'BT', 'slotXML', 'slot', unescape(cb.innerHTML) ))(item_list,BT,bib,slot) } catch (e) {/*meh*/} + }); + var templated = slot.getAttribute('templated') == 'true'; if (debug) alert('BibTemplate debug -- slot ' + (templated ? 'is' : 'is not') + ' templated'); if (templated) { @@ -147,6 +168,12 @@ if(!dojo._hasResource["openils.BibTemplate"]) { } delete(slot_handler); + + // Do post-render stuff + dojo.forEach(post_render_callbacks, function (cb) { + try { (new Function( 'item_list', 'BT', 'slotXML', 'slot', unescape(cb.innerHTML) ))(item_list,BT,bib,slot) } catch (e) {/*meh*/} + }); + } catch (e) { if (debug) { alert('BibTemplate Error: ' + e + '\n' + dojo.toJson(e)); -- 2.11.0