From 09af486f24d696bddf01d786859288ef3f5666a6 Mon Sep 17 00:00:00 2001
From: phasefx <phasefx@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Date: Fri, 10 Sep 2010 18:17:20 +0000
Subject: [PATCH] ui.patron.registration.require_address org unit setting and
 associated behavior for requiring at least one postal address during patron
 registration

git-svn-id: svn://svn.open-ils.org/ILS/trunk@17582 dcc99617-32d9-48b4-a31d-7c20da2025e4
---
 Open-ILS/src/sql/Pg/002.schema.config.sql            |  2 +-
 Open-ILS/src/sql/Pg/950.data.seed-values.sql         | 16 ++++++++++++++++
 ...-setting-ui.patron.editor_address_requirement.sql | 20 ++++++++++++++++++++
 Open-ILS/web/js/dojo/openils/actor/nls/register.js   |  2 ++
 Open-ILS/web/js/ui/default/actor/user/register.js    |  9 ++++++++-
 5 files changed, 47 insertions(+), 2 deletions(-)
 create mode 100644 Open-ILS/src/sql/Pg/upgrade/0392.data.org-setting-ui.patron.editor_address_requirement.sql

diff --git a/Open-ILS/src/sql/Pg/002.schema.config.sql b/Open-ILS/src/sql/Pg/002.schema.config.sql
index ed2136467e..5c2e085882 100644
--- a/Open-ILS/src/sql/Pg/002.schema.config.sql
+++ b/Open-ILS/src/sql/Pg/002.schema.config.sql
@@ -68,7 +68,7 @@ CREATE TABLE config.upgrade_log (
     install_date    TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()
 );
 
-INSERT INTO config.upgrade_log (version) VALUES ('0391'); -- miker
+INSERT INTO config.upgrade_log (version) VALUES ('0392'); -- phasefx
 
 CREATE TABLE config.bib_source (
 	id		SERIAL	PRIMARY KEY,
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 78667c555d..ad92ab0aaf 100644
--- a/Open-ILS/src/sql/Pg/950.data.seed-values.sql
+++ b/Open-ILS/src/sql/Pg/950.data.seed-values.sql
@@ -6916,4 +6916,20 @@ INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
         'string'
 );
 
+-- 0392.data.org-setting-ui.patron.editor_address_requirement.sql
+
+INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) VALUES (
+        'ui.patron.registration.require_address',
+        oils_i18n_gettext(
+            'ui.patron.registration.require_address',
+            'GUI: Require at least one address for Patron Registration', 
+            'coust', 
+            'label'),
+        oils_i18n_gettext(
+            'ui.patron.registration.require_address',
+            'Enforces a requirement for having at least one address for a patron during registration.',
+            'coust', 
+            'description'),
+        'bool'
+);
 
diff --git a/Open-ILS/src/sql/Pg/upgrade/0392.data.org-setting-ui.patron.editor_address_requirement.sql b/Open-ILS/src/sql/Pg/upgrade/0392.data.org-setting-ui.patron.editor_address_requirement.sql
new file mode 100644
index 0000000000..0b916e8a3d
--- /dev/null
+++ b/Open-ILS/src/sql/Pg/upgrade/0392.data.org-setting-ui.patron.editor_address_requirement.sql
@@ -0,0 +1,20 @@
+BEGIN;
+
+INSERT INTO config.upgrade_log (version) VALUES ('0392'); -- phasefx
+
+INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) VALUES (
+        'ui.patron.registration.require_address',
+        oils_i18n_gettext(
+            'ui.patron.registration.require_address',
+            'GUI: Require at least one address for Patron Registration', 
+            'coust', 
+            'label'),
+        oils_i18n_gettext(
+            'ui.patron.registration.require_address',
+            'Enforces a requirement for having at least one address for a patron during registration.',
+            'coust', 
+            'description'),
+        'bool'
+);
+
+COMMIT;
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 dabee10a13..6e0f8af804 100644
--- a/Open-ILS/web/js/dojo/openils/actor/nls/register.js
+++ b/Open-ILS/web/js/dojo/openils/actor/nls/register.js
@@ -1,4 +1,6 @@
 {
+    "DELETE_ADDRESS" : "Delete address ${0}?",
+    "NEED_ADDRESS" : "An address is required during registration.",
     "DUPE_PATRON_NAME" : "Found ${0} patron(s) with the same name",
     "DUPE_PATRON_EMAIL" : "Found ${0} patron(s) with the same email address",
     "DUPE_PATRON_IDENT" : "Found ${0} patron(s) with the same identification",
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 b1aea17280..cff9071e32 100644
--- a/Open-ILS/web/js/ui/default/actor/user/register.js
+++ b/Open-ILS/web/js/ui/default/actor/user/register.js
@@ -84,6 +84,7 @@ function load() {
         'ui.patron.default_inet_access_level',
         'ui.patron.default_ident_type',
         'ui.patron.default_country',
+        'ui.patron.registration.require_address',
         'circ.holds.behind_desk_pickup_supported',
         'circ.patron_edit.clone.copy_address'
     ]);
@@ -1348,8 +1349,14 @@ function uEditApproveAddress(addr) {
 
 
 function uEditDeleteAddr(id, noAlert) {
+    if (patron.isnew() && orgSettings['ui.patron.registration.require_address']) {
+        if (dojo.query('tr[name=uedit-addr-divider]').length < 2) {
+            alert(localeStrings.NEED_ADDRESS);
+            return;
+        }
+    }
     if(!noAlert) {
-        if(!confirm('Delete address ' + id)) return; /* XXX i18n */
+        if(!confirm(dojo.string.substitute(localeStrings.DELETE_ADDRESS, [id]))) return;
     }
     var addr = patron.addresses().filter(function(i){return (i.id() == id)})[0];
     if (addr) { addr.isdeleted(1); }
-- 
2.11.0