From c3e39cf81df60b372ce42a94bda822c717fbe5d9 Mon Sep 17 00:00:00 2001 From: Thomas Berezansky Date: Mon, 1 Oct 2012 15:18:19 -0400 Subject: [PATCH] Allow choice of default search pane Some workflows prefer numeric or expert search, so accomodate them. Also, add a "Clear All" button to clear the search prefs. Signed-off-by: Thomas Berezansky Signed-off-by: Ben Shum --- Open-ILS/web/opac/locale/en-US/lang.dtd | 8 ++++ .../staff_client/chrome/content/cat/opac.js | 10 +++++ .../staff_client/chrome/content/main/main.js | 11 ++++- .../chrome/content/main/search_prefs.xul | 43 ++++++++++++++++++- 4 files changed, 70 insertions(+), 2 deletions(-) diff --git a/Open-ILS/web/opac/locale/en-US/lang.dtd b/Open-ILS/web/opac/locale/en-US/lang.dtd index ce9e816bb6..1ef0eb3ce9 100644 --- a/Open-ILS/web/opac/locale/en-US/lang.dtd +++ b/Open-ILS/web/opac/locale/en-US/lang.dtd @@ -3638,6 +3638,14 @@ + + + + + + + + diff --git a/Open-ILS/xul/staff_client/chrome/content/cat/opac.js b/Open-ILS/xul/staff_client/chrome/content/cat/opac.js index 807f2f073a..a59d44f5a1 100644 --- a/Open-ILS/xul/staff_client/chrome/content/cat/opac.js +++ b/Open-ILS/xul/staff_client/chrome/content/cat/opac.js @@ -616,6 +616,16 @@ function set_opac() { } else { content_params.url = xulG.url_prefix( 'browser', secure_opac ); } + if (g.data.adv_pane) { + // For fun, we can have no extra params, extra params with &, or extra params with ;. + if (content_params.url.indexOf('?') < 0) + content_params.url += '?'; + else if (content_params.url.indexOf('&') >= 0) + content_params.url += '&'; + else + content_params.url += ';'; + content_params.url += 'pane=' + g.data.adv_pane; + } browser_frame = bottom_pane.set_iframe( xulG.url_prefix('XUL_BROWSER?name=Catalog'), {}, content_params); /* // Remember to use the REMOTE_BROWSER if we ever try to move this to remote xul again browser_frame = bottom_pane.set_iframe( xulG.url_prefix('XUL_REMOTE_BROWSER?name=Catalog'), {}, content_params); diff --git a/Open-ILS/xul/staff_client/chrome/content/main/main.js b/Open-ILS/xul/staff_client/chrome/content/main/main.js index 53d8b875c8..139828a745 100644 --- a/Open-ILS/xul/staff_client/chrome/content/main/main.js +++ b/Open-ILS/xul/staff_client/chrome/content/main/main.js @@ -378,13 +378,22 @@ function main_init() { G.data.server_unadorned = url; G.data.stash('server_unadorned'); G.data.stash_retrieve(); try { G.data.search_lib = G.pref.getIntPref('open-ils.' + url + '.search_lib'); - G.data.pref_lib = G.pref.getIntPref('open-ils.' + url + '.pref_lib'); } catch(E) { G.data.search_lib = null; + } + try { + G.data.pref_lib = G.pref.getIntPref('open-ils.' + url + '.pref_lib'); + } catch(E) { G.data.pref_lib = null; } + try { + G.data.adv_pane = G.pref.getCharPref('open-ils.' + url + '.adv_pane'); + } catch(E) { + G.data.adv_pane = null; + } G.data.stash('search_lib'); G.data.stash('pref_lib'); + G.data.stash('adv_pane'); if (! url.match( '^(http|https)://' ) ) { url = 'http://' + url; } diff --git a/Open-ILS/xul/staff_client/chrome/content/main/search_prefs.xul b/Open-ILS/xul/staff_client/chrome/content/main/search_prefs.xul index c36c7eb20c..c4bf6f90af 100644 --- a/Open-ILS/xul/staff_client/chrome/content/main/search_prefs.xul +++ b/Open-ILS/xul/staff_client/chrome/content/main/search_prefs.xul @@ -26,26 +26,38 @@ var g = {}; var search_lib_box; var pref_lib_box; + var adv_pane_box; var prefSvc; var data; var saved_message; + var cleared_message; function my_init() { JSAN.use('OpenILS.data'); data = new OpenILS.data(); data.init({'via':'stash'}); search_lib_box = document.getElementById('search_lib'); pref_lib_box = document.getElementById('pref_lib'); + adv_pane_box = document.getElementById('adv_pane'); // NOTE: If this ever deals with custom trees, this is where you likely want to mess with things. add_aou(data.tree.aou, ''); prefSvc = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch).QueryInterface(Components.interfaces.nsIPrefBranch2); saved_message = document.getElementById('saved_message').textContent; + cleared_message = document.getElementById('cleared_message').textContent; if (data.search_lib) { search_lib_box.value = data.search_lib; - pref_lib_box.value = data.pref_lib; } else { search_lib_box.selectedIndex = 0; + } + if (data.pref_lib) { + pref_lib_box.value = data.pref_lib; + } else { pref_lib_box.selectedIndex = 0;; } + if (data.adv_pane) { + adv_pane_box.value = data.adv_pane; + } else { + adv_pane_box.selectedIndex = 0; + } } function add_aou(aou, depth) { search_lib_box.appendItem(depth + aou.name(), aou.id(), ''); @@ -56,16 +68,32 @@ function update_prefs() { prefSvc.setIntPref('open-ils.' + data.server_unadorned + '.search_lib', search_lib_box.value); prefSvc.setIntPref('open-ils.' + data.server_unadorned + '.pref_lib', pref_lib_box.value); + prefSvc.setCharPref('open-ils.' + data.server_unadorned + '.adv_pane', adv_pane_box.value); data.search_lib = search_lib_box.value; data.pref_lib = pref_lib_box.value; + data.adv_pane = adv_pane_box.value; data.stash('search_lib'); data.stash('pref_lib'); + data.stash('adv_pane'); alert(saved_message); } + function clear_prefs() { + prefSvc.clearUserPref('open-ils.' + data.server_unadorned + '.search_lib'); + prefSvc.clearUserPref('open-ils.' + data.server_unadorned + '.pref_lib'); + prefSvc.clearUserPref('open-ils.' + data.server_unadorned + '.adv_pane'); + data.search_lib = null; + data.pref_lib = null; + data.adv_pane = null; + data.stash('search_lib'); + data.stash('pref_lib'); + data.stash('adv_pane'); + alert(cleared_message); + } ]]> + @@ -84,7 +112,20 @@ + + + &staff.search_prefs.adv_pane.description; + + + + + + + +