[open-ils-commits] [GIT] Evergreen ILS branch master updated. 599bcc3b039db43edbf49350cbcde8d52f64880c

Evergreen Git git at git.evergreen-ils.org
Fri Mar 30 14:08:26 EDT 2012


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".

The branch, master has been updated
       via  599bcc3b039db43edbf49350cbcde8d52f64880c (commit)
       via  bf07b80b7d7ccb89e5e4cd79506097d9e0f74fdd (commit)
       via  8873e420306e317639ff413d1954a5ea7c0d1a74 (commit)
       via  5d31958386fc15d591e10d92f13866a1d9f39ef1 (commit)
       via  36961e9f5b3819fd362d4bf3ce53d9a028ecd938 (commit)
       via  15039eb6c71e8edbcc84662eefed18be6d7afde1 (commit)
      from  4a1cf10753dde847ace2365cf4f7982ff6238a8b (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 599bcc3b039db43edbf49350cbcde8d52f64880c
Author: Thomas Berezansky <tsbere at mvlc.org>
Date:   Fri Mar 30 14:07:03 2012 -0400

    Stamping default pickup library upgrade script
    
    Signed-off-by: Thomas Berezansky <tsbere at mvlc.org>

diff --git a/Open-ILS/src/sql/Pg/002.schema.config.sql b/Open-ILS/src/sql/Pg/002.schema.config.sql
index ce488be..1c62469 100644
--- a/Open-ILS/src/sql/Pg/002.schema.config.sql
+++ b/Open-ILS/src/sql/Pg/002.schema.config.sql
@@ -86,7 +86,7 @@ CREATE TRIGGER no_overlapping_deps
     BEFORE INSERT OR UPDATE ON config.db_patch_dependencies
     FOR EACH ROW EXECUTE PROCEDURE evergreen.array_overlap_check ('deprecates');
 
-INSERT INTO config.upgrade_log (version, applied_to) VALUES ('0697', :eg_version); -- tsbere/miker
+INSERT INTO config.upgrade_log (version, applied_to) VALUES ('0698', :eg_version); -- tsbere
 
 CREATE TABLE config.bib_source (
 	id		SERIAL	PRIMARY KEY,
diff --git a/Open-ILS/src/sql/Pg/upgrade/0698.hold_default_pickup.sql b/Open-ILS/src/sql/Pg/upgrade/0698.hold_default_pickup.sql
new file mode 100644
index 0000000..ba8b80d
--- /dev/null
+++ b/Open-ILS/src/sql/Pg/upgrade/0698.hold_default_pickup.sql
@@ -0,0 +1,14 @@
+-- Evergreen DB patch 0698.hold_default_pickup.sql
+--
+-- FIXME: insert description of change, if needed
+--
+BEGIN;
+
+
+-- check whether patch can be applied
+SELECT evergreen.upgrade_deps_block_check('0698', :eg_version);
+
+INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype)
+    VALUES ('opac.default_pickup_location', TRUE, 'Default Hold Pickup Location', 'Default location for holds pickup', 'integer');
+
+COMMIT;
diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.hold_default_pickup.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.hold_default_pickup.sql
deleted file mode 100644
index 67200e8..0000000
--- a/Open-ILS/src/sql/Pg/upgrade/XXXX.hold_default_pickup.sql
+++ /dev/null
@@ -1,2 +0,0 @@
-INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype)
-    VALUES ('opac.default_pickup_location', TRUE, 'Default Hold Pickup Location', 'Default location for holds pickup', 'integer');

commit bf07b80b7d7ccb89e5e4cd79506097d9e0f74fdd
Author: Thomas Berezansky <tsbere at mvlc.org>
Date:   Thu Mar 22 14:26:32 2012 -0400

    Teach loading of settings inside of patron window
    
    By passing through get_barcode_and_settings (and get_barcode, why not).
    
    Once there we can, on load of place hold screens, load the target user's
    preferences instead of having to teach TPac to do so in the background.
    
    Signed-off-by: Thomas Berezansky <tsbere at mvlc.org>
    Signed-off-by: Ben Shum <bshum at biblio.org>

diff --git a/Open-ILS/web/js/ui/default/opac/staff.js b/Open-ILS/web/js/ui/default/opac/staff.js
index e72f77c..09d4e06 100644
--- a/Open-ILS/web/js/ui/default/opac/staff.js
+++ b/Open-ILS/web/js/ui/default/opac/staff.js
@@ -20,13 +20,14 @@ function staff_hold_usr_input_disabler(input) {
     staff_hold_usr_barcode_changed();
 }
 var cur_hold_barcode = undefined;
-function staff_hold_usr_barcode_changed() {
+function staff_hold_usr_barcode_changed(isload) {
     if(typeof xulG != 'undefined' && xulG.get_barcode_and_settings) {
         var barcode = document.getElementById('staff_barcode').value;
         var only_settings = true;
         if(!document.getElementById('hold_usr_is_requestor').checked) {
             barcode = document.getElementById('hold_usr_input').value;
-            only_settings = false;
+            if(!isload)
+                only_settings = false;
             if(barcode && barcode != '' && !document.getElementById('hold_usr_is_requestor_not').checked)
                 document.getElementById('hold_usr_is_requestor_not').checked = 'checked';
         }
@@ -68,6 +69,9 @@ window.onload = function() {
         runEvt('rdetail', 'recordRetrieved', rec[1]); 
         runEvt('rdetail', 'MFHDDrawn');
     }
+    if(location.href.match(/place_hold/)) {
+        staff_hold_usr_barcode_changed(true);
+    }
 }
 
 function rdetail_next_prev_actions(index, count, prev, next, start, end, results) {
diff --git a/Open-ILS/xul/staff_client/server/patron/display.js b/Open-ILS/xul/staff_client/server/patron/display.js
index 7100484..a383082 100644
--- a/Open-ILS/xul/staff_client/server/patron/display.js
+++ b/Open-ILS/xul/staff_client/server/patron/display.js
@@ -496,7 +496,9 @@ patron.display.prototype = {
                                         'url_prefix' : function(url,secure) { return xulG.url_prefix(url,secure); },
                                         'get_new_session' : function(a) { return xulG.get_new_session(a); },
                                         'new_tab' : function(a,b,c) { return xulG.new_tab(a,b,c); },
-                                        'new_patron_tab' : function(a,b) { return xulG.new_patron_tab(a,b); }
+                                        'new_patron_tab' : function(a,b) { return xulG.new_patron_tab(a,b); },
+                                        'get_barcode' : function(a,b,c) { return xulG.get_barcode(a,b,c); },
+                                        'get_barcode_and_settings' : function(a,b,c) { return xulG.get_barcode_and_settings(a,b,c); }
                                     }
                                 );
                             } catch(E) {
diff --git a/Open-ILS/xul/staff_client/server/patron/holds.js b/Open-ILS/xul/staff_client/server/patron/holds.js
index 28f2cf7..cb45955 100644
--- a/Open-ILS/xul/staff_client/server/patron/holds.js
+++ b/Open-ILS/xul/staff_client/server/patron/holds.js
@@ -1461,6 +1461,8 @@ patron.holds.prototype = {
                                                 obj.error.standard_unexpected_error_alert('holds.js, opac_hold_placed(): ',E);
                                             }
                                         },
+                                        'get_barcode' : xulG.get_barcode,
+                                        'get_barcode_and_settings' : xulG.get_barcode_and_settings,
                                         'patron_barcode' : obj.patron_barcode
                                     },
                                     'url_prefix' : xulG.url_prefix,

commit 8873e420306e317639ff413d1954a5ea7c0d1a74
Author: Thomas Berezansky <tsbere at mvlc.org>
Date:   Fri Mar 16 14:46:19 2012 -0400

    TPac: Include day phone default_phone backup
    
    Like JSPac.
    
    Signed-off-by: Thomas Berezansky <tsbere at mvlc.org>
    Signed-off-by: Ben Shum <bshum at biblio.org>

diff --git a/Open-ILS/src/templates/opac/parts/place_hold.tt2 b/Open-ILS/src/templates/opac/parts/place_hold.tt2
index dca48f2..71c9bde 100644
--- a/Open-ILS/src/templates/opac/parts/place_hold.tt2
+++ b/Open-ILS/src/templates/opac/parts/place_hold.tt2
@@ -82,7 +82,8 @@
                     [% l('Yes, by Phone') %]<br/>
                 <blockquote>
                     [% l('Phone Number:') %]<input type="text" name="phone_notify" [% setting = 'opac.default_phone';
-                    IF ctx.user_setting_map.$setting; %] value='[% ctx.user_setting_map.$setting | html %]' [% END %]/>
+                    IF ctx.user_setting_map.$setting; %] value='[% ctx.user_setting_map.$setting | html %]'
+                    [%- ELSIF ctx.user.day_phone; %] value='[% ctx.user.day_phone | html %]' [% END %]/>
                 </blockquote>
                 [% IF ctx.get_org_setting(ctx.search_ou, 'sms.enable') == 1 %]
                 <input type="checkbox" name="sms_notify_checkbox"
diff --git a/Open-ILS/web/js/ui/default/opac/staff.js b/Open-ILS/web/js/ui/default/opac/staff.js
index 7ab5150..e72f77c 100644
--- a/Open-ILS/web/js/ui/default/opac/staff.js
+++ b/Open-ILS/web/js/ui/default/opac/staff.js
@@ -32,13 +32,16 @@ function staff_hold_usr_barcode_changed() {
         }
         if(barcode == undefined || barcode == '' || barcode == cur_hold_barcode)
             return;
-        var load_info = xulG.get_barcode_and_settings(window, barcode, ['opac.hold_notify','opac.default_pickup_location','opac.default_sms_carrier','opac.default_sms_notify','opac.default_phone'], only_settings);
+        var load_info = xulG.get_barcode_and_settings(window, barcode, only_settings);
         if(load_info == false || load_info == undefined)
             return;
         cur_hold_barcode = load_info.barcode;
         if(!only_settings) document.getElementById('hold_usr_input').value = load_info.barcode; // Safe at this point as we already set cur_hold_barcode
         if(load_info.settings['opac.default_pickup_location'])
             document.getElementById('pickup_lib').value = load_info.settings['opac.default_pickup_location'];
+        if(!load_info.settings['opac.default_phone']) load_info.settings['opac.default_phone'] = '';
+        if(!load_info.settings['opac.default_sms_notify']) load_info.settings['opac.default_sms_notify'] = '';
+        if(!load_info.settings['opac.default_sms_carrier']) load_info.settings['opac.default_sms_carrier'] = '';
         if(load_info.settings['opac.hold_notify']) {
             var email = load_info.settings['opac.hold_notify'].indexOf('email') > -1;
             var phone = load_info.settings['opac.hold_notify'].indexOf('phone') > -1;
diff --git a/Open-ILS/xul/staff_client/chrome/content/main/menu.js b/Open-ILS/xul/staff_client/chrome/content/main/menu.js
index c6d9755..4ca96d8 100644
--- a/Open-ILS/xul/staff_client/chrome/content/main/menu.js
+++ b/Open-ILS/xul/staff_client/chrome/content/main/menu.js
@@ -2530,7 +2530,7 @@ commands:
             return "user_false";
     },
 
-    'get_barcode_and_settings' : function(window, barcode, settings, settings_only) {
+    'get_barcode_and_settings' : function(window, barcode, settings_only) {
         JSAN.use('util.network');
         if(!settings_only) {
             // We need to double-check the barcode for completion and such.
@@ -2546,10 +2546,14 @@ commands:
         var network = new util.network();
         // We have a barcode! Time to load settings.
         // First, we need the user ID
-        var user_id = network.simple_request('FM_AU_ID_RETRIEVE_VIA_BARCODE_OR_USERNAME', [ ses(), barcode ]);
-        if(user_id.ilsevent != undefined || user_id.textcode != undefined)
+        var user = network.simple_request('FM_AU_RETRIEVE_VIA_BARCODE', [ ses(), barcode ]);
+        if(user.ilsevent != undefined || user.textcode != undefined)
             return false;
-        var settings = network.simple_request('FM_AUS_RETRIEVE', [ ses(), user_id, settings ]);
+        var settings = {};
+        for(var i = 0; i < user.settings().length; i++) {
+            settings[user.settings()[i].name()] = JSON2js(user.settings()[i].value());
+        }
+        if(!settings['opac.default_phone'] && user.day_phone()) settings['opac.default_phone'] = user.day_phone();
         return {"barcode": barcode, "settings" : settings};
     },
 
diff --git a/Open-ILS/xul/staff_client/server/patron/display.js b/Open-ILS/xul/staff_client/server/patron/display.js
index d3a4587..7100484 100644
--- a/Open-ILS/xul/staff_client/server/patron/display.js
+++ b/Open-ILS/xul/staff_client/server/patron/display.js
@@ -392,7 +392,7 @@ patron.display.prototype = {
                                 {},
                                 {
                                     'get_barcode' : function(a,b,c) { return xulG.get_barcode(a,b,c); },
-                                    'get_barcode_and_settings' : function(a,b,c,d) { return xulG.get_barcode_and_settings(a,b,c,d); }
+                                    'get_barcode_and_settings' : function(a,b,c) { return xulG.get_barcode_and_settings(a,b,c); }
                                 }
                             );
                         }

commit 5d31958386fc15d591e10d92f13866a1d9f39ef1
Author: Thomas Berezansky <tsbere at mvlc.org>
Date:   Thu Jan 26 13:05:16 2012 -0500

    Hook up default phone/pickup in JSPac
    
    Because why not? Note that you can't set them with JSPac.
    
    Signed-off-by: Thomas Berezansky <tsbere at mvlc.org>
    Signed-off-by: Ben Shum <bshum at biblio.org>

diff --git a/Open-ILS/web/opac/common/js/config.js b/Open-ILS/web/opac/common/js/config.js
index c70bbae..1a62232 100644
--- a/Open-ILS/web/opac/common/js/config.js
+++ b/Open-ILS/web/opac/common/js/config.js
@@ -165,6 +165,8 @@ var PREF_DEF_FONT		= 'opac.default_font';
 var PREF_HOLD_NOTIFY = 'opac.hold_notify';
 var PREF_DEF_LOCATION = 'opac.default_search_location';
 var PREF_DEF_DEPTH	= 'opac.default_search_depth';
+var PREF_DEF_PICKUP = 'opac.default_pickup_location';
+var PREF_DEF_PHONE = 'opac.default_phone'; 
 
 
 /** If enabled, added content attribution links will be 
diff --git a/Open-ILS/web/opac/skin/default/js/holds.js b/Open-ILS/web/opac/skin/default/js/holds.js
index 5c4a324..bb643af 100644
--- a/Open-ILS/web/opac/skin/default/js/holds.js
+++ b/Open-ILS/web/opac/skin/default/js/holds.js
@@ -469,6 +469,11 @@ function __holdsDrawWindow() {
 	
 	}
 
+	var pref = holdArgs.recipient.prefs[PREF_DEF_PICKUP];
+	if(pref) {
+		setSelector(selector, pref);
+	}
+
 	/*
 	if(isXUL()) {
 		var dsel = $('holds_depth_selector');
@@ -609,9 +614,11 @@ function __holdsDrawWindow() {
 
 
 	$('holds_phone').value = holdArgs.recipient.day_phone();
+	var pref = holdArgs.recipient.prefs[PREF_DEF_PHONE];
+	if(pref) $('holds_phone').value = pref;
 	appendClear( $('holds_email'), text(holdArgs.recipient.email()));
 
-	var pref = holdArgs.recipient.prefs[PREF_HOLD_NOTIFY];
+	pref = holdArgs.recipient.prefs[PREF_HOLD_NOTIFY];
 
 	if(pref) {
 		if( ! pref.match(/email/i) ) {

commit 36961e9f5b3819fd362d4bf3ce53d9a028ecd938
Author: Thomas Berezansky <tsbere at mvlc.org>
Date:   Thu Jan 26 12:44:21 2012 -0500

    TPac: Load user's hold prefs
    
    When staff place holds attempt to load the user's hold preferences.
    
    This also hooks up the barcode completion code to the TPac hold placement
    interface.
    
    Signed-off-by: Thomas Berezansky <tsbere at mvlc.org>
    Signed-off-by: Ben Shum <bshum at biblio.org>

diff --git a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm
index 261aefe..bf01bc4 100644
--- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm
+++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm
@@ -622,7 +622,7 @@ sub load_place_hold {
             {
                 flesh => 1,
                 flesh_fields => {
-                    au => ['settings']
+                    au => ['settings', 'card']
                 }
             }
         ]) or return Apache2::Const::HTTP_INTERNAL_SERVER_ERROR;
diff --git a/Open-ILS/src/templates/opac/parts/place_hold.tt2 b/Open-ILS/src/templates/opac/parts/place_hold.tt2
index fc2f3e8..dca48f2 100644
--- a/Open-ILS/src/templates/opac/parts/place_hold.tt2
+++ b/Open-ILS/src/templates/opac/parts/place_hold.tt2
@@ -22,7 +22,8 @@
             <label for="hold_usr_is_requestor_not">
                 [% l("Place hold for patron by barcode:") %]
             </label>
-            <input type="text" name="hold_usr" id="hold_usr_input" value="[% ctx.patron_recipient.card.barcode | html %]" /><br />[%# XXX multi-barcode users? %]
+            <input type="text" name="hold_usr" id="hold_usr_input" onchange="staff_hold_usr_barcode_changed();" value="[% ctx.patron_recipient.card.barcode | html %]" /><br />[%# XXX multi-barcode users? %]
+            <input type="hidden" id="staff_barcode" value="[% ctx.staff_recipient.card.barcode | html %]"/>
             <span>
                 <input type="radio" id="hold_usr_is_requestor"
                     onchange="staff_hold_usr_input_disabler(this);"
diff --git a/Open-ILS/web/js/ui/default/opac/staff.js b/Open-ILS/web/js/ui/default/opac/staff.js
index 55e5612..7ab5150 100644
--- a/Open-ILS/web/js/ui/default/opac/staff.js
+++ b/Open-ILS/web/js/ui/default/opac/staff.js
@@ -17,6 +17,46 @@ function runEvt(scope, name) {
 function staff_hold_usr_input_disabler(input) {
     document.getElementById("hold_usr_input").disabled =
         Boolean(Number(input.value));
+    staff_hold_usr_barcode_changed();
+}
+var cur_hold_barcode = undefined;
+function staff_hold_usr_barcode_changed() {
+    if(typeof xulG != 'undefined' && xulG.get_barcode_and_settings) {
+        var barcode = document.getElementById('staff_barcode').value;
+        var only_settings = true;
+        if(!document.getElementById('hold_usr_is_requestor').checked) {
+            barcode = document.getElementById('hold_usr_input').value;
+            only_settings = false;
+            if(barcode && barcode != '' && !document.getElementById('hold_usr_is_requestor_not').checked)
+                document.getElementById('hold_usr_is_requestor_not').checked = 'checked';
+        }
+        if(barcode == undefined || barcode == '' || barcode == cur_hold_barcode)
+            return;
+        var load_info = xulG.get_barcode_and_settings(window, barcode, ['opac.hold_notify','opac.default_pickup_location','opac.default_sms_carrier','opac.default_sms_notify','opac.default_phone'], only_settings);
+        if(load_info == false || load_info == undefined)
+            return;
+        cur_hold_barcode = load_info.barcode;
+        if(!only_settings) document.getElementById('hold_usr_input').value = load_info.barcode; // Safe at this point as we already set cur_hold_barcode
+        if(load_info.settings['opac.default_pickup_location'])
+            document.getElementById('pickup_lib').value = load_info.settings['opac.default_pickup_location'];
+        if(load_info.settings['opac.hold_notify']) {
+            var email = load_info.settings['opac.hold_notify'].indexOf('email') > -1;
+            var phone = load_info.settings['opac.hold_notify'].indexOf('phone') > -1;
+            var sms = load_info.settings['opac.hold_notify'].indexOf('sms') > -1;
+            var update_elements = document.getElementsByName('email_notify');
+            for(var i in update_elements) update_elements[i].checked = (email ? 'checked' : '');
+            update_elements = document.getElementsByName('phone_notify_checkbox');
+            for(var i in update_elements) update_elements[i].checked = (phone ? 'checked' : '');
+            update_elements = document.getElementsByName('sms_notify_checkbox');
+            for(var i in update_elements) update_elements[i].checked = (sms ? 'checked' : '');
+        }
+        update_elements = document.getElementsByName('phone_notify');
+        for(var i in update_elements) update_elements[i].value = load_info.settings['opac.default_phone'];
+        update_elements = document.getElementsByName('sms_notify');
+        for(var i in update_elements) update_elements[i].value = load_info.settings['opac.default_sms_notify'];
+        update_elements = document.getElementsByName('sms_carrier');
+        for(var i in update_elements) update_elements[i].value = load_info.settings['opac.default_sms_carrier'];
+    }
 }
 window.onload = function() {
     // record details page events
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 d0657a9..14c4cd3 100644
--- a/Open-ILS/xul/staff_client/chrome/content/cat/opac.js
+++ b/Open-ILS/xul/staff_client/chrome/content/cat/opac.js
@@ -106,7 +106,7 @@ function set_brief_view() {
         "set_patron_tab", "volume_item_creator", "get_new_session",
         "holdings_maintenance_tab", "open_chrome_window", "url_prefix",
         "network_meter", "page_meter", "set_statusbar", "set_help_context",
-        "get_barcode", "reload_opac"
+        "get_barcode", "reload_opac", "get_barcode_and_settings"
     ].forEach(function(k) { content_params[k] = xulG[k]; });
 
     top_pane.set_iframe( 
@@ -328,7 +328,8 @@ function open_acq_orders() {
             "set_patron_tab", "volume_item_creator", "get_new_session",
             "holdings_maintenance_tab", "set_tab_name", "open_chrome_window",
             "url_prefix", "network_meter", "page_meter", "set_statusbar",
-            "set_help_context", "get_barcode", "reload_opac"
+            "set_help_context", "get_barcode", "reload_opac", 
+            "get_barcode_and_settings"
         ].forEach(function(k) { content_params[k] = xulG[k]; });
 
         var loc = urls.XUL_BROWSER + "?url=" + window.escape(
@@ -365,7 +366,8 @@ function open_alt_serial_mgmt() {
             "set_patron_tab", "volume_item_creator", "get_new_session",
             "holdings_maintenance_tab", "set_tab_name", "open_chrome_window",
             "url_prefix", "network_meter", "page_meter", "set_statusbar",
-            "set_help_context", "get_barcode", "reload_opac"
+            "set_help_context", "get_barcode", "reload_opac",
+            "get_barcode_and_settings"
         ].forEach(function(k) { content_params[k] = xulG[k]; });
 
         var loc = urls.XUL_BROWSER + "?url=" + window.escape(
@@ -402,7 +404,8 @@ function set_opac() {
                         g.error.standard_unexpected_error_alert('window_open',E);
                     }
                 },
-                'get_barcode' : xulG.get_barcode
+                'get_barcode' : xulG.get_barcode,
+                'get_barcode_and_settings' : xulG.get_barcode_and_settings
             },
             'on_url_load' : function(f) {
                 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
@@ -541,6 +544,7 @@ function set_opac() {
         content_params.set_statusbar = xulG.set_statusbar;
         content_params.set_help_context = xulG.set_help_context;
         content_params.get_barcode = xulG.get_barcode;
+        content_params.get_barcode_and_settings = xulG.get_barcode_and_settings;
 
         var secure_opac = true; // default to secure
         netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
@@ -718,6 +722,7 @@ function bib_in_new_tab() {
         content_params.set_statusbar = xulG.set_statusbar;
         content_params.set_help_context = xulG.set_help_context;
         content_params.get_barcode = xulG.get_barcode;
+        content_params.get_barcode_and_settings = xulG.get_barcode_and_settings;
 
         xulG.new_tab(xulG.url_prefix(urls.XUL_OPAC_WRAPPER), {}, content_params);
     } catch(E) {
@@ -733,7 +738,8 @@ function batch_receive_in_new_tab() {
             "set_patron_tab", "volume_item_creator", "get_new_session",
             "holdings_maintenance_tab", "set_tab_name", "open_chrome_window",
             "url_prefix", "network_meter", "page_meter", "set_statusbar",
-            "set_help_context", "get_barcode", "reload_opac"
+            "set_help_context", "get_barcode", "reload_opac",
+            "get_barcode_and_settings"
         ].forEach(function(k) { content_params[k] = xulG[k]; });
 
         xulG.new_tab(
diff --git a/Open-ILS/xul/staff_client/chrome/content/main/menu.js b/Open-ILS/xul/staff_client/chrome/content/main/menu.js
index 4d8b482..c6d9755 100644
--- a/Open-ILS/xul/staff_client/chrome/content/main/menu.js
+++ b/Open-ILS/xul/staff_client/chrome/content/main/menu.js
@@ -62,6 +62,7 @@ main.menu.prototype = {
         urls.remote = params['server'];
 
         xulG.get_barcode = this.get_barcode;
+        xulG.get_barcode_and_settings = this.get_barcode_and_settings;
 
         // Pull in local customizations
         var r = new XMLHttpRequest();
@@ -2275,6 +2276,7 @@ commands:
         content_params.network_meter = obj.network_meter;
         content_params.page_meter = obj.page_meter;
         content_params.get_barcode = obj.get_barcode;
+        content_params.get_barcode_and_settings = obj.get_barcode_and_settings;
         content_params.render_toolbar_layout = function(layout) { return obj.render_toolbar_layout(layout); };
         content_params.set_statusbar = function(slot,text,tooltiptext,click_handler) {
             var e = document.getElementById('statusbarpanel'+slot);
@@ -2528,6 +2530,29 @@ commands:
             return "user_false";
     },
 
+    'get_barcode_and_settings' : function(window, barcode, settings, settings_only) {
+        JSAN.use('util.network');
+        if(!settings_only) {
+            // We need to double-check the barcode for completion and such.
+            var new_barcode = xulG.get_barcode(window, 'actor', barcode);
+            if(new_barcode == "user_false") return;
+            // No error means we have a (hopefully valid) completed barcode to use.
+            // Otherwise, fall through to other methods of checking
+            if(typeof new_barcode.ilsevent == 'undefined')
+                barcode = new_barcode.barcode;
+            else
+                return false;
+        }
+        var network = new util.network();
+        // We have a barcode! Time to load settings.
+        // First, we need the user ID
+        var user_id = network.simple_request('FM_AU_ID_RETRIEVE_VIA_BARCODE_OR_USERNAME', [ ses(), barcode ]);
+        if(user_id.ilsevent != undefined || user_id.textcode != undefined)
+            return false;
+        var settings = network.simple_request('FM_AUS_RETRIEVE', [ ses(), user_id, settings ]);
+        return {"barcode": barcode, "settings" : settings};
+    },
+
     'sort_menu' : function(menu, recurse) {
         var curgroup = new Array();
         var curstart = 1;
diff --git a/Open-ILS/xul/staff_client/server/patron/display.js b/Open-ILS/xul/staff_client/server/patron/display.js
index 054e364..d3a4587 100644
--- a/Open-ILS/xul/staff_client/server/patron/display.js
+++ b/Open-ILS/xul/staff_client/server/patron/display.js
@@ -391,7 +391,8 @@ patron.display.prototype = {
                                 urls.EG_ACQ_USER_REQUESTS + '?usr=' + obj.patron.id(),
                                 {},
                                 {
-                                    'get_barcodes' : function(a) { return xulG.get_barcodes(a); }
+                                    'get_barcode' : function(a,b,c) { return xulG.get_barcode(a,b,c); },
+                                    'get_barcode_and_settings' : function(a,b,c,d) { return xulG.get_barcode_and_settings(a,b,c,d); }
                                 }
                             );
                         }
@@ -884,6 +885,7 @@ patron.display.prototype = {
                         }
                     },
                     'get_barcode' : xulG.get_barcode,
+                    'get_barcode_and_settings' : xulG.get_barcode_and_settings,
                     'url_prefix' : xulG.url_prefix
                 }
             );

commit 15039eb6c71e8edbcc84662eefed18be6d7afde1
Author: Thomas Berezansky <tsbere at mvlc.org>
Date:   Wed Jan 25 21:22:56 2012 -0500

    TPac: Add Default Hold Pickup Location
    
    And add it (plus other user settings) to the patron editor.
    
    And fix a bug where notice prefs were saving without POST.
    
    Signed-off-by: Thomas Berezansky <tsbere at mvlc.org>
    Signed-off-by: Ben Shum <bshum at biblio.org>

diff --git a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm
index 72f4601..261aefe 100644
--- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm
+++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm
@@ -176,12 +176,19 @@ sub load_myopac_prefs_notify {
     my $self = shift;
     my $e = $self->editor;
 
+
+    my $stat = $self->_load_user_with_prefs;
+    return $stat if $stat;
+
     my $user_prefs = $self->fetch_optin_prefs;
     $user_prefs = $self->update_optin_prefs($user_prefs)
         if $self->cgi->request_method eq 'POST';
 
     $self->ctx->{opt_in_settings} = $user_prefs;
 
+    return Apache2::Const::OK
+        unless $self->cgi->request_method eq 'POST';
+
     my %settings;
     my $set_map = $self->ctx->{user_setting_map};
  
@@ -343,6 +350,7 @@ sub load_myopac_prefs_settings {
     my @user_prefs = qw/
         opac.hits_per_page
         opac.default_search_location
+        opac.default_pickup_location
     /;
 
     my $stat = $self->_load_user_with_prefs;
@@ -646,6 +654,11 @@ sub load_place_hold {
         $ctx->{default_sms_notify} = '';
     }
 
+    # If we have a default pickup location, grab it
+    if ($$user_setting_map{'opac.default_pickup_location'}) {
+        $ctx->{default_pickup_lib} = $$user_setting_map{'opac.default_pickup_location'};
+    }
+
     my $request_lib = $e->requestor->ws_ou;
     my @hold_data;
     $ctx->{hold_data} = \@hold_data;
diff --git a/Open-ILS/src/sql/Pg/950.data.seed-values.sql b/Open-ILS/src/sql/Pg/950.data.seed-values.sql
index bd9fc24..ccacf9f 100644
--- a/Open-ILS/src/sql/Pg/950.data.seed-values.sql
+++ b/Open-ILS/src/sql/Pg/950.data.seed-values.sql
@@ -2437,6 +2437,9 @@ INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatyp
 INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype)
     VALUES ('circ.holds_behind_desk', FALSE, 'Hold is behind Circ Desk', 'Hold is behind Circ Desk', 'bool');
 
+INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype)
+    VALUES ('opac.default_pickup_location', TRUE, 'Default Hold Pickup Location', 'Default location for holds pickup', 'integer');
+
 -- Add groups for org_unitu settings
 INSERT INTO config.settings_group (name, label) VALUES
 ('sys', oils_i18n_gettext('config.settings_group.system', 'System', 'coust', 'label')),
diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.hold_default_pickup.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.hold_default_pickup.sql
new file mode 100644
index 0000000..67200e8
--- /dev/null
+++ b/Open-ILS/src/sql/Pg/upgrade/XXXX.hold_default_pickup.sql
@@ -0,0 +1,2 @@
+INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype)
+    VALUES ('opac.default_pickup_location', TRUE, 'Default Hold Pickup Location', 'Default location for holds pickup', 'integer');
diff --git a/Open-ILS/src/templates/opac/myopac/prefs_settings.tt2 b/Open-ILS/src/templates/opac/myopac/prefs_settings.tt2
index 8e301d5..4ee6190 100644
--- a/Open-ILS/src/templates/opac/myopac/prefs_settings.tt2
+++ b/Open-ILS/src/templates/opac/myopac/prefs_settings.tt2
@@ -50,6 +50,18 @@
                     </td>
                 </tr>
                 <tr>
+                    <td width='20%'>[% l("Preferred pickup location") %]</td>
+                    <td>
+                        [%- setting = 'opac.default_pickup_location';
+                            thang = ctx.user.home_ou.id;
+                            IF ctx.user_setting_map.$setting;
+                                thang = ctx.user_setting_map.$setting;
+                            END;
+                            INCLUDE build_org_selector name=setting value=thang can_have_vols_only=1;
+                        %]
+                    </td>
+                </tr>
+                <tr>
                     <td>[% l('Keep history of checked out items?') %]</td>
                     <td>
                         [% setting = 'history.circ.retention_start' %]
diff --git a/Open-ILS/web/js/dojo/openils/actor/nls/register.js b/Open-ILS/web/js/dojo/openils/actor/nls/register.js
index f6d6587..ae63537 100644
--- a/Open-ILS/web/js/dojo/openils/actor/nls/register.js
+++ b/Open-ILS/web/js/dojo/openils/actor/nls/register.js
@@ -36,5 +36,8 @@
     "ALL_CARDS_PRIMARY" : "Primary",
     "ALL_CARDS_CLOSE" : "Close",
     "ALL_CARDS_APPLY" : "Apply Changes",
-    "INVALIDATE": "Invalidate"
+    "INVALIDATE": "Invalidate",
+    "HOLD_NOTIFY_PHONE": "Phone: ",
+    "HOLD_NOTIFY_EMAIL": "Email: ",
+    "HOLD_NOTIFY_SMS": "SMS: "
 }
diff --git a/Open-ILS/web/js/ui/default/actor/user/register.js b/Open-ILS/web/js/ui/default/actor/user/register.js
index d56622c..1ed56a4 100644
--- a/Open-ILS/web/js/ui/default/actor/user/register.js
+++ b/Open-ILS/web/js/ui/default/actor/user/register.js
@@ -5,6 +5,7 @@ dojo.require('dijit.form.FilteringSelect');
 dojo.require('dijit.form.ComboBox');
 dojo.require('dijit.form.NumberSpinner');
 dojo.require('fieldmapper.IDL');
+dojo.require('fieldmapper.OrgUtils');
 dojo.require('openils.PermaCrud');
 dojo.require('openils.widget.AutoGrid');
 dojo.require('openils.widget.AutoFieldWidget');
@@ -47,6 +48,7 @@ var optInSettings;
 var allCardsTemplate;
 var uEditCloneCopyAddr; // if true, copy addrs on clone instead of link
 var homeOuTypes = {};
+var holdPickupTypes = {};
 var cardPerms = {};
 var editCard;
 var prevBillingAddress;
@@ -186,7 +188,8 @@ function load() {
         'format.date',
         'ui.patron.edit.default_suggested',
         'opac.barcode_regex',
-        'opac.username_regex'
+        'opac.username_regex',
+        'sms.enable'
     ]);
 
     for(k in orgSettings)
@@ -223,6 +226,11 @@ function load() {
         var type = list[i];
         homeOuTypes[type.id()] = true;
     }
+    list = pcrud.search('aout', {can_have_vols: 'true'});
+    for(var i in list) {
+        var type = list[i];
+        holdPickupTypes[type.id()] = true;
+    }
 
     tbody = dojo.byId('uedit-tbody');
 
@@ -630,7 +638,7 @@ function uEditFetchUserSettings(userId) {
     /* fetch any user setting types we need + any that offer opt-in */
     userSettingTypes = pcrud.search('cust', {
         '-or' : [
-            {name:['circ.holds_behind_desk', 'circ.collections.exempt']}, 
+            {name:['circ.holds_behind_desk', 'circ.collections.exempt', 'opac.hold_notify', 'opac.default_phone', 'opac.default_pickup_location', 'opac.default_sms_carrier', 'opac.default_sms_notify']}, 
             {name : {
                 'in': {
                     select : {atevdef : ['opt_in_setting']}, 
@@ -688,15 +696,97 @@ function uEditDrawSettingRow(tbody, dividerRow, template, stype) {
     var row = template.cloneNode(true);
     row.setAttribute('user_setting', stype.name());
     getByName(row, 'label').innerHTML = stype.label();
-    var cb = new dijit.form.CheckBox({scrollOnFocus:false}, getByName(row, 'widget'));
-    cb.attr('value', userSettings[stype.name()]);
-    dojo.connect(cb, 'onChange', function(newVal) { userSettingsToUpdate[stype.name()] = newVal; });
-    tbody.insertBefore(row, dividerRow.nextSibling);
-    openils.Util.show(row, 'table-row');
+    switch(stype.name()) {
+        case 'opac.hold_notify':
+            var template = localeStrings.HOLD_NOTIFY_PHONE + '<span name="hold_phone"></span>&nbsp;'
+                + localeStrings.HOLD_NOTIFY_EMAIL + '<span name="hold_email"></span>';
+            if(orgSettings['sms.enable']) {
+                template += '&nbsp;' + localeStrings.HOLD_NOTIFY_SMS + '<span name="hold_sms"></span>';
+            }
+            getByName(row, 'widget').innerHTML = template;
+            var setting = userSettings['opac.hold_notify'];
+            if(setting == null) setting = 'phone:email';
+            var cb_phone = new dijit.form.CheckBox({scrollOnFocus:false}, getByName(row, 'hold_phone'));
+            cb_phone.attr('value', setting.indexOf('phone') != -1);
+            var cb_email = new dijit.form.CheckBox({scrollOnFocus:false}, getByName(row, 'hold_email'));
+            cb_email.attr('value', setting.indexOf('email') != -1);
+            var cb_sms = null;
+            if(orgSettings['sms.enable']) {
+                cb_sms = new dijit.form.CheckBox({scrollOnFocus:false}, getByName(row, 'hold_sms'));
+                cb_sms.attr('value', setting.indexOf('sms') != -1);
+            }
+            var func = function() {
+                var newVal = '';
+                var splitter = '';
+                if(cb_phone.checked) {
+                    newVal+= splitter + 'phone';
+                    splitter = ':';
+                }
+                if(cb_email.checked) {
+                    newVal+= splitter + 'email';
+                    splitter = ':';
+                }
+                if(orgSettings['sms.enable'] && cb_sms.checked) {
+                    newVal+= splitter + 'sms';
+                    splitter = ':';
+                }
+                userSettingsToUpdate['opac.hold_notify'] = newVal;
+            };
+            dojo.connect(cb_phone, 'onChange', func);
+            dojo.connect(cb_email, 'onChange', func);
+            if(cb_sms) dojo.connect(cb_sms, 'onChange', func);
+            break;
+        case 'opac.default_pickup_location':
+            var sb = new openils.widget.FilteringTreeSelect({
+                scrollOnFocus: false,
+                labelAttr: 'name',
+                searchAttr: 'name',
+                parentField: 'parent_ou',
+                }, getByName(row, 'widget'));
+            sb.tree = fieldmapper.aou.globalOrgTree;
+            sb.startup();
+            sb.attr('value', userSettings[stype.name()]);
+
+            sb.isValid = function() {
+                if(this.item) {
+                    if(holdPickupTypes[this.store.getValue(this.item, 'ou_type')]) {
+                        return true;
+                    }
+                    return false;
+                }
+                return true;
+            };
 
-    if(stype.name() == 'circ.collections.exempt') {
-        checkCollectionsExemptPerm(cb);
+            dojo.connect(sb, 'onChange', function(newVal) { userSettingsToUpdate[stype.name()] = newVal; });
+            break;
+        case 'opac.default_sms_carrier':
+            if(!orgSettings['sms.enable']) return; // Skip when SMS is disabled
+            var carriers = pcrud.search('csc', {active: 'true'}, {'order_by':[{'class':'csc', 'field':'name'},{'class':'csc', 'field':'region'}]});
+            var storedata = fieldmapper.csc.toStoreData(carriers);
+            for(var i in storedata.items) storedata.items[i].label = storedata.items[i].name + ' (' + storedata.items[i].region + ')';
+            var store = new dojo.data.ItemFileReadStore({data:storedata});
+            var select = new dijit.form.FilteringSelect({store:store,scrollOnFocus:false,labelAttr:'label',searchAttr:'label'}, getByName(row, 'widget'));
+            select.attr('value', userSettings[stype.name()]);
+            select.isValid = function() { return true; };
+            dojo.connect(select, 'onChange', function(newVal) { userSettingsToUpdate[stype.name()] = newVal; });
+            break;
+        case 'opac.default_sms_notify':
+            if(!orgSettings['sms.enable']) return; // Skip when SMS is disabled
+        case 'opac.default_phone':
+            var tb = new dijit.form.TextBox({scrollOnFocus:false}, getByName(row, 'widget'));
+            tb.attr('value', userSettings[stype.name()]);
+            dojo.connect(tb, 'onChange', function(newVal) { userSettingsToUpdate[stype.name()] = newVal; });
+            break;
+        default:
+            var cb = new dijit.form.CheckBox({scrollOnFocus:false}, getByName(row, 'widget'));
+            cb.attr('value', userSettings[stype.name()]);
+            dojo.connect(cb, 'onChange', function(newVal) { userSettingsToUpdate[stype.name()] = newVal; });
+            if(stype.name() == 'circ.collections.exempt') {
+                checkCollectionsExemptPerm(cb);
+            }
     }
+    tbody.insertBefore(row, dividerRow.nextSibling);
+    openils.Util.show(row, 'table-row');
 }
 
 function uEditUpdateUserSettings(userId) {

-----------------------------------------------------------------------

Summary of changes:
 .../lib/OpenILS/WWW/EGCatLoader/Account.pm         |   15 +++-
 Open-ILS/src/sql/Pg/002.schema.config.sql          |    2 +-
 Open-ILS/src/sql/Pg/950.data.seed-values.sql       |    3 +
 .../sql/Pg/upgrade/0698.hold_default_pickup.sql    |   14 +++
 .../src/templates/opac/myopac/prefs_settings.tt2   |   12 ++
 Open-ILS/src/templates/opac/parts/place_hold.tt2   |    6 +-
 Open-ILS/web/js/dojo/openils/actor/nls/register.js |    5 +-
 Open-ILS/web/js/ui/default/actor/user/register.js  |  108 ++++++++++++++++++--
 Open-ILS/web/js/ui/default/opac/staff.js           |   47 +++++++++
 Open-ILS/web/opac/common/js/config.js              |    2 +
 Open-ILS/web/opac/skin/default/js/holds.js         |    9 ++-
 .../xul/staff_client/chrome/content/cat/opac.js    |   16 ++-
 .../xul/staff_client/chrome/content/main/menu.js   |   29 +++++
 Open-ILS/xul/staff_client/server/patron/display.js |    8 +-
 Open-ILS/xul/staff_client/server/patron/holds.js   |    2 +
 15 files changed, 256 insertions(+), 22 deletions(-)
 create mode 100644 Open-ILS/src/sql/Pg/upgrade/0698.hold_default_pickup.sql


hooks/post-receive
-- 
Evergreen ILS


More information about the open-ils-commits mailing list