[open-ils-commits] [GIT] Evergreen ILS branch master updated. 19381fa63d48e834ec7a98f4e43e88dc524c837c

Evergreen Git git at git.evergreen-ils.org
Thu Sep 15 12:18:42 EDT 2011


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  19381fa63d48e834ec7a98f4e43e88dc524c837c (commit)
       via  f7c32accf873a459e12c7803b3d21a72d6155564 (commit)
       via  5d898ed0f7bd7128e8cffd596ecc6a4353a9fe02 (commit)
       via  d5043efbad49eef4b723567d27b6094b02d5e663 (commit)
       via  4af6d17a09ad214c63724a47ff7113d70fc3f849 (commit)
       via  d2ae9eddb7e9e324e7dad774c9fdd284ab2102de (commit)
       via  1e8a378b54b546ac0a474d39a24c00a195e5d026 (commit)
       via  721e1be02c0088b9ecb553b0963e90a1da31418b (commit)
       via  1f625985a72f18f79d638fee580b6aed9da47153 (commit)
       via  f69f755ad51afbdeb6645f150506dc58501a1551 (commit)
       via  46586b0535e478e94a1685a374b2a5f4c29c9778 (commit)
       via  53b70bf549b67038b79270611e29e0d6dee16fd2 (commit)
       via  96af8f5182acf5c04b6cc85d5ef0a3ff93aae6a3 (commit)
       via  ddfdd0ce75aa04ec90d25785d671a5009d54d4b3 (commit)
       via  0bba2e0c63ba4ed126bf6a77fb1e51ee73a28912 (commit)
       via  e997eb021386bbce171a5b8fafa3d509b8bf9e54 (commit)
       via  d94433ac4283c8caf481424612e25aa9ac01e833 (commit)
       via  9bc32a7f257fc68f79bc3fd6004fda799f8697d7 (commit)
       via  35b7724eb625f077beec10a26ed2c0669925ca86 (commit)
       via  6842714bf0226c85c71bf79d7d0c6166363f1153 (commit)
       via  c109dc2adb8019307256061419e287a3ea31a031 (commit)
      from  3c2ee5ec8476153cf2b119087dc421329b01a1da (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 19381fa63d48e834ec7a98f4e43e88dc524c837c
Author: Jason Etheridge <jason at esilibrary.com>
Date:   Thu Sep 15 12:08:55 2011 -0400

    pin down upgrade script version numbers

diff --git a/Open-ILS/src/sql/Pg/002.schema.config.sql b/Open-ILS/src/sql/Pg/002.schema.config.sql
index 53e0ba5..02f699e 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 ('0621', :eg_version); -- berick
+INSERT INTO config.upgrade_log (version, applied_to) VALUES ('0623', :eg_version); -- Joseph Lewis / phasefx / tsbere
 
 CREATE TABLE config.bib_source (
 	id		SERIAL	PRIMARY KEY,
diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.data.YAOUS-i18n-update.sql b/Open-ILS/src/sql/Pg/upgrade/0622.data.YAOUS-i18n-update.sql
similarity index 99%
rename from Open-ILS/src/sql/Pg/upgrade/XXXX.data.YAOUS-i18n-update.sql
rename to Open-ILS/src/sql/Pg/upgrade/0622.data.YAOUS-i18n-update.sql
index 6b77fde..80eca3f 100644
--- a/Open-ILS/src/sql/Pg/upgrade/XXXX.data.YAOUS-i18n-update.sql
+++ b/Open-ILS/src/sql/Pg/upgrade/0622.data.YAOUS-i18n-update.sql
@@ -3,7 +3,7 @@
 --
 BEGIN;
 
-SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version);
+SELECT evergreen.upgrade_deps_block_check('0622', :eg_version);
 
 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.schema.YAOUS-log-table.sql b/Open-ILS/src/sql/Pg/upgrade/0623.schema.YAOUS-log-table.sql
similarity index 96%
rename from Open-ILS/src/sql/Pg/upgrade/XXXX.schema.YAOUS-log-table.sql
rename to Open-ILS/src/sql/Pg/upgrade/0623.schema.YAOUS-log-table.sql
index 0230a76..826ff5f 100644
--- a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.YAOUS-log-table.sql
+++ b/Open-ILS/src/sql/Pg/upgrade/0623.schema.YAOUS-log-table.sql
@@ -1,6 +1,6 @@
 BEGIN;
 
-SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version);
+SELECT evergreen.upgrade_deps_block_check('0623', :eg_version);
 
 
 CREATE TABLE config.org_unit_setting_type_log (

commit f7c32accf873a459e12c7803b3d21a72d6155564
Author: Jason Etheridge <jason at esilibrary.com>
Date:   Thu Sep 15 12:05:14 2011 -0400

    add in the org setting history triggers
    
    Signed-off-by: Jason Etheridge <jason at esilibrary.com>

diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.YAOUS-log-table.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.YAOUS-log-table.sql
index 4ce1c9d..0230a76 100644
--- a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.YAOUS-log-table.sql
+++ b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.YAOUS-log-table.sql
@@ -12,4 +12,39 @@ CREATE TABLE config.org_unit_setting_type_log (
     field_name      TEXT      REFERENCES config.org_unit_setting_type (name)
 );
 
+-- Log each change in oust to oustl, so admins can see what they messed up if someting stops working.
+CREATE OR REPLACE FUNCTION ous_change_log() RETURNS TRIGGER AS $ous_change_log$
+    DECLARE
+    original TEXT;
+    BEGIN
+        -- Check for which setting is being updated, and log it.
+        SELECT INTO original value FROM actor.org_unit_setting WHERE name = NEW.name AND org_unit = NEW.org_unit;
+                
+        INSERT INTO config.org_unit_setting_type_log (org,original_value,new_value,field_name) VALUES (NEW.org_unit, original, NEW.value, NEW.name);
+        
+        RETURN NEW;
+    END;
+$ous_change_log$ LANGUAGE plpgsql;    
+
+CREATE TRIGGER log_ous_change
+    BEFORE INSERT OR UPDATE ON actor.org_unit_setting
+    FOR EACH ROW EXECUTE PROCEDURE ous_change_log();
+
+CREATE OR REPLACE FUNCTION ous_delete_log() RETURNS TRIGGER AS $ous_delete_log$
+    DECLARE
+    original TEXT;
+    BEGIN
+        -- Check for which setting is being updated, and log it.
+        SELECT INTO original value FROM actor.org_unit_setting WHERE name = OLD.name AND org_unit = OLD.org_unit;
+                
+        INSERT INTO config.org_unit_setting_type_log (org,original_value,new_value,field_name) VALUES (OLD.org_unit, original, 'null', OLD.name);
+        
+        RETURN OLD;
+    END;
+$ous_delete_log$ LANGUAGE plpgsql;    
+
+CREATE TRIGGER log_ous_del
+    BEFORE DELETE ON actor.org_unit_setting
+    FOR EACH ROW EXECUTE PROCEDURE ous_delete_log();
+
 COMMIT;

commit 5d898ed0f7bd7128e8cffd596ecc6a4353a9fe02
Author: Thomas Berezansky <tsbere at mvlc.org>
Date:   Thu Sep 8 14:27:48 2011 -0400

    CLEANUP ALL THE COUST and fix history view
    
    Move all COUST seed values to the same insert statement in 950.data.seed-values.sql
    Make data upgrade file do *all* the changes that happen in the seed values
    Add groups to some of the new settings since Joseph looked at the list
    Make history view escape &, <, and > before showing values to prevent HTML from being parsed
    
    Signed-off-by: Thomas Berezansky <tsbere at mvlc.org>
    Signed-off-by: Jason Etheridge <jason at esilibrary.com>

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 af06103..5527735 100644
--- a/Open-ILS/src/sql/Pg/950.data.seed-values.sql
+++ b/Open-ILS/src/sql/Pg/950.data.seed-values.sql
@@ -2336,615 +2336,2033 @@ 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');
 
+-- 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')),
+('gui', oils_i18n_gettext('config.settings_group.gui', 'GUI', 'coust', 'label')),
+('lib', oils_i18n_gettext('config.settings_group.lib', 'Library', 'coust', 'label')),
+('sec', oils_i18n_gettext('config.settings_group.sec', 'Security', 'coust', 'label')),
+('cat', oils_i18n_gettext('config.settings_group.cat', 'Cataloging', 'coust', 'label')),
+('holds', oils_i18n_gettext('config.settings_group.holds', 'Holds', 'coust', 'label')),
+('circ', oils_i18n_gettext('config.settings_group.circulation', 'Circulation', 'coust', 'label')),
+('self', oils_i18n_gettext('config.settings_group.self', 'Self Check', 'coust', 'label')),
+('opac', oils_i18n_gettext('config.settings_group.opac', 'OPAC', 'coust', 'label')),
+('prog', oils_i18n_gettext('config.settings_group.program', 'Program', 'coust', 'label')),
+('glob', oils_i18n_gettext('config.settings_group.global', 'Global', 'coust', 'label')),
+('finance', oils_i18n_gettext('config.settings_group.finances', 'Finanaces', 'coust', 'label')),
+('credit', oils_i18n_gettext('config.settings_group.ccp', 'Credit Card Processing', 'coust', 'label')),
+('serial', oils_i18n_gettext('config.settings_group.serial', 'Serials', 'coust', 'label')),
+('recall', oils_i18n_gettext('config.settings_group.recall', 'Recalls', 'coust', 'label')),
+('booking', oils_i18n_gettext('config.settings_group.booking', 'Booking', 'coust', 'label')),
+('offline', oils_i18n_gettext('config.settings_group.offline', 'Offline', 'coust', 'label')),
+('receipt_template', oils_i18n_gettext('config.settings_group.receipt_template', 'Receipt Template', 'coust', 'label'));
+
+
+-- org_unit setting types
+INSERT into config.org_unit_setting_type
+( name, grp, label, description, datatype, fm_class ) VALUES
+
+( 'acq.copy_creator_uses_receiver', 'lib',
+    oils_i18n_gettext('acq.copy_creator_uses_receiver',
+        'Set copy creator as receiver',
+        'coust', 'label'),
+    oils_i18n_gettext('acq.copy_creator_uses_receiver',
+        'When receiving a copy in acquisitions, set the copy "creator" to be the staff that received the copy',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'acq.default_circ_modifier', 'lib',
+    oils_i18n_gettext('acq.default_circ_modifier',
+        'Default circulation modifier',
+        'coust', 'label'),
+    oils_i18n_gettext('acq.default_circ_modifier',
+        'Default circulation modifier',
+        'coust', 'description'),
+    'string', null)
+
+,( 'acq.default_copy_location', 'lib',
+    oils_i18n_gettext('acq.default_copy_location',
+        'Default copy location',
+        'coust', 'label'),
+    oils_i18n_gettext('acq.default_copy_location',
+        'Default copy location',
+        'coust', 'description'),
+    'link', 'acpl')
+
+,( 'acq.fund.balance_limit.block', 'finance',
+    oils_i18n_gettext('acq.fund.balance_limit.block',
+        'Fund Spending Limit for Block',
+        'coust', 'label'),
+    oils_i18n_gettext('acq.fund.balance_limit.block',
+        'When the amount remaining in the fund, including spent money and encumbrances, goes below this percentage, attempts to spend from the fund will be blocked.',
+        'coust', 'description'),
+    'integer', null)
+
+,( 'acq.fund.balance_limit.warn', 'finance',
+    oils_i18n_gettext('acq.fund.balance_limit.warn',
+        'Fund Spending Limit for Warning',
+        'coust', 'label'),
+    oils_i18n_gettext('acq.fund.balance_limit.warn',
+        'When the amount remaining in the fund, including spent money and encumbrances, goes below this percentage, attempts to spend from the fund will result in a warning to the staff.',
+        'coust', 'description'),
+    'integer', null)
+
+,( 'acq.holds.allow_holds_from_purchase_request', 'lib',
+    oils_i18n_gettext('acq.holds.allow_holds_from_purchase_request',
+        'Allows patrons to create automatic holds from purchase requests.',
+        'coust', 'label'),
+    oils_i18n_gettext('acq.holds.allow_holds_from_purchase_request',
+        'Allows patrons to create automatic holds from purchase requests.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'acq.tmp_barcode_prefix', 'lib',
+    oils_i18n_gettext('acq.tmp_barcode_prefix',
+        'Temporary barcode prefix',
+        'coust', 'label'),
+    oils_i18n_gettext('acq.tmp_barcode_prefix',
+        'Temporary barcode prefix',
+        'coust', 'description'),
+    'string', null)
+
+,( 'acq.tmp_callnumber_prefix', 'lib',
+    oils_i18n_gettext('acq.tmp_callnumber_prefix',
+        'Temporary call number prefix',
+        'coust', 'label'),
+    oils_i18n_gettext('acq.tmp_callnumber_prefix',
+        'Temporary call number prefix',
+        'coust', 'description'),
+    'string', null)
+
+,( 'auth.opac_timeout', 'sec',
+    oils_i18n_gettext('auth.opac_timeout',
+        'OPAC Inactivity Timeout (in seconds)',
+        'coust', 'label'),
+    oils_i18n_gettext('auth.opac_timeout',
+        'OPAC Inactivity Timeout (in seconds)',
+        'coust', 'description'),
+    'integer', null)
+
+,( 'auth.persistent_login_interval', 'sec',
+    oils_i18n_gettext('auth.persistent_login_interval',
+        'Persistent Login Duration',
+        'coust', 'label'),
+    oils_i18n_gettext('auth.persistent_login_interval',
+        'How long a persistent login lasts.  E.g. ''2 weeks''',
+        'coust', 'description'),
+    'interval', null)
+
+,( 'auth.staff_timeout', 'sec',
+    oils_i18n_gettext('auth.staff_timeout',
+        'Staff Login Inactivity Timeout (in seconds)',
+        'coust', 'label'),
+    oils_i18n_gettext('auth.staff_timeout',
+        'Staff Login Inactivity Timeout (in seconds)',
+        'coust', 'description'),
+    'integer', null)
+
+,( 'booking.allow_email_notify', 'booking',
+    oils_i18n_gettext('booking.allow_email_notify',
+        'Allow Email Notify',
+        'coust', 'label'),
+    oils_i18n_gettext('booking.allow_email_notify',
+        'Permit email notification when a reservation is ready for pickup.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'cat.bib.alert_on_empty', 'gui',
+    oils_i18n_gettext('cat.bib.alert_on_empty',
+        'Alert on empty bib records',
+        'coust', 'label'),
+    oils_i18n_gettext('cat.bib.alert_on_empty',
+        'Alert staff when the last copy for a record is being deleted',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'cat.bib.delete_on_no_copy_via_acq_lineitem_cancel', 'cat',
+    oils_i18n_gettext('cat.bib.delete_on_no_copy_via_acq_lineitem_cancel',
+        'Delete bib if all copies are deleted via Acquisitions lineitem cancellation.',
+        'coust', 'label'),
+    oils_i18n_gettext('cat.bib.delete_on_no_copy_via_acq_lineitem_cancel',
+        'Delete bib if all copies are deleted via Acquisitions lineitem cancellation.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'cat.bib.keep_on_empty', 'prog',
+    oils_i18n_gettext('cat.bib.keep_on_empty',
+        'Retain empty bib records',
+        'coust', 'label'),
+    oils_i18n_gettext('cat.bib.keep_on_empty',
+        'Retain a bib record even when all attached copies are deleted',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'cat.default_classification_scheme', 'cat',
+    oils_i18n_gettext('cat.default_classification_scheme',
+        'Default Classification Scheme',
+        'coust', 'label'),
+    oils_i18n_gettext('cat.default_classification_scheme',
+        'Defines the default classification scheme for new call numbers: 1 = Generic; 2 = Dewey; 3 = LC',
+        'coust', 'description'),
+    'link', 'acnc')
+
+,( 'cat.default_copy_status_fast', 'cat',
+    oils_i18n_gettext('cat.default_copy_status_fast',
+        'Default copy status (fast add)',
+        'coust', 'label'),
+    oils_i18n_gettext('cat.default_copy_status_fast',
+        'Default status when a copy is created using the "Fast Add" interface.',
+        'coust', 'description'),
+    'link', 'ccs')
+
+,( 'cat.default_copy_status_normal', 'cat',
+    oils_i18n_gettext('cat.default_copy_status_normal',
+        'Default copy status (normal)',
+        'coust', 'label'),
+    oils_i18n_gettext('cat.default_copy_status_normal',
+        'Default status when a copy is created using the normal volume/copy creator interface.',
+        'coust', 'description'),
+    'link', 'ccs')
+
+,( 'cat.default_item_price', 'finance',
+    oils_i18n_gettext('cat.default_item_price',
+        'Default Item Price',
+        'coust', 'label'),
+    oils_i18n_gettext('cat.default_item_price',
+        'Default Item Price',
+        'coust', 'description'),
+    'currency', null)
+
+,( 'cat.label.font.family', 'cat',
+    oils_i18n_gettext('cat.label.font.family',
+        'Spine and pocket label font family',
+        'coust', 'label'),
+    oils_i18n_gettext('cat.label.font.family',
+        'Set the preferred font family for spine and pocket labels. You can specify a list of fonts, separated by commas, in order of preference; the system will use the first font it finds with a matching name. For example, "Arial, Helvetica, serif".',
+        'coust', 'description'),
+    'string', null)
+
+,( 'cat.label.font.size', 'cat',
+    oils_i18n_gettext('cat.label.font.size',
+        'Spine and pocket label font size',
+        'coust', 'label'),
+    oils_i18n_gettext('cat.label.font.size',
+        'Set the default font size for spine and pocket labels',
+        'coust', 'description'),
+    'integer', null)
+
+,( 'cat.label.font.weight', 'cat',
+    oils_i18n_gettext('cat.label.font.weight',
+        'Spine and pocket label font weight',
+        'coust', 'label'),
+    oils_i18n_gettext('cat.label.font.weight',
+        'Set the preferred font weight for spine and pocket labels. You can specify "normal", "bold", "bolder", or "lighter".',
+        'coust', 'description'),
+    'string', null)
+
+,( 'cat.marc_control_number_identifier', 'cat',
+    oils_i18n_gettext('cat.marc_control_number_identifier',
+        'Defines the control number identifier used in 003 and 035 fields.',
+        'coust', 'label'),
+    oils_i18n_gettext('cat.marc_control_number_identifier',
+        'Cat: Defines the control number identifier used in 003 and 035 fields.',
+        'coust', 'description'),
+    'string', null)
+
+,( 'cat.spine.line.height', 'cat',
+    oils_i18n_gettext('cat.spine.line.height',
+        'Spine label maximum lines',
+        'coust', 'label'),
+    oils_i18n_gettext('cat.spine.line.height',
+        'Set the default maximum number of lines for spine labels.',
+        'coust', 'description'),
+    'integer', null)
+
+,( 'cat.spine.line.margin', 'cat',
+    oils_i18n_gettext('cat.spine.line.margin',
+        'Spine label left margin',
+        'coust', 'label'),
+    oils_i18n_gettext('cat.spine.line.margin',
+        'Set the left margin for spine labels in number of characters.',
+        'coust', 'description'),
+    'integer', null)
+
+,( 'cat.spine.line.width', 'cat',
+    oils_i18n_gettext('cat.spine.line.width',
+        'Spine label line width',
+        'coust', 'label'),
+    oils_i18n_gettext('cat.spine.line.width',
+        'Set the default line width for spine labels in number of characters. This specifies the boundary at which lines must be wrapped.',
+        'coust', 'description'),
+    'integer', null)
+
+,( 'cat.volume.delete_on_empty', 'cat',
+    oils_i18n_gettext('cat.volume.delete_on_empty',
+        'Delete volume with last copy',
+        'coust', 'label'),
+    oils_i18n_gettext('cat.volume.delete_on_empty',
+        'Automatically delete a volume when the last linked copy is deleted',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.auto_hide_patron_summary', 'gui',
+    oils_i18n_gettext('circ.auto_hide_patron_summary',
+        'Toggle off the patron summary sidebar after first view.',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.auto_hide_patron_summary',
+        'When true, the patron summary sidebar will collapse after a new patron sub-interface is selected.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.block_renews_for_holds', 'holds',
+    oils_i18n_gettext('circ.block_renews_for_holds',
+        'Block Renewal of Items Needed for Holds',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.block_renews_for_holds',
+        'When an item could fulfill a hold, do not allow the current patron to renew',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.booking_reservation.default_elbow_room', 'booking',
+    oils_i18n_gettext('circ.booking_reservation.default_elbow_room',
+        'Booking elbow room',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.booking_reservation.default_elbow_room',
+        'Elbow room specifies how far in the future you must make a reservation on an item if that item will have to transit to reach its pickup location.  It secondarily defines how soon a reservation on a given item must start before the check-in process will opportunistically capture it for the reservation shelf.',
+        'coust', 'description'),
+    'interval', null)
+
+,( 'circ.charge_lost_on_zero', 'finance',
+    oils_i18n_gettext('circ.charge_lost_on_zero',
+        'Charge lost on zero',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.charge_lost_on_zero',
+        'Charge lost on zero',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.charge_on_damaged', 'finance',
+    oils_i18n_gettext('circ.charge_on_damaged',
+        'Charge item price when marked damaged',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.charge_on_damaged',
+        'Charge item price when marked damaged',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.checkout_auto_renew_age', 'circ',
+    oils_i18n_gettext('circ.checkout_auto_renew_age',
+        'Checkout auto renew age',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.checkout_auto_renew_age',
+        'When an item has been checked out for at least this amount of time, an attempt to check out the item to the patron that it is already checked out to will simply renew the circulation',
+        'coust', 'description'),
+    'interval', null)
+
+,( 'circ.checkout_fills_related_hold', 'circ',
+    oils_i18n_gettext('circ.checkout_fills_related_hold',
+        'Checkout Fills Related Hold',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.checkout_fills_related_hold',
+        'When a patron checks out an item and they have no holds that directly target the item, the system will attempt to find a hold for the patron that could be fulfilled by the checked out item and fulfills it',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.checkout_fills_related_hold_exact_match_only', 'circ',
+    oils_i18n_gettext('circ.checkout_fills_related_hold_exact_match_only',
+        'Checkout Fills Related Hold On Valid Copy Only',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.checkout_fills_related_hold_exact_match_only',
+        'When filling related holds on checkout only match on items that are valid for opportunistic capture for the hold. Without this set a Title or Volume hold could match when the item is not holdable. With this set only holdable items will match.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.claim_never_checked_out.mark_missing', 'lib',
+    oils_i18n_gettext('circ.claim_never_checked_out.mark_missing',
+        'Claim Never Checked Out: Mark copy as missing',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.claim_never_checked_out.mark_missing',
+        'When a circ is marked as claims-never-checked-out, mark the copy as missing',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.claim_return.copy_status', 'lib',
+    oils_i18n_gettext('circ.claim_return.copy_status',
+        'Claim Return Copy Status',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.claim_return.copy_status',
+        'Claims returned copies are put into this status.  Default is to leave the copy in the Checked Out status',
+        'coust', 'description'),
+    'link', 'ccs')
+
+,( 'circ.damaged.void_ovedue', 'lib',
+    oils_i18n_gettext('circ.damaged.void_ovedue',
+        'Mark item damaged voids overdues',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.damaged.void_ovedue',
+        'When an item is marked damaged, overdue fines on the most recent circulation are voided.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.damaged_item_processing_fee', 'finance',
+    oils_i18n_gettext('circ.damaged_item_processing_fee',
+        'Charge processing fee for damaged items',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.damaged_item_processing_fee',
+        'Charge processing fee for damaged items',
+        'coust', 'description'),
+    'currency', null)
+
+,( 'circ.do_not_tally_claims_returned', 'circ',
+    oils_i18n_gettext('circ.do_not_tally_claims_returned',
+        'Do not include outstanding Claims Returned circulations in lump sum tallies in Patron Display.',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.do_not_tally_claims_returned',
+        'In the Patron Display interface, the number of total active circulations for a given patron is presented in the Summary sidebar and underneath the Items Out navigation button.  This setting will prevent Claims Returned circulations from counting toward these tallies.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.hold_boundary.hard', 'holds',
+    oils_i18n_gettext('circ.hold_boundary.hard',
+        'Hard boundary',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.hold_boundary.hard',
+        'Holds: Hard boundary',
+        'coust', 'description'),
+    'integer', null)
+
+,( 'circ.hold_boundary.soft', 'holds',
+    oils_i18n_gettext('circ.hold_boundary.soft',
+        'Soft boundary',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.hold_boundary.soft',
+        'Holds: Soft boundary',
+        'coust', 'description'),
+    'integer', null)
+
+,( 'circ.hold_expire_alert_interval', 'holds',
+    oils_i18n_gettext('circ.hold_expire_alert_interval',
+        'Expire Alert Interval',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.hold_expire_alert_interval',
+        'Amount of time before a hold expires at which point the patron should be alerted. Examples: "5 days", "1 hour"',
+        'coust', 'description'),
+    'interval', null)
+
+,( 'circ.hold_expire_interval', 'holds',
+    oils_i18n_gettext('circ.hold_expire_interval',
+        'Expire Interval',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.hold_expire_interval',
+        'Amount of time after a hold is placed before the hold expires.  Example "100 days"',
+        'coust', 'description'),
+    'interval', null)
+
+,( 'circ.hold_shelf_status_delay', 'circ',
+    oils_i18n_gettext('circ.hold_shelf_status_delay',
+        'Hold Shelf Status Delay',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.hold_shelf_status_delay',
+        'The purpose is to provide an interval of time after an item goes into the on-holds-shelf status before it appears to patrons that it is actually on the holds shelf.  This gives staff time to process the item before it shows as ready-for-pickup. Examples: "5 days", "1 hour"',
+        'coust', 'description'),
+    'interval', null)
+
+,( 'circ.hold_stalling.soft', 'holds',
+    oils_i18n_gettext('circ.hold_stalling.soft',
+        'Soft stalling interval',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.hold_stalling.soft',
+        'How long to wait before allowing remote items to be opportunistically captured for a hold.  Example "5 days"',
+        'coust', 'description'),
+    'interval', null)
+
+,( 'circ.hold_stalling_hard', 'holds',
+    oils_i18n_gettext('circ.hold_stalling_hard',
+        'Hard stalling interval',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.hold_stalling_hard',
+        'Holds: Hard stalling interval',
+        'coust', 'description'),
+    'interval', null)
+
+,( 'circ.holds.age_protect.active_date', 'holds',
+    oils_i18n_gettext('circ.holds.age_protect.active_date',
+        'Use Active Date for Age Protection',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.holds.age_protect.active_date',
+        'When calculating age protection rules use the active date instead of the creation date.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.holds.behind_desk_pickup_supported', 'holds',
+    oils_i18n_gettext('circ.holds.behind_desk_pickup_supported',
+        'Behind Desk Pickup Supported',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.holds.behind_desk_pickup_supported',
+        'If a branch supports both a public holds shelf and behind-the-desk pickups, set this value to true.  This gives the patron the option to enable behind-the-desk pickups for their holds',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.holds.canceled.display_age', 'holds',
+    oils_i18n_gettext('circ.holds.canceled.display_age',
+        'Canceled holds display age',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.holds.canceled.display_age',
+        'Show all canceled holds that were canceled within this amount of time',
+        'coust', 'description'),
+    'interval', null)
+
+,( 'circ.holds.canceled.display_count', 'holds',
+    oils_i18n_gettext('circ.holds.canceled.display_count',
+        'Canceled holds display count',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.holds.canceled.display_count',
+        'How many canceled holds to show in patron holds interfaces',
+        'coust', 'description'),
+    'integer', null)
+
+,( 'circ.holds.clear_shelf.copy_status', 'holds',
+    oils_i18n_gettext('circ.holds.clear_shelf.copy_status',
+        'Clear shelf copy status',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.holds.clear_shelf.copy_status',
+        'Any copies that have not been put into reshelving, in-transit, or on-holds-shelf (for a new hold) during the clear shelf process will be put into this status.  This is basically a purgatory status for copies waiting to be pulled from the shelf and processed by hand',
+        'coust', 'description'),
+    'link', 'ccs')
+
+,( 'circ.holds.clear_shelf.no_capture_holds', 'holds',
+    oils_i18n_gettext('circ.holds.clear_shelf.no_capture_holds',
+        'Bypass hold capture during clear shelf process',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.holds.clear_shelf.no_capture_holds',
+        'During the clear shelf process, avoid capturing new holds on cleared items.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.holds.default_estimated_wait_interval', 'holds',
+    oils_i18n_gettext('circ.holds.default_estimated_wait_interval',
+        'Default Estimated Wait',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.holds.default_estimated_wait_interval',
+        'When predicting the amount of time a patron will be waiting for a hold to be fulfilled, this is the default estimated length of time to assume an item will be checked out. Examples: "3 weeks", "7 days"',
+        'coust', 'description'),
+    'interval', null)
+
+,( 'circ.holds.default_shelf_expire_interval', 'holds',
+    oils_i18n_gettext('circ.holds.default_shelf_expire_interval',
+        'Default hold shelf expire interval',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.holds.default_shelf_expire_interval',
+        '',
+        'coust', 'description'),
+    'interval', null)
+
+,( 'circ.holds.expired_patron_block', 'circ',
+    oils_i18n_gettext('circ.holds.expired_patron_block',
+        'Block hold request if hold recipient privileges have expired',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.holds.expired_patron_block',
+        'Block hold request if hold recipient privileges have expired',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.holds.hold_has_copy_at.alert', 'holds',
+    oils_i18n_gettext('circ.holds.hold_has_copy_at.alert',
+        'Has Local Copy Alert',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.holds.hold_has_copy_at.alert',
+        'If there is an available copy at the requesting library that could fulfill a hold during hold placement time, alert the patron',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.holds.hold_has_copy_at.block', 'holds',
+    oils_i18n_gettext('circ.holds.hold_has_copy_at.block',
+        'Has Local Copy Block',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.holds.hold_has_copy_at.block',
+        'If there is an available copy at the requesting library that could fulfill a hold during hold placement time, do not allow the hold to be placed',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.holds.max_org_unit_target_loops', 'holds',
+    oils_i18n_gettext('circ.holds.max_org_unit_target_loops',
+        'Maximum library target attempts',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.holds.max_org_unit_target_loops',
+        'When this value is set and greater than 0, the system will only attempt to find a copy at each possible branch the configured number of times',
+        'coust', 'description'),
+    'integer', null)
+
+,( 'circ.holds.min_estimated_wait_interval', 'holds',
+    oils_i18n_gettext('circ.holds.min_estimated_wait_interval',
+        'Minimum Estimated Wait',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.holds.min_estimated_wait_interval',
+        'When predicting the amount of time a patron will be waiting for a hold to be fulfilled, this is the minimum estimated length of time to assume an item will be checked out. Examples: "2 weeks", "5 days"',
+        'coust', 'description'),
+    'interval', null)
+
+,( 'circ.holds.org_unit_target_weight', 'holds',
+    oils_i18n_gettext('circ.holds.org_unit_target_weight',
+        'Org Unit Target Weight',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.holds.org_unit_target_weight',
+        'Org Units can be organized into hold target groups based on a weight.  Potential copies from org units with the same weight are chosen at random.',
+        'coust', 'description'),
+    'integer', null)
+
+,( 'circ.holds.recall_fine_rules', 'recall',
+    oils_i18n_gettext('circ.holds.recall_fine_rules',
+        'An array of fine amount, fine interval, and maximum fine.',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.holds.recall_fine_rules',
+        'Recalls: An array of fine amount, fine interval, and maximum fine. For example, to specify a new fine rule of $5.00 per day, with a maximum fine of $50.00, use: [5.00,"1 day",50.00]',
+        'coust', 'description'),
+    'array', null)
+
+,( 'circ.holds.recall_return_interval', 'recall',
+    oils_i18n_gettext('circ.holds.recall_return_interval',
+        'Truncated loan period.',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.holds.recall_return_interval',
+        'Recalls: When a recall is triggered, this defines the adjusted loan period for the item. For example, "4 days" or "1 week".',
+        'coust', 'description'),
+    'interval', null)
+
+,( 'circ.holds.recall_threshold', 'recall',
+    oils_i18n_gettext('circ.holds.recall_threshold',
+        'Circulation duration that triggers a recall.',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.holds.recall_threshold',
+        'Recalls: A hold placed on an item with a circulation duration longer than this will trigger a recall. For example, "14 days" or "3 weeks".',
+        'coust', 'description'),
+    'interval', null)
+
+,( 'circ.holds.target_holds_by_org_unit_weight', 'holds',
+    oils_i18n_gettext('circ.holds.target_holds_by_org_unit_weight',
+        'Use weight-based hold targeting',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.holds.target_holds_by_org_unit_weight',
+        'Use library weight based hold targeting',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.holds.target_skip_me', 'holds',
+    oils_i18n_gettext('circ.holds.target_skip_me',
+        'Skip For Hold Targeting',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.holds.target_skip_me',
+        'When true, don''t target any copies at this org unit for holds',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.holds.uncancel.reset_request_time', 'holds',
+    oils_i18n_gettext('circ.holds.uncancel.reset_request_time',
+        'Reset request time on un-cancel',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.holds.uncancel.reset_request_time',
+        'When a hold is uncanceled, reset the request time to push it to the end of the queue',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.holds_fifo', 'holds',
+    oils_i18n_gettext('circ.holds_fifo',
+        'FIFO',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.holds_fifo',
+        'Force holds to a more strict First-In, First-Out capture',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.item_checkout_history.max', 'gui',
+    oils_i18n_gettext('circ.item_checkout_history.max',
+        'Maximum previous checkouts displayed',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.item_checkout_history.max',
+        'This is the maximum number of previous circulations the staff client will display when investigating item details',
+        'coust', 'description'),
+    'integer', null)
+
+,( 'circ.lost.generate_overdue_on_checkin', 'circ',
+    oils_i18n_gettext('circ.lost.generate_overdue_on_checkin',
+        'Lost Checkin Generates New Overdues',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.lost.generate_overdue_on_checkin',
+        'Enabling this setting causes retroactive creation of not-yet-existing overdue fines on lost item checkin, up to the point of checkin time (or max fines is reached).  This is different than "restore overdue on lost", because it only creates new overdue fines.  Use both settings together to get the full complement of overdue fines for a lost item',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.lost_immediately_available', 'circ',
+    oils_i18n_gettext('circ.lost_immediately_available',
+        'Lost items usable on checkin',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.lost_immediately_available',
+        'Lost items are usable on checkin instead of going ''home'' first',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.lost_materials_processing_fee', 'finance',
+    oils_i18n_gettext('circ.lost_materials_processing_fee',
+        'Lost Materials Processing Fee',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.lost_materials_processing_fee',
+        'Lost Materials Processing Fee',
+        'coust', 'description'),
+    'currency', null)
+
+,( 'circ.max_accept_return_of_lost', 'circ',
+    oils_i18n_gettext('circ.max_accept_return_of_lost',
+        'Void lost max interval',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.max_accept_return_of_lost',
+        'Items that have been lost this long will not result in voided billings when returned.  E.g. ''6 months''',
+        'coust', 'description'),
+    'interval', null)
+
+,( 'circ.max_fine.cap_at_price', 'circ',
+    oils_i18n_gettext('circ.max_fine.cap_at_price',
+        'Cap Max Fine at Item Price',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.max_fine.cap_at_price',
+        'This prevents the system from charging more than the item price in overdue fines',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.max_patron_claim_return_count', 'circ',
+    oils_i18n_gettext('circ.max_patron_claim_return_count',
+        'Max Patron Claims Returned Count',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.max_patron_claim_return_count',
+        'When this count is exceeded, a staff override is required to mark the item as claims returned',
+        'coust', 'description'),
+    'integer', null)
+
+,( 'circ.missing_pieces.copy_status', 'circ',
+    oils_i18n_gettext('circ.missing_pieces.copy_status',
+        'Item Status for Missing Pieces',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.missing_pieces.copy_status',
+        'This is the Item Status to use for items that have been marked or scanned as having Missing Pieces.  In the absence of this setting, the Damaged status is used.',
+        'coust', 'description'),
+    'link', 'ccs')
+
+,( 'circ.obscure_dob', 'sec',
+    oils_i18n_gettext('circ.obscure_dob',
+        'Obscure the Date of Birth field',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.obscure_dob',
+        'When true, the Date of Birth column in patron lists will default to Not Visible, and in the Patron Summary sidebar the value will display as <Hidden> unless the field label is clicked.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.offline.skip_checkin_if_newer_status_changed_time', 'offline',
+    oils_i18n_gettext('circ.offline.skip_checkin_if_newer_status_changed_time',
+        'Skip offline checkin if newer item Status Changed Time.',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.offline.skip_checkin_if_newer_status_changed_time',
+        'Skip offline checkin transaction (raise exception when processing) if item Status Changed Time is newer than the recorded transaction time.  WARNING: The Reshelving to Available status rollover will trigger this.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.offline.skip_checkout_if_newer_status_changed_time', 'offline',
+    oils_i18n_gettext('circ.offline.skip_checkout_if_newer_status_changed_time',
+        'Skip offline checkout if newer item Status Changed Time.',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.offline.skip_checkout_if_newer_status_changed_time',
+        'Skip offline checkout transaction (raise exception when processing) if item Status Changed Time is newer than the recorded transaction time.  WARNING: The Reshelving to Available status rollover will trigger this.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.offline.skip_renew_if_newer_status_changed_time', 'offline',
+    oils_i18n_gettext('circ.offline.skip_renew_if_newer_status_changed_time',
+        'Skip offline renewal if newer item Status Changed Time.',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.offline.skip_renew_if_newer_status_changed_time',
+        'Skip offline renewal transaction (raise exception when processing) if item Status Changed Time is newer than the recorded transaction time.  WARNING: The Reshelving to Available status rollover will trigger this.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.offline.username_allowed', 'sec',
+    oils_i18n_gettext('circ.offline.username_allowed',
+        'Offline: Patron Usernames Allowed',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.offline.username_allowed',
+        'During offline circulations, allow patrons to identify themselves with usernames in addition to barcode.  For this setting to work, a barcode format must also be defined',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.password_reset_request_per_user_limit', 'sec',
+    oils_i18n_gettext('circ.password_reset_request_per_user_limit',
+        'Maximum concurrently active self-serve password reset requests per user',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.password_reset_request_per_user_limit',
+        'When a user has more than this number of concurrently active self-serve password reset requests for their account, prevent the user from creating any new self-serve password reset requests until the number of active requests for the user drops back below this number.',
+        'coust', 'description'),
+    'string', null)
+
+,( 'circ.password_reset_request_requires_matching_email', 'circ',
+    oils_i18n_gettext('circ.password_reset_request_requires_matching_email',
+        'Require matching email address for password reset requests',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.password_reset_request_requires_matching_email',
+        'Require matching email address for password reset requests',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.password_reset_request_throttle', 'sec',
+    oils_i18n_gettext('circ.password_reset_request_throttle',
+        'Maximum concurrently active self-serve password reset requests',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.password_reset_request_throttle',
+        'Prevent the creation of new self-serve password reset requests until the number of active requests drops back below this number.',
+        'coust', 'description'),
+    'string', null)
+
+,( 'circ.password_reset_request_time_to_live', 'sec',
+    oils_i18n_gettext('circ.password_reset_request_time_to_live',
+        'Self-serve password reset request time-to-live',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.password_reset_request_time_to_live',
+        'Length of time (in seconds) a self-serve password reset request should remain active.',
+        'coust', 'description'),
+    'string', null)
+
+,( 'circ.patron_edit.clone.copy_address', 'circ',
+    oils_i18n_gettext('circ.patron_edit.clone.copy_address',
+        'Patron Registration: Cloned patrons get address copy',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.patron_edit.clone.copy_address',
+        'In the Patron editor, copy addresses from the cloned user instead of linking directly to the address',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.patron_invalid_address_apply_penalty', 'circ',
+    oils_i18n_gettext('circ.patron_invalid_address_apply_penalty',
+        'Invalid patron address penalty',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.patron_invalid_address_apply_penalty',
+        'When set, if a patron address is set to invalid, a penalty is applied.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.pre_cat_copy_circ_lib', 'lib',
+    oils_i18n_gettext('circ.pre_cat_copy_circ_lib',
+        'Pre-cat Item Circ Lib',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.pre_cat_copy_circ_lib',
+        'Override the default circ lib of "here" with a pre-configured circ lib for pre-cat items.  The value should be the "shortname" (aka policy name) of the org unit',
+        'coust', 'description'),
+    'string', null)
+
+,( 'circ.reshelving_complete.interval', 'lib',
+    oils_i18n_gettext('circ.reshelving_complete.interval',
+        'Change reshelving status interval',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.reshelving_complete.interval',
+        'Amount of time to wait before changing an item from "reshelving" status to "available".  Examples: "1 day", "6 hours"',
+        'coust', 'description'),
+    'interval', null)
+
+,( 'circ.restore_overdue_on_lost_return', 'circ',
+    oils_i18n_gettext('circ.restore_overdue_on_lost_return',
+        'Restore overdues on lost item return',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.restore_overdue_on_lost_return',
+        'Restore overdue fines on lost item return',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.selfcheck.alert.popup', 'self',
+    oils_i18n_gettext('circ.selfcheck.alert.popup',
+        'Pop-up alert for errors',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.selfcheck.alert.popup',
+        'If true, checkout/renewal errors will cause a pop-up window in addition to the on-screen message',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.selfcheck.alert.sound', 'self',
+    oils_i18n_gettext('circ.selfcheck.alert.sound',
+        'Audio Alerts',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.selfcheck.alert.sound',
+        'Use audio alerts for selfcheck events',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.selfcheck.auto_override_checkout_events', 'self',
+    oils_i18n_gettext('circ.selfcheck.auto_override_checkout_events',
+        'Selfcheck override events list',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.selfcheck.auto_override_checkout_events',
+        'List of checkout/renewal events that the selfcheck interface should automatically override instead instead of alerting and stopping the transaction',
+        'coust', 'description'),
+    'array', null)
+
+,( 'circ.selfcheck.block_checkout_on_copy_status', 'self',
+    oils_i18n_gettext('circ.selfcheck.block_checkout_on_copy_status',
+        'Block copy checkout status',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.selfcheck.block_checkout_on_copy_status',
+        'List of copy status IDs that will block checkout even if the generic COPY_NOT_AVAILABLE event is overridden',
+        'coust', 'description'),
+    'array', null)
+
+,( 'circ.selfcheck.patron_login_timeout', 'self',
+    oils_i18n_gettext('circ.selfcheck.patron_login_timeout',
+        'Patron Login Timeout (in seconds)',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.selfcheck.patron_login_timeout',
+        'Number of seconds of inactivity before the patron is logged out of the selfcheck interface',
+        'coust', 'description'),
+    'integer', null)
+
+,( 'circ.selfcheck.patron_password_required', 'self',
+    oils_i18n_gettext('circ.selfcheck.patron_password_required',
+        'Require Patron Password',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.selfcheck.patron_password_required',
+        'Patron must log in with barcode and password at selfcheck station',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.selfcheck.require_patron_password', 'self',
+    oils_i18n_gettext('circ.selfcheck.require_patron_password',
+        'Require patron password',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.selfcheck.require_patron_password',
+        'If true, patrons will be required to enter their password in addition to their username/barcode to log into the selfcheck interface',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.selfcheck.workstation_required', 'self',
+    oils_i18n_gettext('circ.selfcheck.workstation_required',
+        'Workstation Required',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.selfcheck.workstation_required',
+        'All selfcheck stations must use a workstation',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.staff_client.actor_on_checkout', 'circ',
+    oils_i18n_gettext('circ.staff_client.actor_on_checkout',
+        'Load patron from Checkout',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.staff_client.actor_on_checkout',
+        'When scanning barcodes into Checkout auto-detect if a new patron barcode is scanned and auto-load the new patron.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.staff_client.do_not_auto_attempt_print', 'prog',
+    oils_i18n_gettext('circ.staff_client.do_not_auto_attempt_print',
+        'Disable Automatic Print Attempt Type List',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.staff_client.do_not_auto_attempt_print',
+        'Disable automatic print attempts from staff client interfaces for the receipt types in this list.  Possible values: "Checkout", "Bill Pay", "Hold Slip", "Transit Slip", and "Hold/Transit Slip".  This is different from the Auto-Print checkbox in the pertinent interfaces in that it disables automatic print attempts altogether, rather than encouraging silent printing by suppressing the print dialog.  The Auto-Print checkbox in these interfaces have no effect on the behavior for this setting.  In the case of the Hold, Transit, and Hold/Transit slips, this also suppresses the alert dialogs that precede the print dialog (the ones that offer Print and Do Not Print as options).',
+        'coust', 'description'),
+    'array', null)
+
+,( 'circ.staff_client.receipt.alert_text', 'receipt_template',
+    oils_i18n_gettext('circ.staff_client.receipt.alert_text',
+        'Content of alert_text include',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.staff_client.receipt.alert_text',
+        'Text/HTML/Macros to be inserted into receipt templates in place of %INCLUDE(alert_text)%',
+        'coust', 'description'),
+    'string', null)
+
+,( 'circ.staff_client.receipt.event_text', 'receipt_template',
+    oils_i18n_gettext('circ.staff_client.receipt.event_text',
+        'Content of event_text include',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.staff_client.receipt.event_text',
+        'Text/HTML/Macros to be inserted into receipt templates in place of %INCLUDE(event_text)%',
+        'coust', 'description'),
+    'string', null)
+
+,( 'circ.staff_client.receipt.footer_text', 'receipt_template',
+    oils_i18n_gettext('circ.staff_client.receipt.footer_text',
+        'Content of footer_text include',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.staff_client.receipt.footer_text',
+        'Text/HTML/Macros to be inserted into receipt templates in place of %INCLUDE(footer_text)%',
+        'coust', 'description'),
+    'string', null)
+
+,( 'circ.staff_client.receipt.header_text', 'receipt_template',
+    oils_i18n_gettext('circ.staff_client.receipt.header_text',
+        'Content of header_text include',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.staff_client.receipt.header_text',
+        'Text/HTML/Macros to be inserted into receipt templates in place of %INCLUDE(header_text)%',
+        'coust', 'description'),
+    'string', null)
+
+,( 'circ.staff_client.receipt.notice_text', 'receipt_template',
+    oils_i18n_gettext('circ.staff_client.receipt.notice_text',
+        'Content of notice_text include',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.staff_client.receipt.notice_text',
+        'Text/HTML/Macros to be inserted into receipt templates in place of %INCLUDE(notice_text)%',
+        'coust', 'description'),
+    'string', null)
+
+,( 'circ.transit.min_checkin_interval', 'circ',
+    oils_i18n_gettext('circ.transit.min_checkin_interval',
+        'Minimum Transit Checkin Interval',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.transit.min_checkin_interval',
+        'In-Transit items checked in this close to the transit start time will be prevented from checking in',
+        'coust', 'description'),
+    'interval', null)
+
+,( 'circ.user_merge.deactivate_cards', 'circ',
+    oils_i18n_gettext('circ.user_merge.deactivate_cards',
+        'Patron Merge Deactivate Card',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.user_merge.deactivate_cards',
+        'Mark barcode(s) of subordinate user(s) in a patron merge as inactive',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.user_merge.delete_addresses', 'circ',
+    oils_i18n_gettext('circ.user_merge.delete_addresses',
+        'Patron Merge Address Delete',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.user_merge.delete_addresses',
+        'Delete address(es) of subordinate user(s) in a patron merge',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.user_merge.delete_cards', 'circ',
+    oils_i18n_gettext('circ.user_merge.delete_cards',
+        'Patron Merge Barcode Delete',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.user_merge.delete_cards',
+        'Delete barcode(s) of subordinate user(s) in a patron merge',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.void_lost_on_checkin', 'circ',
+    oils_i18n_gettext('circ.void_lost_on_checkin',
+        'Void lost item billing when returned',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.void_lost_on_checkin',
+        'Void lost item billing when returned',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.void_lost_proc_fee_on_checkin', 'circ',
+    oils_i18n_gettext('circ.void_lost_proc_fee_on_checkin',
+        'Void processing fee on lost item return',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.void_lost_proc_fee_on_checkin',
+        'Void processing fee when lost item returned',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'circ.void_overdue_on_lost', 'finance',
+    oils_i18n_gettext('circ.void_overdue_on_lost',
+        'Void overdue fines when items are marked lost',
+        'coust', 'label'),
+    oils_i18n_gettext('circ.void_overdue_on_lost',
+        'Void overdue fines when items are marked lost',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'credit.payments.allow', 'finance',
+    oils_i18n_gettext('credit.payments.allow',
+        'Allow Credit Card Payments',
+        'coust', 'label'),
+    oils_i18n_gettext('credit.payments.allow',
+        'If enabled, patrons will be able to pay fines accrued at this location via credit card',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'credit.processor.authorizenet.enabled', 'credit',
+    oils_i18n_gettext('credit.processor.authorizenet.enabled',
+        'Enable AuthorizeNet payments',
+        'coust', 'label'),
+    oils_i18n_gettext('credit.processor.authorizenet.enabled',
+        'Enable AuthorizeNet payments',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'credit.processor.authorizenet.login', 'credit',
+    oils_i18n_gettext('credit.processor.authorizenet.login',
+        'AuthorizeNet login',
+        'coust', 'label'),
+    oils_i18n_gettext('credit.processor.authorizenet.login',
+        'AuthorizeNet login',
+        'coust', 'description'),
+    'string', null)
+
+,( 'credit.processor.authorizenet.password', 'credit',
+    oils_i18n_gettext('credit.processor.authorizenet.password',
+        'AuthorizeNet password',
+        'coust', 'label'),
+    oils_i18n_gettext('credit.processor.authorizenet.password',
+        'AuthorizeNet password',
+        'coust', 'description'),
+    'string', null)
+
+,( 'credit.processor.authorizenet.server', 'credit',
+    oils_i18n_gettext('credit.processor.authorizenet.server',
+        'AuthorizeNet server',
+        'coust', 'label'),
+    oils_i18n_gettext('credit.processor.authorizenet.server',
+        'Required if using a developer/test account with AuthorizeNet',
+        'coust', 'description'),
+    'string', null)
+
+,( 'credit.processor.authorizenet.testmode', 'credit',
+    oils_i18n_gettext('credit.processor.authorizenet.testmode',
+        'AuthorizeNet test mode',
+        'coust', 'label'),
+    oils_i18n_gettext('credit.processor.authorizenet.testmode',
+        'AuthorizeNet test mode',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'credit.processor.default', 'credit',
+    oils_i18n_gettext('credit.processor.default',
+        'Name default credit processor',
+        'coust', 'label'),
+    oils_i18n_gettext('credit.processor.default',
+        'This might be "AuthorizeNet", "PayPal", etc.',
+        'coust', 'description'),
+    'string', null)
+
+,( 'credit.processor.payflowpro.enabled', 'credit',
+    oils_i18n_gettext('credit.processor.payflowpro.enabled',
+        'Enable PayflowPro payments',
+        'coust', 'label'),
+    oils_i18n_gettext('credit.processor.payflowpro.enabled',
+        'This is NOT the same thing as the settings labeled with just "PayPal."',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'credit.processor.payflowpro.login', 'credit',
+    oils_i18n_gettext('credit.processor.payflowpro.login',
+        'PayflowPro login/merchant ID',
+        'coust', 'label'),
+    oils_i18n_gettext('credit.processor.payflowpro.login',
+        'Often the same thing as the PayPal manager login',
+        'coust', 'description'),
+    'string', null)
+
+,( 'credit.processor.payflowpro.partner', 'credit',
+    oils_i18n_gettext('credit.processor.payflowpro.partner',
+        'PayflowPro partner',
+        'coust', 'label'),
+    oils_i18n_gettext('credit.processor.payflowpro.partner',
+        'Often "PayPal" or "VeriSign", sometimes others',
+        'coust', 'description'),
+    'string', null)
+
+,( 'credit.processor.payflowpro.password', 'credit',
+    oils_i18n_gettext('credit.processor.payflowpro.password',
+        'PayflowPro password',
+        'coust', 'label'),
+    oils_i18n_gettext('credit.processor.payflowpro.password',
+        'PayflowPro password',
+        'coust', 'description'),
+    'string', null)
+
+,( 'credit.processor.payflowpro.testmode', 'credit',
+    oils_i18n_gettext('credit.processor.payflowpro.testmode',
+        'PayflowPro test mode',
+        'coust', 'label'),
+    oils_i18n_gettext('credit.processor.payflowpro.testmode',
+        'Do not really process transactions, but stay in test mode - uses pilot-payflowpro.paypal.com instead of the usual host',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'credit.processor.payflowpro.vendor', 'credit',
+    oils_i18n_gettext('credit.processor.payflowpro.vendor',
+        'PayflowPro vendor',
+        'coust', 'label'),
+    oils_i18n_gettext('credit.processor.payflowpro.vendor',
+        'Often the same thing as the login',
+        'coust', 'description'),
+    'string', null)
+
+,( 'credit.processor.paypal.enabled', 'credit',
+    oils_i18n_gettext('credit.processor.paypal.enabled',
+        'Enable PayPal payments',
+        'coust', 'label'),
+    oils_i18n_gettext('credit.processor.paypal.enabled',
+        'Enable PayPal payments',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'credit.processor.paypal.login', 'credit',
+    oils_i18n_gettext('credit.processor.paypal.login',
+        'PayPal login',
+        'coust', 'label'),
+    oils_i18n_gettext('credit.processor.paypal.login',
+        'PayPal login',
+        'coust', 'description'),
+    'string', null)
+
+,( 'credit.processor.paypal.password', 'credit',
+    oils_i18n_gettext('credit.processor.paypal.password',
+        'PayPal password',
+        'coust', 'label'),
+    oils_i18n_gettext('credit.processor.paypal.password',
+        'PayPal password',
+        'coust', 'description'),
+    'string', null)
+
+,( 'credit.processor.paypal.signature', 'credit',
+    oils_i18n_gettext('credit.processor.paypal.signature',
+        'PayPal signature',
+        'coust', 'label'),
+    oils_i18n_gettext('credit.processor.paypal.signature',
+        'PayPal signature',
+        'coust', 'description'),
+    'string', null)
+
+,( 'credit.processor.paypal.testmode', 'credit',
+    oils_i18n_gettext('credit.processor.paypal.testmode',
+        'PayPal test mode',
+        'coust', 'label'),
+    oils_i18n_gettext('credit.processor.paypal.testmode',
+        'PayPal test mode',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'format.date', 'gui',
+    oils_i18n_gettext('format.date',
+        'Format Dates with this pattern.',
+        'coust', 'label'),
+    oils_i18n_gettext('format.date',
+        'Format Dates with this pattern (examples: "yyyy-MM-dd" for "2010-04-26", "MMM d, yyyy" for "Apr 26, 2010")',
+        'coust', 'description'),
+    'string', null)
+
+,( 'format.time', 'gui',
+    oils_i18n_gettext('format.time',
+        'Format Times with this pattern.',
+        'coust', 'label'),
+    oils_i18n_gettext('format.time',
+        'Format Times with this pattern (examples: "h:m:s.SSS a z" for "2:07:20.666 PM Eastern Daylight Time", "HH:mm" for "14:07")',
+        'coust', 'description'),
+    'string', null)
+
+,( 'global.default_locale', 'glob',
+    oils_i18n_gettext('global.default_locale',
+        'Global Default Locale',
+        'coust', 'label'),
+    oils_i18n_gettext('global.default_locale',
+        'Global Default Locale',
+        'coust', 'description'),
+    'string', null)
+
+,( 'global.juvenile_age_threshold', 'lib',
+    oils_i18n_gettext('global.juvenile_age_threshold',
+        'Juvenile Age Threshold',
+        'coust', 'label'),
+    oils_i18n_gettext('global.juvenile_age_threshold',
+        'The age at which a user is no long considered a juvenile.  For example, "18 years".',
+        'coust', 'description'),
+    'interval', null)
+
+,( 'global.password_regex', 'glob',
+    oils_i18n_gettext('global.password_regex',
+        'Password format',
+        'coust', 'label'),
+    oils_i18n_gettext('global.password_regex',
+        'Regular expression defining the password format',
+        'coust', 'description'),
+    'string', null)
+
+,( 'gui.disable_local_save_columns', 'gui',
+    oils_i18n_gettext('gui.disable_local_save_columns',
+        'Disable the ability to save list column configurations locally.',
+        'coust', 'label'),
+    oils_i18n_gettext('gui.disable_local_save_columns',
+        'Disable the ability to save list column configurations locally.  If set, columns may still be manipulated, however, the changes do not persist.  Also, existing local configurations are ignored if this setting is true.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'lib.courier_code', 'lib',
+    oils_i18n_gettext('lib.courier_code',
+        'Courier Code',
+        'coust', 'label'),
+    oils_i18n_gettext('lib.courier_code',
+        'Courier Code for the library.  Available in transit slip templates as the %courier_code% macro.',
+        'coust', 'description'),
+    'string', null)
+
+,( 'notice.telephony.callfile_lines', 'lib',
+    oils_i18n_gettext('notice.telephony.callfile_lines',
+        'Telephony: Arbitrary line(s) to include in each notice callfile',
+        'coust', 'label'),
+    oils_i18n_gettext('notice.telephony.callfile_lines',
+        '
+        This overrides lines from opensrf.xml.
+        Line(s) must be valid for your target server and platform
+        (e.g. Asterisk 1.4).
+        ',
+        'coust', 'description'),
+    'string', null)
+
+,( 'opac.allow_pending_address', 'opac',
+    oils_i18n_gettext('opac.allow_pending_address',
+        'Allow pending addresses',
+        'coust', 'label'),
+    oils_i18n_gettext('opac.allow_pending_address',
+        'If enabled, patrons can create and edit existing addresses.  Addresses are kept in a pending state until staff approves the changes',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'opac.barcode_regex', 'glob',
+    oils_i18n_gettext('opac.barcode_regex',
+        'Patron barcode format',
+        'coust', 'label'),
+    oils_i18n_gettext('opac.barcode_regex',
+        'Regular expression defining the patron barcode format',
+        'coust', 'description'),
+    'string', null)
+
+,( 'opac.fully_compressed_serial_holdings', 'opac',
+    oils_i18n_gettext('opac.fully_compressed_serial_holdings',
+        'Use fully compressed serial holdings',
+        'coust', 'label'),
+    oils_i18n_gettext('opac.fully_compressed_serial_holdings',
+        'Show fully compressed serial holdings for all libraries at and below the current context unit',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'opac.org_unit_hiding.depth', 'opac',
+    oils_i18n_gettext('opac.org_unit_hiding.depth',
+        'Org Unit Hiding Depth',
+        'coust', 'label'),
+    oils_i18n_gettext('opac.org_unit_hiding.depth',
+        'This will hide certain org units in the public OPAC if the Original Location (url param "ol") for the OPAC inherits this setting.  This setting specifies an org unit depth, that together with the OPAC Original Location determines which section of the Org Hierarchy should be visible in the OPAC.  For example, a stock Evergreen installation will have a 3-tier hierarchy (Consortium/System/Branch), where System has a depth of 1 and Branch has a depth of 2.  If this setting contains a depth of 1 in such an installation, then every library in the System in which the Original Location belongs will be visible, and everything else will be hidden.  A depth of 0 will effectively make every org visible.  The embedded OPAC in the staff client ignores this setting.',
+        'coust', 'description'),
+    'integer', null)
+
+,( 'opac.payment_history_age_limit', 'opac',
+    oils_i18n_gettext('opac.payment_history_age_limit',
+        'Payment History Age Limit',
+        'coust', 'label'),
+    oils_i18n_gettext('opac.payment_history_age_limit',
+        'The OPAC should not display payments by patrons that are older than any interval defined here.',
+        'coust', 'description'),
+    'interval', null)
+
+,( 'org.bounced_emails', 'prog',
+    oils_i18n_gettext('org.bounced_emails',
+        'Sending email address for patron notices',
+        'coust', 'label'),
+    oils_i18n_gettext('org.bounced_emails',
+        'Sending email address for patron notices',
+        'coust', 'description'),
+    'string', null)
+
+,( 'org.patron_opt_boundary', 'sec',
+    oils_i18n_gettext('org.patron_opt_boundary',
+        'Patron Opt-In Boundary',
+        'coust', 'label'),
+    oils_i18n_gettext('org.patron_opt_boundary',
+        'This determines at which depth above which patrons must be opted in, and below which patrons will be assumed to be opted in.',
+        'coust', 'description'),
+    'integer', null)
+
+,( 'org.patron_opt_default', 'sec',
+    oils_i18n_gettext('org.patron_opt_default',
+        'Patron Opt-In Default',
+        'coust', 'label'),
+    oils_i18n_gettext('org.patron_opt_default',
+        'This is the default depth at which a patron is opted in; it is calculated as an org unit relative to the current workstation.',
+        'coust', 'description'),
+    'integer', null)
+
+,( 'patron.password.use_phone', 'sec',
+    oils_i18n_gettext('patron.password.use_phone',
+        'Patron: password from phone #',
+        'coust', 'label'),
+    oils_i18n_gettext('patron.password.use_phone',
+        'By default, use the last 4 alphanumeric characters of the patrons phone number as the default password when creating new users.  The exact characters used may be configured via the "GUI: Regex for day_phone field on patron registration" setting.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'serial.prev_issuance_copy_location', 'serial',
+    oils_i18n_gettext('serial.prev_issuance_copy_location',
+        'Previous Issuance Copy Location',
+        'coust', 'label'),
+    oils_i18n_gettext('serial.prev_issuance_copy_location',
+        'When a serial issuance is received, copies (units) of the previous issuance will be automatically moved into the configured shelving location',
+        'coust', 'description'),
+    'link', 'acpl')
+
+,( 'ui.admin.patron_log.max_entries', 'gui',
+    oils_i18n_gettext('ui.admin.patron_log.max_entries',
+        'Work Log: Maximum Patrons Logged',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.admin.patron_log.max_entries',
+        'Maximum entries for "Most Recently Affected Patrons..." section of the Work Log interface.',
+        'coust', 'description'),
+    'interval', null)
+
+,( 'ui.admin.work_log.max_entries', 'gui',
+    oils_i18n_gettext('ui.admin.work_log.max_entries',
+        'Work Log: Maximum Actions Logged',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.admin.work_log.max_entries',
+        'Maximum entries for "Most Recent Staff Actions" section of the Work Log interface.',
+        'coust', 'description'),
+    'interval', null)
+
+,( 'ui.cat.volume_copy_editor.horizontal', 'gui',
+    oils_i18n_gettext('ui.cat.volume_copy_editor.horizontal',
+        'Horizontal layout for Volume/Copy Creator/Editor.',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.cat.volume_copy_editor.horizontal',
+        'The main entry point for this interface is in Holdings Maintenance, Actions for Selected Rows, Edit Item Attributes / Call Numbers / Replace Barcodes.  This setting changes the top and bottom panes for that interface into left and right panes.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.circ.billing.uncheck_bills_and_unfocus_payment_box', 'gui',
+    oils_i18n_gettext('ui.circ.billing.uncheck_bills_and_unfocus_payment_box',
+        'Uncheck bills by default in the patron billing interface',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.circ.billing.uncheck_bills_and_unfocus_payment_box',
+        'Uncheck bills by default in the patron billing interface, and focus on the Uncheck All button instead of the Payment Received field.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.circ.in_house_use.entry_cap', 'gui',
+    oils_i18n_gettext('ui.circ.in_house_use.entry_cap',
+        'Record In-House Use: Maximum # of uses allowed per entry.',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.circ.in_house_use.entry_cap',
+        'The # of uses entry in the Record In-House Use interface may not exceed the value of this setting.',
+        'coust', 'description'),
+    'integer', null)
+
+,( 'ui.circ.in_house_use.entry_warn', 'gui',
+    oils_i18n_gettext('ui.circ.in_house_use.entry_warn',
+        'Record In-House Use: # of uses threshold for Are You Sure? dialog.',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.circ.in_house_use.entry_warn',
+        'In the Record In-House Use interface, a submission attempt will warn if the # of uses field exceeds the value of this setting.',
+        'coust', 'description'),
+    'integer', null)
+
+,( 'ui.circ.patron_summary.horizontal', 'gui',
+    oils_i18n_gettext('ui.circ.patron_summary.horizontal',
+        'Patron circulation summary is horizontal',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.circ.patron_summary.horizontal',
+        'Patron circulation summary is horizontal',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.circ.show_billing_tab_on_bills', 'gui',
+    oils_i18n_gettext('ui.circ.show_billing_tab_on_bills',
+        'Show billing tab first when bills are present',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.circ.show_billing_tab_on_bills',
+        'If enabled and a patron has outstanding bills and the alert page is not required, show the billing tab by default, instead of the checkout tab, when a patron is loaded',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.circ.suppress_checkin_popups', 'circ',
+    oils_i18n_gettext('ui.circ.suppress_checkin_popups',
+        'Suppress popup-dialogs during check-in.',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.circ.suppress_checkin_popups',
+        'Suppress popup-dialogs during check-in.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.general.button_bar', 'gui',
+    oils_i18n_gettext('ui.general.button_bar',
+        'Button bar',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.general.button_bar',
+        'Set to "circ" or "cat" for stock circulator or cataloger toolbar, respectively.',
+        'coust', 'description'),
+    'string', null)
+
+,( 'ui.general.hotkeyset', 'gui',
+    oils_i18n_gettext('ui.general.hotkeyset',
+        'Default Hotkeyset',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.general.hotkeyset',
+        'Default Hotkeyset for clients (filename without the .keyset).  Examples: Default, Minimal, and None',
+        'coust', 'description'),
+    'string', null)
+
+,( 'ui.general.idle_timeout', 'gui',
+    oils_i18n_gettext('ui.general.idle_timeout',
+        'Idle timeout',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.general.idle_timeout',
+        'If you want staff client windows to be minimized after a certain amount of system idle time, set this to the number of seconds of idle time that you want to allow before minimizing (requires staff client restart).',
+        'coust', 'description'),
+    'integer', null)
+
+,( 'ui.patron.default_country', 'gui',
+    oils_i18n_gettext('ui.patron.default_country',
+        'Default Country for New Addresses in Patron Editor',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.default_country',
+        'This is the default Country for new addresses in the patron editor.',
+        'coust', 'description'),
+    'string', null)
+
+,( 'ui.patron.default_ident_type', 'gui',
+    oils_i18n_gettext('ui.patron.default_ident_type',
+        'Default Ident Type for Patron Registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.default_ident_type',
+        'This is the default Ident Type for new users in the patron editor.',
+        'coust', 'description'),
+    'link', 'cit')
+
+,( 'ui.patron.default_inet_access_level', 'sec',
+    oils_i18n_gettext('ui.patron.default_inet_access_level',
+        'Default level of patrons'' internet access',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.default_inet_access_level',
+        'Default level of patrons'' internet access',
+        'coust', 'description'),
+    'integer', null)
+
+,( 'ui.patron.edit.au.active.show', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.active.show',
+        'Show active field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.active.show',
+        'The active field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.active.suggest', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.active.suggest',
+        'Suggest active field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.active.suggest',
+        'The active field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.alert_message.show', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.alert_message.show',
+        'Show alert_message field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.alert_message.show',
+        'The alert_message field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.alert_message.suggest', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.alert_message.suggest',
+        'Suggest alert_message field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.alert_message.suggest',
+        'The alert_message field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.alias.show', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.alias.show',
+        'Show alias field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.alias.show',
+        'The alias field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.alias.suggest', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.alias.suggest',
+        'Suggest alias field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.alias.suggest',
+        'The alias field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.barred.show', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.barred.show',
+        'Show barred field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.barred.show',
+        'The barred field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.barred.suggest', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.barred.suggest',
+        'Suggest barred field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.barred.suggest',
+        'The barred field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.claims_never_checked_out_count.show', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.claims_never_checked_out_count.show',
+        'Show claims_never_checked_out_count field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.claims_never_checked_out_count.show',
+        'The claims_never_checked_out_count field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.claims_never_checked_out_count.suggest', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.claims_never_checked_out_count.suggest',
+        'Suggest claims_never_checked_out_count field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.claims_never_checked_out_count.suggest',
+        'The claims_never_checked_out_count field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.claims_returned_count.show', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.claims_returned_count.show',
+        'Show claims_returned_count field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.claims_returned_count.show',
+        'The claims_returned_count field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.claims_returned_count.suggest', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.claims_returned_count.suggest',
+        'Suggest claims_returned_count field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.claims_returned_count.suggest',
+        'The claims_returned_count field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.day_phone.example', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.day_phone.example',
+        'Example for day_phone field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.day_phone.example',
+        'The Example for validation on the day_phone field in patron registration.',
+        'coust', 'description'),
+    'string', null)
+
+,( 'ui.patron.edit.au.day_phone.regex', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.day_phone.regex',
+        'Regex for day_phone field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.day_phone.regex',
+        E'The Regular Expression for validation on the day_phone field in patron registration. Note: The first capture group will be used for the "last 4 digits of phone number" feature, if enabled. Ex: "[2-9]\\d{2}-\\d{3}-(\\d{4})( x\\d+)?" will ignore the extension on a NANP number.',
+        'coust', 'description'),
+    'string', null)
+
+,( 'ui.patron.edit.au.day_phone.require', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.day_phone.require',
+        'Require day_phone field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.day_phone.require',
+        'The day_phone field will be required on the patron registration screen.',
+        'coust', 'description'),
+    'bool', null)
 
--- org_unit setting types
-INSERT into config.org_unit_setting_type
-( name, label, description, datatype ) VALUES
-
-( 'auth.opac_timeout',
-    oils_i18n_gettext('auth.opac_timeout', 'OPAC Inactivity Timeout (in seconds)', 'coust', 'label'),
-    oils_i18n_gettext('auth.opac_timeout', 'OPAC Inactivity Timeout (in seconds)', 'coust', 'description'),
-    'integer'),
-
-( 'auth.staff_timeout',
-    oils_i18n_gettext('auth.staff_timeout', 'Staff Login Inactivity Timeout (in seconds)', 'coust', 'label'),
-    oils_i18n_gettext('auth.staff_timeout', 'Staff Login Inactivity Timeout (in seconds)', 'coust', 'description'),
-    'integer'),
-
-( 'circ.lost_materials_processing_fee',
-    oils_i18n_gettext('circ.lost_materials_processing_fee', 'Lost Materials Processing Fee', 'coust', 'label'),
-    oils_i18n_gettext('circ.lost_materials_processing_fee', 'Lost Materials Processing Fee', 'coust', 'description'),
-    'currency'),
-
-( 'cat.default_item_price',
-    oils_i18n_gettext('cat.default_item_price', 'Default Item Price', 'coust', 'label'),
-    oils_i18n_gettext('cat.default_item_price', 'Default Item Price', 'coust', 'description'),
-    'currency'),
-
-( 'org.bounced_emails',
-    oils_i18n_gettext('org.bounced_emails', 'Sending email address for patron notices', 'coust', 'label'),
-    oils_i18n_gettext('org.bounced_emails', 'Sending email address for patron notices', 'coust', 'description'),
-    'string'),
-
-( 'circ.hold_expire_alert_interval',
-    oils_i18n_gettext('circ.hold_expire_alert_interval', 'Expire Alert Interval', 'coust', 'label'),
-    oils_i18n_gettext('circ.hold_expire_alert_interval', 'Amount of time before a hold expires at which point the patron should be alerted. Examples: "5 days", "1 hour"', 'coust', 'description'),
-    'interval'),
-
-( 'circ.hold_expire_interval',
-    oils_i18n_gettext('circ.hold_expire_interval', 'Expire Interval', 'coust', 'label'),
-    oils_i18n_gettext('circ.hold_expire_interval', 'Amount of time after a hold is placed before the hold expires.  Example "100 days"', 'coust', 'description'),
-    'interval'),
-
-( 'credit.payments.allow',
-    oils_i18n_gettext('credit.payments.allow', 'Allow Credit Card Payments', 'coust', 'label'),
-    oils_i18n_gettext('credit.payments.allow', 'If enabled, patrons will be able to pay fines accrued at this location via credit card', 'coust', 'description'),
-    'bool'),
-
-( 'global.default_locale',
-    oils_i18n_gettext('global.default_locale', 'Global Default Locale', 'coust', 'label'),
-    oils_i18n_gettext('global.default_locale', 'Global Default Locale', 'coust', 'description'),
-    'string'),
-
-( 'circ.void_overdue_on_lost',
-    oils_i18n_gettext('circ.void_overdue_on_lost', 'Void overdue fines when items are marked lost', 'coust', 'label'),
-    oils_i18n_gettext('circ.void_overdue_on_lost', 'Void overdue fines when items are marked lost', 'coust', 'description'),
-    'bool'),
-
-( 'circ.hold_stalling.soft',
-    oils_i18n_gettext('circ.hold_stalling.soft', 'Soft stalling interval', 'coust', 'label'),
-    oils_i18n_gettext('circ.hold_stalling.soft', 'How long to wait before allowing remote items to be opportunistically captured for a hold.  Example "5 days"', 'coust', 'description'),
-    'interval'),
-
-( 'circ.hold_stalling_hard',
-    oils_i18n_gettext('circ.hold_stalling_hard', 'Hard stalling interval', 'coust', 'label'),
-    oils_i18n_gettext('circ.hold_stalling_hard', 'Holds: Hard stalling interval', 'coust', 'description'),
-    'interval'),
-
-( 'circ.hold_boundary.hard',
-    oils_i18n_gettext('circ.hold_boundary.hard', 'Hard boundary', 'coust', 'label'),
-    oils_i18n_gettext('circ.hold_boundary.hard', 'Holds: Hard boundary', 'coust', 'description'),
-    'integer'),
-
-( 'circ.hold_boundary.soft',
-    oils_i18n_gettext('circ.hold_boundary.soft', 'Soft boundary', 'coust', 'label'),
-    oils_i18n_gettext('circ.hold_boundary.soft', 'Holds: Soft boundary', 'coust', 'description'),
-    'integer'),
-
-( 'opac.barcode_regex',
-    oils_i18n_gettext('opac.barcode_regex', 'Patron barcode format', 'coust', 'label'),
-    oils_i18n_gettext('opac.barcode_regex', 'Regular expression defining the patron barcode format', 'coust', 'description'),
-    'string'),
-
-( 'global.password_regex',
-    oils_i18n_gettext('global.password_regex', 'Password format', 'coust', 'label'),
-    oils_i18n_gettext('global.password_regex', 'Regular expression defining the password format', 'coust', 'description'),
-    'string'),
-
-( 'circ.item_checkout_history.max',
-    oils_i18n_gettext('circ.item_checkout_history.max', 'Maximum previous checkouts displayed', 'coust', 'label'),
-    oils_i18n_gettext('circ.item_checkout_history.max', 'This is the maximum number of previous circulations the staff client will display when investigating item details', 'coust', 'description'),
-    'integer'),
-
-( 'circ.reshelving_complete.interval',
-    oils_i18n_gettext('circ.reshelving_complete.interval', 'Change reshelving status interval', 'coust', 'label'),
-    oils_i18n_gettext('circ.reshelving_complete.interval', 'Amount of time to wait before changing an item from "reshelving" status to "available".  Examples: "1 day", "6 hours"', 'coust', 'description'),
-    'interval'),
-
-( 'circ.holds.default_estimated_wait_interval',
-    oils_i18n_gettext('circ.holds.default_estimated_wait_interval', 'Default Estimated Wait', 'coust', 'label'),
-    oils_i18n_gettext('circ.holds.default_estimated_wait_interval', 'When predicting the amount of time a patron will be waiting for a hold to be fulfilled, this is the default estimated length of time to assume an item will be checked out. Examples: "3 weeks", "7 days"', 'coust', 'description'),
-    'interval'),
-
-( 'circ.holds.min_estimated_wait_interval',
-    oils_i18n_gettext('circ.holds.min_estimated_wait_interval', 'Minimum Estimated Wait', 'coust', 'label'),
-    oils_i18n_gettext('circ.holds.min_estimated_wait_interval', 'When predicting the amount of time a patron will be waiting for a hold to be fulfilled, this is the minimum estimated length of time to assume an item will be checked out. Examples: "2 weeks", "5 days"', 'coust', 'description'),
-    'interval'),
-
-( 'circ.holds.age_protect.active_date',
-    oils_i18n_gettext('circ.holds.age_protect.active_date', 'Holds: Use Active Date for Age Protection', 'coust', 'label'),
-    oils_i18n_gettext('circ.holds.age_protect.active_date', 'When calculating age protection rules use the active date instead of the creation date.', 'coust', 'description'),
-    'bool'),
-
-( 'circ.selfcheck.patron_login_timeout',
-    oils_i18n_gettext('circ.selfcheck.patron_login_timeout', 'Patron Login Timeout (in seconds)', 'coust', 'label'),
-    oils_i18n_gettext('circ.selfcheck.patron_login_timeout', 'Number of seconds of inactivity before the patron is logged out of the selfcheck interface', 'coust', 'description'),
-    'integer'),
-
-( 'circ.selfcheck.alert.popup',
-    oils_i18n_gettext('circ.selfcheck.alert.popup', 'Pop-up alert for errors', 'coust', 'label'),
-    oils_i18n_gettext('circ.selfcheck.alert.popup', 'If true, checkout/renewal errors will cause a pop-up window in addition to the on-screen message', 'coust', 'description'),
-    'bool'),
-
-( 'circ.selfcheck.require_patron_password',
-    oils_i18n_gettext('circ.selfcheck.require_patron_password', 'Require patron password', 'coust', 'label'),
-    oils_i18n_gettext('circ.selfcheck.require_patron_password', 'If true, patrons will be required to enter their password in addition to their username/barcode to log into the selfcheck interface', 'coust', 'description'),
-    'bool'),
-
-( 'global.juvenile_age_threshold',
-    oils_i18n_gettext('global.juvenile_age_threshold', 'Juvenile Age Threshold', 'coust', 'label'),
-    oils_i18n_gettext('global.juvenile_age_threshold', 'The age at which a user is no long considered a juvenile.  For example, "18 years".', 'coust', 'description'),
-    'interval'),
-
-( 'cat.bib.keep_on_empty',
-    oils_i18n_gettext('cat.bib.keep_on_empty', 'Retain empty bib records', 'coust', 'label'),
-    oils_i18n_gettext('cat.bib.keep_on_empty', 'Retain a bib record even when all attached copies are deleted', 'coust', 'description'),
-    'bool'),
-
-( 'cat.bib.alert_on_empty',
-    oils_i18n_gettext('cat.bib.alert_on_empty', 'Alert on empty bib records', 'coust', 'label'),
-    oils_i18n_gettext('cat.bib.alert_on_empty', 'Alert staff when the last copy for a record is being deleted', 'coust', 'description'),
-    'bool'),
-
-( 'patron.password.use_phone',
-    oils_i18n_gettext('patron.password.use_phone', 'Patron: password from phone #', 'coust', 'label'),
-    oils_i18n_gettext('patron.password.use_phone', 'By default, use the last 4 alphanumeric characters of the patrons phone number as the default password when creating new users.  The exact characters used may be configured via the "GUI: Regex for day_phone field on patron registration" setting.', 'coust', 'description'),
-    'bool'),
-
-( 'circ.charge_on_damaged',
-    oils_i18n_gettext('circ.charge_on_damaged', 'Charge item price when marked damaged', 'coust', 'label'),
-    oils_i18n_gettext('circ.charge_on_damaged', 'Charge item price when marked damaged', 'coust', 'description'),
-    'bool'),
-
-( 'circ.charge_lost_on_zero',
-    oils_i18n_gettext('circ.charge_lost_on_zero', 'Charge lost on zero', 'coust', 'label'),
-    oils_i18n_gettext('circ.charge_lost_on_zero', 'Charge lost on zero', 'coust', 'description'),
-    'bool'),
-
-( 'circ.damaged_item_processing_fee',
-    oils_i18n_gettext('circ.damaged_item_processing_fee', 'Charge processing fee for damaged items', 'coust', 'label'),
-    oils_i18n_gettext('circ.damaged_item_processing_fee', 'Charge processing fee for damaged items', 'coust', 'description'),
-    'currency'),
-
-( 'circ.void_lost_on_checkin',
-    oils_i18n_gettext('circ.void_lost_on_checkin', 'Void lost item billing when returned', 'coust', 'label'),
-    oils_i18n_gettext('circ.void_lost_on_checkin', 'Void lost item billing when returned', 'coust', 'description'),
-    'bool'),
-
-( 'circ.max_accept_return_of_lost',
-    oils_i18n_gettext('circ.max_accept_return_of_lost', 'Void lost max interval', 'coust', 'label'),
-    oils_i18n_gettext('circ.max_accept_return_of_lost', 'Items that have been lost this long will not result in voided billings when returned.  E.g. ''6 months''', 'coust', 'description'),
-    'interval'),
-
-( 'circ.void_lost_proc_fee_on_checkin',
-    oils_i18n_gettext('circ.void_lost_proc_fee_on_checkin', 'Void processing fee on lost item return', 'coust', 'label'),
-    oils_i18n_gettext('circ.void_lost_proc_fee_on_checkin', 'Void processing fee when lost item returned', 'coust', 'description'),
-    'bool'),
-
-( 'circ.restore_overdue_on_lost_return',
-    oils_i18n_gettext('circ.restore_overdue_on_lost_return', 'Restore overdues on lost item return', 'coust', 'label'),
-    oils_i18n_gettext('circ.restore_overdue_on_lost_return', 'Restore overdue fines on lost item return', 'coust', 'description'),
-    'bool'),
-
-( 'circ.lost_immediately_available',
-    oils_i18n_gettext('circ.lost_immediately_available', 'Lost items usable on checkin', 'coust', 'label'),
-    oils_i18n_gettext('circ.lost_immediately_available', 'Lost items are usable on checkin instead of going ''home'' first', 'coust', 'description'),
-    'bool'),
-
-( 'circ.holds_fifo',
-    oils_i18n_gettext('circ.holds_fifo', 'FIFO', 'coust', 'label'),
-    oils_i18n_gettext('circ.holds_fifo', 'Force holds to a more strict First-In, First-Out capture', 'coust', 'description'),
-    'bool'),
-
-( 'opac.allow_pending_address',
-    oils_i18n_gettext('opac.allow_pending_address', 'Allow pending addresses', 'coust', 'label'),
-    oils_i18n_gettext('opac.allow_pending_address', 'If enabled, patrons can create and edit existing addresses.  Addresses are kept in a pending state until staff approves the changes', 'coust', 'description'),
-    'bool'),
-
-( 'ui.circ.show_billing_tab_on_bills',
-    oils_i18n_gettext('ui.circ.show_billing_tab_on_bills', 'Show billing tab first when bills are present', 'coust', 'label'),
-    oils_i18n_gettext('ui.circ.show_billing_tab_on_bills', 'If enabled and a patron has outstanding bills and the alert page is not required, show the billing tab by default, instead of the checkout tab, when a patron is loaded', 'coust', 'description'),
-    'bool'),
-
-( 'ui.general.idle_timeout',
-    oils_i18n_gettext('ui.general.idle_timeout', 'Idle timeout', 'coust', 'label'),
-    oils_i18n_gettext('ui.general.idle_timeout', 'If you want staff client windows to be minimized after a certain amount of system idle time, set this to the number of seconds of idle time that you want to allow before minimizing (requires staff client restart).', 'coust', 'description'),
-    'integer'),
-
-( 'ui.circ.in_house_use.entry_cap',
-    oils_i18n_gettext('ui.circ.in_house_use.entry_cap', 'Record In-House Use: Maximum # of uses allowed per entry.', 'coust', 'label'),
-    oils_i18n_gettext('ui.circ.in_house_use.entry_cap', 'The # of uses entry in the Record In-House Use interface may not exceed the value of this setting.', 'coust', 'description'),
-    'integer'),
-
-( 'ui.circ.in_house_use.entry_warn',
-    oils_i18n_gettext('ui.circ.in_house_use.entry_warn', 'Record In-House Use: # of uses threshold for Are You Sure? dialog.', 'coust', 'label'),
-    oils_i18n_gettext('ui.circ.in_house_use.entry_warn', 'In the Record In-House Use interface, a submission attempt will warn if the # of uses field exceeds the value of this setting.', 'coust', 'description'),
-    'integer'),
-
-( 'acq.default_circ_modifier',
-    oils_i18n_gettext('acq.default_circ_modifier', 'Default circulation modifier', 'coust', 'label'),
-    oils_i18n_gettext('acq.default_circ_modifier', 'Default circulation modifier', 'coust', 'description'),
-    'string'),
-
-( 'acq.tmp_barcode_prefix',
-    oils_i18n_gettext('acq.tmp_barcode_prefix', 'Temporary barcode prefix', 'coust', 'label'),
-    oils_i18n_gettext('acq.tmp_barcode_prefix', 'Temporary barcode prefix', 'coust', 'description'),
-    'string'),
-
-( 'acq.tmp_callnumber_prefix',
-    oils_i18n_gettext('acq.tmp_callnumber_prefix', 'Temporary call number prefix', 'coust', 'label'),
-    oils_i18n_gettext('acq.tmp_callnumber_prefix', 'Temporary call number prefix', 'coust', 'description'),
-    'string'),
-
-( 'ui.circ.patron_summary.horizontal',
-    oils_i18n_gettext('ui.circ.patron_summary.horizontal', 'Patron circulation summary is horizontal', 'coust', 'label'),
-    oils_i18n_gettext('ui.circ.patron_summary.horizontal', 'Patron circulation summary is horizontal', 'coust', 'description'),
-    'bool'),
-
-( 'ui.staff.require_initials',
-  oils_i18n_gettext('ui.staff.require_initials', 'Require staff initials for entry/edit of item/patron/penalty notes/messages.', 'coust', 'label'),
-  oils_i18n_gettext('ui.staff.require_initials', 'Appends staff initials and edit date into note content.', 'coust', 'description'),
-    'bool'),
-
-( 'ui.general.button_bar',
-    oils_i18n_gettext('ui.general.button_bar', 'Button bar', 'coust', 'label'),
-    oils_i18n_gettext('ui.general.button_bar', 'Set to "circ" or "cat" for stock circulator or cataloger toolbar, respectively.', 'coust', 'description'),
-    'string'),
-
-( 'ui.general.hotkeyset',
-    oils_i18n_gettext('ui.general.hotkeyset', 'Default Hotkeyset', 'coust', 'label'),
-    oils_i18n_gettext('ui.general.hotkeyset', 'Default Hotkeyset for clients (filename without the .keyset).  Examples: Default, Minimal, and None', 'coust', 'description'),
-    'string'),
-
-( 'circ.hold_shelf_status_delay',
-    oils_i18n_gettext('circ.hold_shelf_status_delay', 'Hold Shelf Status Delay', 'coust', 'label'),
-    oils_i18n_gettext('circ.hold_shelf_status_delay', 'The purpose is to provide an interval of time after an item goes into the on-holds-shelf status before it appears to patrons that it is actually on the holds shelf.  This gives staff time to process the item before it shows as ready-for-pickup. Examples: "5 days", "1 hour"', 'coust', 'description'),
-    'interval'),
-
-( 'circ.patron_invalid_address_apply_penalty',
-    oils_i18n_gettext('circ.patron_invalid_address_apply_penalty', 'Invalid patron address penalty', 'coust', 'label'),
-    oils_i18n_gettext('circ.patron_invalid_address_apply_penalty', 'When set, if a patron address is set to invalid, a penalty is applied.', 'coust', 'description'),
-    'bool'),
-
-( 'circ.checkout_fills_related_hold',
-    oils_i18n_gettext('circ.checkout_fills_related_hold', 'Checkout Fills Related Hold', 'coust', 'label'),
-    oils_i18n_gettext('circ.checkout_fills_related_hold', 'When a patron checks out an item and they have no holds that directly target the item, the system will attempt to find a hold for the patron that could be fulfilled by the checked out item and fulfills it', 'coust', 'description'),
-    'bool'),
-
-( 'circ.checkout_fills_related_hold_exact_match_only',
-    oils_i18n_gettext('circ.checkout_fills_related_hold_exact_match_only', 'Checkout Fills Related Hold On Valid Copy Only', 'coust', 'label'),
-    oils_i18n_gettext('circ.checkout_fills_related_hold_exact_match_only', 'When filling related holds on checkout only match on items that are valid for opportunistic capture for the hold. Without this set a Title or Volume hold could match when the item is not holdable. With this set only holdable items will match.', 'coust', 'description'),
-    'bool'),
-
-( 'circ.selfcheck.auto_override_checkout_events',
-    oils_i18n_gettext('circ.selfcheck.auto_override_checkout_events', 'Selfcheck override events list', 'coust', 'label'),
-    oils_i18n_gettext('circ.selfcheck.auto_override_checkout_events', 'List of checkout/renewal events that the selfcheck interface should automatically override instead instead of alerting and stopping the transaction', 'coust', 'description'),
-    'array'),
-
-( 'circ.staff_client.actor_on_checkout',
-    oils_i18n_gettext('circ.staff_client.actor_on_checkout', 'Load patron from Checkout', 'coust', 'label'),
-    oils_i18n_gettext('circ.staff_client.actor_on_checkout', 'When scanning barcodes into Checkout auto-detect if a new patron barcode is scanned and auto-load the new patron.', 'coust', 'description'),
-    'bool'),
-
-( 'circ.staff_client.do_not_auto_attempt_print',
-    oils_i18n_gettext('circ.staff_client.do_not_auto_attempt_print', 'Disable Automatic Print Attempt Type List', 'coust', 'label'),
-    oils_i18n_gettext('circ.staff_client.do_not_auto_attempt_print', 'Disable automatic print attempts from staff client interfaces for the receipt types in this list.  Possible values: "Checkout", "Bill Pay", "Hold Slip", "Transit Slip", and "Hold/Transit Slip".  This is different from the Auto-Print checkbox in the pertinent interfaces in that it disables automatic print attempts altogether, rather than encouraging silent printing by suppressing the print dialog.  The Auto-Print checkbox in these interfaces have no effect on the behavior for this setting.  In the case of the Hold, Transit, and Hold/Transit slips, this also suppresses the alert dialogs that precede the print dialog (the ones that offer Print and Do Not Print as options).', 'coust', 'description'),
-    'array'),
-
-( 'ui.patron.default_inet_access_level',
-    oils_i18n_gettext('ui.patron.default_inet_access_level', 'Default level of patrons'' internet access', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.default_inet_access_level', 'Default level of patrons'' internet access', 'coust', 'description'),
-    'integer'),
-
-( 'circ.max_patron_claim_return_count',
-    oils_i18n_gettext('circ.max_patron_claim_return_count', 'Max Patron Claims Returned Count', 'coust', 'label'),
-    oils_i18n_gettext('circ.max_patron_claim_return_count', 'When this count is exceeded, a staff override is required to mark the item as claims returned', 'coust', 'description'),
-    'integer'),
-
-( 'circ.obscure_dob',
-    oils_i18n_gettext('circ.obscure_dob', 'Obscure the Date of Birth field', 'coust', 'label'),
-    oils_i18n_gettext('circ.obscure_dob', 'When true, the Date of Birth column in patron lists will default to Not Visible, and in the Patron Summary sidebar the value will display as <Hidden> unless the field label is clicked.', 'coust', 'description'),
-    'bool'),
-
-( 'circ.auto_hide_patron_summary',
-    oils_i18n_gettext('circ.auto_hide_patron_summary', 'Toggle off the patron summary sidebar after first view.', 'coust', 'label'),
-    oils_i18n_gettext('circ.auto_hide_patron_summary', 'When true, the patron summary sidebar will collapse after a new patron sub-interface is selected.', 'coust', 'description'),
-    'bool'),
-
-( 'credit.processor.default',
-    oils_i18n_gettext('credit.processor.default', 'Name default credit processor', 'coust', 'label'),
-    oils_i18n_gettext('credit.processor.default', 'This might be "AuthorizeNet", "PayPal", etc.', 'coust', 'description'),
-    'string'),
-
-( 'credit.processor.authorizenet.enabled',
-    oils_i18n_gettext('credit.processor.authorizenet.enabled', 'Enable AuthorizeNet payments', 'coust', 'label'),
-    oils_i18n_gettext('credit.processor.authorizenet.enabled', 'Enable AuthorizeNet payments', 'coust', 'description'),
-    'bool'),
-
-( 'credit.processor.authorizenet.login',
-    oils_i18n_gettext('credit.processor.authorizenet.login', 'AuthorizeNet login', 'coust', 'label'),
-    oils_i18n_gettext('credit.processor.authorizenet.login', 'AuthorizeNet login', 'coust', 'description'),
-    'string'),
-
-( 'credit.processor.authorizenet.password',
-    oils_i18n_gettext('credit.processor.authorizenet.password', 'AuthorizeNet password', 'coust', 'label'),
-    oils_i18n_gettext('credit.processor.authorizenet.password', 'AuthorizeNet password', 'coust', 'description'),
-    'string'),
-
-( 'credit.processor.authorizenet.server',
-    oils_i18n_gettext('credit.processor.authorizenet.server', 'AuthorizeNet server', 'coust', 'label'),
-    oils_i18n_gettext('credit.processor.authorizenet.server', 'Required if using a developer/test account with AuthorizeNet', 'coust', 'description'),
-    'string'),
-
-( 'credit.processor.authorizenet.testmode',
-    oils_i18n_gettext('credit.processor.authorizenet.testmode', 'AuthorizeNet test mode', 'coust', 'label'),
-    oils_i18n_gettext('credit.processor.authorizenet.testmode', 'AuthorizeNet test mode', 'coust', 'description'),
-    'bool'),
-
-( 'credit.processor.paypal.enabled',
-    oils_i18n_gettext('credit.processor.paypal.enabled', 'Enable PayPal payments', 'coust', 'label'),
-    oils_i18n_gettext('credit.processor.paypal.enabled', 'Enable PayPal payments', 'coust', 'description'),
-    'bool'),
-( 'credit.processor.paypal.login',
-    oils_i18n_gettext('credit.processor.paypal.login', 'PayPal login', 'coust', 'label'),
-    oils_i18n_gettext('credit.processor.paypal.login', 'PayPal login', 'coust', 'description'),
-    'string'),
-( 'credit.processor.paypal.password',
-    oils_i18n_gettext('credit.processor.paypal.password', 'PayPal password', 'coust', 'label'),
-    oils_i18n_gettext('credit.processor.paypal.password', 'PayPal password', 'coust', 'description'),
-    'string'),
-( 'credit.processor.paypal.signature',
-    oils_i18n_gettext('credit.processor.paypal.signature', 'PayPal signature', 'coust', 'label'),
-    oils_i18n_gettext('credit.processor.paypal.signature', 'PayPal signature', 'coust', 'description'),
-    'string'),
-( 'credit.processor.paypal.testmode',
-    oils_i18n_gettext('credit.processor.paypal.testmode', 'PayPal test mode', 'coust', 'label'),
-    oils_i18n_gettext('credit.processor.paypal.testmode', 'PayPal test mode', 'coust', 'description'),
-    'bool'),
-( 'credit.processor.payflowpro.enabled',
-    oils_i18n_gettext('credit.processor.payflowpro.enabled', 'Enable PayflowPro payments', 'coust', 'label'),
-    oils_i18n_gettext('credit.processor.payflowpro.enabled', 'This is NOT the same thing as the settings labeled with just "PayPal."', 'coust', 'description'),
-    'bool'),
-( 'credit.processor.payflowpro.login',
-    oils_i18n_gettext('credit.processor.payflowpro.login', 'PayflowPro login/merchant ID', 'coust', 'label'),
-    oils_i18n_gettext('credit.processor.payflowpro.login', 'Often the same thing as the PayPal manager login', 'coust', 'description'),
-    'string'),
-( 'credit.processor.payflowpro.password',
-    oils_i18n_gettext('credit.processor.payflowpro.password', 'PayflowPro password', 'coust', 'label'),
-    oils_i18n_gettext('credit.processor.payflowpro.password', 'PayflowPro password', 'coust', 'description'),
-    'string'),
-( 'credit.processor.payflowpro.testmode',
-    oils_i18n_gettext('credit.processor.payflowpro.testmode', 'PayflowPro test mode', 'coust', 'label'),
-    oils_i18n_gettext('credit.processor.payflowpro.testmode', 'Do not really process transactions, but stay in test mode - uses pilot-payflowpro.paypal.com instead of the usual host', 'coust', 'description'),
-    'bool'),
-( 'credit.processor.payflowpro.vendor',
-    oils_i18n_gettext('credit.processor.payflowpro.vendor', 'PayflowPro vendor', 'coust', 'label'),
-    oils_i18n_gettext('credit.processor.payflowpro.vendor', 'Often the same thing as the login', 'coust', 'description'),
-    'string'),
-( 'credit.processor.payflowpro.partner',
-    oils_i18n_gettext('credit.processor.payflowpro.partner', 'PayflowPro partner', 'coust', 'label'),
-    oils_i18n_gettext('credit.processor.payflowpro.partner', 'Often "PayPal" or "VeriSign", sometimes others', 'coust', 'description'),
-    'string'),
-
-( 'ui.admin.work_log.max_entries',
-    oils_i18n_gettext('ui.admin.work_log.max_entries', 'Work Log: Maximum Actions Logged', 'coust', 'label'),
-    oils_i18n_gettext('ui.admin.work_log.max_entries', 'Maximum entries for "Most Recent Staff Actions" section of the Work Log interface.', 'coust', 'description'),
-    'interval'),
-
-( 'ui.admin.patron_log.max_entries',
-    oils_i18n_gettext('ui.admin.patron_log.max_entries', 'Work Log: Maximum Patrons Logged', 'coust', 'label'),
-    oils_i18n_gettext('ui.admin.patron_log.max_entries', 'Maximum entries for "Most Recently Affected Patrons..." section of the Work Log interface.', 'coust', 'description'),
-    'interval'),
-
-( 'lib.courier_code',
-    oils_i18n_gettext('lib.courier_code', 'Courier Code', 'coust', 'label'),
-    oils_i18n_gettext('lib.courier_code', 'Courier Code for the library.  Available in transit slip templates as the %courier_code% macro.', 'coust', 'description'),
-    'string'),
-
-( 'circ.block_renews_for_holds',
-    oils_i18n_gettext('circ.block_renews_for_holds', 'Block Renewal of Items Needed for Holds', 'coust', 'label'),
-    oils_i18n_gettext('circ.block_renews_for_holds', 'When an item could fulfill a hold, do not allow the current patron to renew', 'coust', 'description'),
-    'bool'),
-
-( 'circ.password_reset_request_per_user_limit',
-    oils_i18n_gettext('circ.password_reset_request_per_user_limit', 'Maximum concurrently active self-serve password reset requests per user', 'coust', 'label'),
-    oils_i18n_gettext('circ.password_reset_request_per_user_limit', 'When a user has more than this number of concurrently active self-serve password reset requests for their account, prevent the user from creating any new self-serve password reset requests until the number of active requests for the user drops back below this number.', 'coust', 'description'),
-    'string'),
-
-( 'circ.password_reset_request_time_to_live',
-    oils_i18n_gettext('circ.password_reset_request_time_to_live', 'Self-serve password reset request time-to-live', 'coust', 'label'),
-    oils_i18n_gettext('circ.password_reset_request_time_to_live', 'Length of time (in seconds) a self-serve password reset request should remain active.', 'coust', 'description'),
-    'string'),
-
-( 'circ.password_reset_request_throttle',
-    oils_i18n_gettext('circ.password_reset_request_throttle', 'Maximum concurrently active self-serve password reset requests', 'coust', 'label'),
-    oils_i18n_gettext('circ.password_reset_request_throttle', 'Prevent the creation of new self-serve password reset requests until the number of active requests drops back below this number.', 'coust', 'description'),
-    'string'),
-
-( 'opac.fully_compressed_serial_holdings',
-    oils_i18n_gettext('opac.fully_compressed_serial_holdings', 'Use fully compressed serial holdings', 'coust', 'label'),
-    oils_i18n_gettext('opac.fully_compressed_serial_holdings', 'Show fully compressed serial holdings for all libraries at and below the current context unit', 'coust', 'description'),
-    'bool'),
-
-( 'org.patron_opt_boundary',
-    oils_i18n_gettext( 'org.patron_opt_boundary', 'Patron Opt-In Boundary', 'coust', 'label'),
-    oils_i18n_gettext( 'org.patron_opt_boundary', 'This determines at which depth above which patrons must be opted in, and below which patrons will be assumed to be opted in.', 'coust', 'label'),
-    'integer'),
-
-( 'org.patron_opt_default',
-    oils_i18n_gettext( 'org.patron_opt_default', 'Patron Opt-In Default', 'coust', 'label'),
-    oils_i18n_gettext( 'org.patron_opt_default', 'This is the default depth at which a patron is opted in; it is calculated as an org unit relative to the current workstation.', 'coust', 'label'),
-    'integer'),
-
-( 'opac.payment_history_age_limit',
-    oils_i18n_gettext( 'opac.payment_history_age_limit', 'OPAC: Payment History Age Limit', 'coust', 'label'),
-    oils_i18n_gettext( 'opac.payment_history_age_limit', 'The OPAC should not display payments by patrons that are older than any interval defined here.', 'coust', 'label'),
-    'interval'),
-
-( 
-        'ui.circ.billing.uncheck_bills_and_unfocus_payment_box',
-        oils_i18n_gettext(
-            'ui.circ.billing.uncheck_bills_and_unfocus_payment_box',
-            'GUI: Uncheck bills by default in the patron billing interface',
-            'coust',
-            'label'
-        ),
-        oils_i18n_gettext(
-            'ui.circ.billing.uncheck_bills_and_unfocus_payment_box',
-            'Uncheck bills by default in the patron billing interface,'
-            || ' and focus on the Uncheck All button instead of the'
-            || ' Payment Received field.',
-            'coust',
-            'description'
-        ),
-        'bool'
-    )
-,( 
-        'circ.offline.skip_checkout_if_newer_status_changed_time',
-        oils_i18n_gettext(
-            'circ.offline.skip_checkout_if_newer_status_changed_time',
-            'Offline: Skip offline checkout if newer item Status Changed Time.',
-            'coust',
-            'label'
-        ),
-        oils_i18n_gettext(
-            'circ.offline.skip_checkout_if_newer_status_changed_time',
-            'Skip offline checkout transaction (raise exception when'
-            || ' processing) if item Status Changed Time is newer than the'
-            || ' recorded transaction time.  WARNING: The Reshelving to'
-            || ' Available status rollover will trigger this.',
-            'coust',
-            'description'
-        ),
-        'bool'
-    )
-,( 
-        'circ.offline.skip_renew_if_newer_status_changed_time',
-        oils_i18n_gettext(
-            'circ.offline.skip_renew_if_newer_status_changed_time',
-            'Offline: Skip offline renewal if newer item Status Changed Time.',
-            'coust',
-            'label'
-        ),
-        oils_i18n_gettext(
-            'circ.offline.skip_renew_if_newer_status_changed_time',
-            'Skip offline renewal transaction (raise exception when'
-            || ' processing) if item Status Changed Time is newer than the'
-            || ' recorded transaction time.  WARNING: The Reshelving to'
-            || ' Available status rollover will trigger this.',
-            'coust',
-            'description'
-        ),
-        'bool'
-    )
-,( 
-        'circ.offline.skip_checkin_if_newer_status_changed_time',
-        oils_i18n_gettext(
-            'circ.offline.skip_checkin_if_newer_status_changed_time',
-            'Offline: Skip offline checkin if newer item Status Changed Time.',
-            'coust',
-            'label'
-        ),
-        oils_i18n_gettext(
-            'circ.offline.skip_checkin_if_newer_status_changed_time',
-            'Skip offline checkin transaction (raise exception when'
-            || ' processing) if item Status Changed Time is newer than the'
-            || ' recorded transaction time.  WARNING: The Reshelving to'
-            || ' Available status rollover will trigger this.',
-            'coust',
-            'description'
-        ),
-        'bool'
-    )
-,(
-        'ui.patron_search.result_cap',
-        oils_i18n_gettext(
-            'ui.patron_search.result_cap',
-            'GUI: Cap results in Patron Search at this number.',
-            'coust',
-            'label'
-        ),
-        oils_i18n_gettext(
-            'ui.patron_search.result_cap',
-            'So for example, if you search for John Doe, normally you would get'
-            || ' at most 50 results.  This setting allows you to raise or lower'
-            || ' that limit.',
-            'coust',
-            'description'
-        ),
-        'integer'
-    )
-,(
-        'circ.staff_client.receipt.header_text',
-        oils_i18n_gettext(
-            'circ.staff_client.receipt.header_text',
-            'Receipt Template: Content of header_text include',
-            'coust',
-            'label'
-        ),
-        oils_i18n_gettext(
-            'circ.staff_client.receipt.header_text',
-            'Text/HTML/Macros to be inserted into receipt templates in place of %INCLUDE(header_text)%',
-            'coust',
-            'description'
-        ),
-        'string'
-    )
-,(
-        'circ.staff_client.receipt.footer_text',
-        oils_i18n_gettext(
-            'circ.staff_client.receipt.footer_text',
-            'Receipt Template: Content of footer_text include',
-            'coust',
-            'label'
-        ),
-        oils_i18n_gettext(
-            'circ.staff_client.receipt.footer_text',
-            'Text/HTML/Macros to be inserted into receipt templates in place of %INCLUDE(footer_text)%',
-            'coust',
-            'description'
-        ),
-        'string'
-    )
-,(
-        'circ.staff_client.receipt.notice_text',
-        oils_i18n_gettext(
-            'circ.staff_client.receipt.notice_text',
-            'Receipt Template: Content of notice_text include',
-            'coust',
-            'label'
-        ),
-        oils_i18n_gettext(
-            'circ.staff_client.receipt.notice_text',
-            'Text/HTML/Macros to be inserted into receipt templates in place of %INCLUDE(notice_text)%',
-            'coust',
-            'description'
-        ),
-        'string'
-    )
-,(
-        'circ.staff_client.receipt.alert_text',
-        oils_i18n_gettext(
-            'circ.staff_client.receipt.alert_text',
-            'Receipt Template: Content of alert_text include',
-            'coust',
-            'label'
-        ),
-        oils_i18n_gettext(
-            'circ.staff_client.receipt.alert_text',
-            'Text/HTML/Macros to be inserted into receipt templates in place of %INCLUDE(alert_text)%',
-            'coust',
-            'description'
-        ),
-        'string'
-    )
-,(
-        'circ.staff_client.receipt.event_text',
-        oils_i18n_gettext(
-            'circ.staff_client.receipt.event_text',
-            'Receipt Template: Content of event_text include',
-            'coust',
-            'label'
-        ),
-        oils_i18n_gettext(
-            'circ.staff_client.receipt.event_text',
-            'Text/HTML/Macros to be inserted into receipt templates in place of %INCLUDE(event_text)%',
-            'coust',
-            'description'
-        ),
-        'string'
-    )
+,( 'ui.patron.edit.au.day_phone.show', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.day_phone.show',
+        'Show day_phone field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.day_phone.show',
+        'The day_phone field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.day_phone.suggest', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.day_phone.suggest',
+        'Suggest day_phone field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.day_phone.suggest',
+        'The day_phone field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.dob.calendar', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.dob.calendar',
+        'Show calendar widget for dob field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.dob.calendar',
+        'If set the calendar widget will appear when editing the dob field on the patron registration form.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.dob.require', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.dob.require',
+        'Require dob field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.dob.require',
+        'The dob field will be required on the patron registration screen.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.dob.show', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.dob.show',
+        'Show dob field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.dob.show',
+        'The dob field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.dob.suggest', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.dob.suggest',
+        'Suggest dob field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.dob.suggest',
+        'The dob field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.email.example', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.email.example',
+        'Example for email field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.email.example',
+        'The Example for validation on the email field in patron registration.',
+        'coust', 'description'),
+    'string', null)
+
+,( 'ui.patron.edit.au.email.regex', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.email.regex',
+        'Regex for email field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.email.regex',
+        'The Regular Expression for validation on the email field in patron registration.',
+        'coust', 'description'),
+    'string', null)
+
+,( 'ui.patron.edit.au.email.require', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.email.require',
+        'Require email field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.email.require',
+        'The email field will be required on the patron registration screen.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.email.show', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.email.show',
+        'Show email field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.email.show',
+        'The email field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.email.suggest', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.email.suggest',
+        'Suggest email field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.email.suggest',
+        'The email field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.evening_phone.example', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.evening_phone.example',
+        'Example for evening_phone field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.evening_phone.example',
+        'The Example for validation on the evening_phone field in patron registration.',
+        'coust', 'description'),
+    'string', null)
+
+,( 'ui.patron.edit.au.evening_phone.regex', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.evening_phone.regex',
+        'Regex for evening_phone field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.evening_phone.regex',
+        'The Regular Expression for validation on the evening_phone field in patron registration.',
+        'coust', 'description'),
+    'string', null)
+
+,( 'ui.patron.edit.au.evening_phone.require', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.evening_phone.require',
+        'Require evening_phone field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.evening_phone.require',
+        'The evening_phone field will be required on the patron registration screen.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.evening_phone.show', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.evening_phone.show',
+        'Show evening_phone field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.evening_phone.show',
+        'The evening_phone field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.evening_phone.suggest', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.evening_phone.suggest',
+        'Suggest evening_phone field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.evening_phone.suggest',
+        'The evening_phone field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.ident_value.show', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.ident_value.show',
+        'Show ident_value field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.ident_value.show',
+        'The ident_value field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.ident_value.suggest', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.ident_value.suggest',
+        'Suggest ident_value field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.ident_value.suggest',
+        'The ident_value field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.ident_value2.show', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.ident_value2.show',
+        'Show ident_value2 field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.ident_value2.show',
+        'The ident_value2 field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.ident_value2.suggest', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.ident_value2.suggest',
+        'Suggest ident_value2 field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.ident_value2.suggest',
+        'The ident_value2 field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.juvenile.show', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.juvenile.show',
+        'Show juvenile field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.juvenile.show',
+        'The juvenile field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.juvenile.suggest', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.juvenile.suggest',
+        'Suggest juvenile field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.juvenile.suggest',
+        'The juvenile field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.master_account.show', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.master_account.show',
+        'Show master_account field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.master_account.show',
+        'The master_account field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.master_account.suggest', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.master_account.suggest',
+        'Suggest master_account field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.master_account.suggest',
+        'The master_account field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.other_phone.example', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.other_phone.example',
+        'Example for other_phone field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.other_phone.example',
+        'The Example for validation on the other_phone field in patron registration.',
+        'coust', 'description'),
+    'string', null)
+
+,( 'ui.patron.edit.au.other_phone.regex', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.other_phone.regex',
+        'Regex for other_phone field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.other_phone.regex',
+        'The Regular Expression for validation on the other_phone field in patron registration.',
+        'coust', 'description'),
+    'string', null)
+
+,( 'ui.patron.edit.au.other_phone.require', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.other_phone.require',
+        'Require other_phone field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.other_phone.require',
+        'The other_phone field will be required on the patron registration screen.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.other_phone.show', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.other_phone.show',
+        'Show other_phone field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.other_phone.show',
+        'The other_phone field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.other_phone.suggest', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.other_phone.suggest',
+        'Suggest other_phone field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.other_phone.suggest',
+        'The other_phone field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.second_given_name.show', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.second_given_name.show',
+        'Show second_given_name field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.second_given_name.show',
+        'The second_given_name field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.second_given_name.suggest', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.second_given_name.suggest',
+        'Suggest second_given_name field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.second_given_name.suggest',
+        'The second_given_name field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.suffix.show', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.suffix.show',
+        'Show suffix field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.suffix.show',
+        'The suffix field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.au.suffix.suggest', 'gui',
+    oils_i18n_gettext('ui.patron.edit.au.suffix.suggest',
+        'Suggest suffix field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.suffix.suggest',
+        'The suffix field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.aua.county.require', 'gui',
+    oils_i18n_gettext('ui.patron.edit.aua.county.require',
+        'Require county field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.aua.county.require',
+        'The county field will be required on the patron registration screen.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.aua.post_code.example', 'gui',
+    oils_i18n_gettext('ui.patron.edit.aua.post_code.example',
+        'Example for post_code field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.aua.post_code.example',
+        'The Example for validation on the post_code field in patron registration.',
+        'coust', 'description'),
+    'string', null)
+
+,( 'ui.patron.edit.aua.post_code.regex', 'gui',
+    oils_i18n_gettext('ui.patron.edit.aua.post_code.regex',
+        'Regex for post_code field on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.aua.post_code.regex',
+        'The Regular Expression for validation on the post_code field in patron registration.',
+        'coust', 'description'),
+    'string', null)
+
+,( 'ui.patron.edit.default_suggested', 'gui',
+    oils_i18n_gettext('ui.patron.edit.default_suggested',
+        'Default showing suggested patron registration fields',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.default_suggested',
+        'Instead of All fields, show just suggested fields in patron registration by default.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.patron.edit.phone.example', 'gui',
+    oils_i18n_gettext('ui.patron.edit.phone.example',
+        'Example for phone fields on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.phone.example',
+        'The Example for validation on phone fields in patron registration. Applies to all phone fields without their own setting.',
+        'coust', 'description'),
+    'string', null)
+
+,( 'ui.patron.edit.phone.regex', 'gui',
+    oils_i18n_gettext('ui.patron.edit.phone.regex',
+        'Regex for phone fields on patron registration',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.phone.regex',
+        'The Regular Expression for validation on phone fields in patron registration. Applies to all phone fields without their own setting. NOTE: See description of the day_phone regex for important information about capture groups with it.',
+        'coust', 'description'),
+    'string', null)
+
+,( 'ui.patron.registration.require_address', 'gui',
+    oils_i18n_gettext('ui.patron.registration.require_address',
+        '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', null)
+
+,( 'ui.patron_search.result_cap', 'gui',
+    oils_i18n_gettext('ui.patron_search.result_cap',
+        'Cap results in Patron Search at this number.',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.patron_search.result_cap',
+        'So for example, if you search for John Doe, normally you would get at most 50 results.  This setting allows you to raise or lower that limit.',
+        'coust', 'description'),
+    'integer', null)
+
+,( 'ui.staff.require_initials', 'gui',
+    oils_i18n_gettext('ui.staff.require_initials',
+        'Require staff initials for entry/edit of item/patron/penalty notes/messages.',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.staff.require_initials',
+        'Appends staff initials and edit date into note content.',
+        'coust', 'description'),
+    'bool', null)
+
+,( 'ui.unified_volume_copy_editor', 'gui',
+    oils_i18n_gettext('ui.unified_volume_copy_editor',
+        'Unified Volume/Item Creator/Editor',
+        'coust', 'label'),
+    oils_i18n_gettext('ui.unified_volume_copy_editor',
+        'If true combines the Volume/Copy Creator and Item Attribute Editor in some instances.',
+        'coust', 'description'),
+    'bool', null)
 
+,( 'url.remote_column_settings', 'gui',
+    oils_i18n_gettext('url.remote_column_settings',
+        'URL for remote directory containing list column settings.',
+        'coust', 'label'),
+    oils_i18n_gettext('url.remote_column_settings',
+        'URL for remote directory containing list column settings.  The format and naming convention for the files found in this directory match those in the local settings directory for a given workstation.  An administrator could create the desired settings locally and then copy all the tree_columns_for_* files to the remote directory.',
+        'coust', 'description'),
+    'string', null)
 ;
 
 UPDATE config.org_unit_setting_type
@@ -2957,369 +4375,6 @@ UPDATE config.org_unit_setting_type
         WHERE code = 'ADMIN_CREDIT_CARD_PROCESSING' LIMIT 1)
     WHERE name LIKE 'credit.processor%' AND update_perm IS NULL;
 
--- 0234.data.org-setting-ui.circ.suppress_checkin_popups.sql
-INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) VALUES (
-        'ui.circ.suppress_checkin_popups',
-        oils_i18n_gettext(
-            'ui.circ.suppress_checkin_popups', 
-            'Suppress popup-dialogs during check-in.', 
-            'coust', 
-            'label'),
-        oils_i18n_gettext(
-            'ui.circ.suppress_checkin_popups', 
-            'Suppress popup-dialogs during check-in.', 
-            'coust', 
-            'description'),
-        'bool'
-);
-
--- 0239.data.org-setting-format.date.time.sql
-INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) VALUES (
-        'format.date',
-        oils_i18n_gettext(
-            'format.date',
-            'Format Dates with this pattern.', 
-            'coust', 
-            'label'),
-        oils_i18n_gettext(
-            'format.date',
-            'Format Dates with this pattern (examples: "yyyy-MM-dd" for "2010-04-26", "MMM d, yyyy" for "Apr 26, 2010")', 
-            'coust', 
-            'description'),
-        'string'
-), (
-        'format.time',
-        oils_i18n_gettext(
-            'format.time',
-            'Format Times with this pattern.', 
-            'coust', 
-            'label'),
-        oils_i18n_gettext(
-            'format.time',
-            'Format Times with this pattern (examples: "h:m:s.SSS a z" for "2:07:20.666 PM Eastern Daylight Time", "HH:mm" for "14:07")', 
-            'coust', 
-            'description'),
-        'string'
-);
-
--- 0247.data.org-setting-cat.bib.delete_on_no_copy_via_acq_lineitem_cancel.sql
-INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) VALUES (
-        'cat.bib.delete_on_no_copy_via_acq_lineitem_cancel',
-        oils_i18n_gettext(
-            'cat.bib.delete_on_no_copy_via_acq_lineitem_cancel',
-            'Delete bib if all copies are deleted via Acquisitions lineitem cancellation.', 
-            'coust', 
-            'label'),
-        oils_i18n_gettext(
-            'cat.bib.delete_on_no_copy_via_acq_lineitem_cancel',
-            'Delete bib if all copies are deleted via Acquisitions lineitem cancellation.', 
-            'coust', 
-            'description'),
-        'bool'
-);
-
--- 0250.data.org-setting-url.remote_column_settings.sql
-INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) VALUES (
-        'url.remote_column_settings',
-        oils_i18n_gettext(
-            'url.remote_column_settings',
-            'URL for remote directory containing list column settings.', 
-            'coust', 
-            'label'),
-        oils_i18n_gettext(
-            'url.remote_column_settings',
-            'URL for remote directory containing list column settings.  The format and naming convention for the files found in this directory match those in the local settings directory for a given workstation.  An administrator could create the desired settings locally and then copy all the tree_columns_for_* files to the remote directory.', 
-            'coust', 
-            'description'),
-        'string'
-);
-INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) VALUES (
-        'gui.disable_local_save_columns',
-        oils_i18n_gettext(
-            'gui.disable_local_save_columns',
-            'Disable the ability to save list column configurations locally.', 
-            'coust', 
-            'label'),
-        oils_i18n_gettext(
-            'gui.disable_local_save_columns',
-            'Disable the ability to save list column configurations locally.  If set, columns may still be manipulated, however, the changes do not persist.  Also, existing local configurations are ignored if this setting is true.', 
-            'coust', 
-            'description'),
-        'bool'
-);
-
--- 0290.data.org-setting-password-reset-request.sql
-INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) VALUES (
-        'circ.password_reset_request_requires_matching_email',
-        oils_i18n_gettext(
-            'circ.password_reset_request_requires_matching_email',
-            'Require matching email address for password reset requests', 
-            'coust', 
-            'label'),
-        oils_i18n_gettext(
-            'circ.password_reset_request_requires_matching_email',
-            'Require matching email address for password reset requests', 
-            'coust', 
-            'description'),
-        'bool'
-);
-
--- 0305.data.org-setting-circ.holds.expired_patron_block.sql
-INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) VALUES (
-        'circ.holds.expired_patron_block',
-        oils_i18n_gettext(
-            'circ.holds.expired_patron_block',
-            'Block hold request if hold recipient privileges have expired', 
-            'coust', 
-            'label'),
-        oils_i18n_gettext(
-            'circ.holds.expired_patron_block',
-            'Block hold request if hold recipient privileges have expired', 
-            'coust', 
-            'description'),
-        'bool'
-);
-
--- 0323.data.booking.elbow_room.sql
-INSERT INTO config.org_unit_setting_type
-    (name, label, description, datatype) VALUES (
-        'circ.booking_reservation.default_elbow_room',
-        oils_i18n_gettext(
-            'circ.booking_reservation.default_elbow_room',
-            'Booking elbow room',
-            'coust',
-            'label'
-        ),
-        oils_i18n_gettext(
-            'circ.booking_reservation.default_elbow_room',
-            'Elbow room specifies how far in the future you must make a reservation on an item if that item will have to transit to reach its pickup location.  It secondarily defines how soon a reservation on a given item must start before the check-in process will opportunistically capture it for the reservation shelf.',
-            'coust',
-            'label'
-        ),
-        'interval'
-    );
-
--- 0XXX.patron_registration.sql
-INSERT into config.org_unit_setting_type
-( name, label, description, datatype ) VALUES
-
-( 'ui.patron.edit.au.active.show',
-    oils_i18n_gettext('ui.patron.edit.au.active.show', 'Show active field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.active.show', 'The active field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.active.suggest',
-    oils_i18n_gettext('ui.patron.edit.au.active.suggest', 'Suggest active field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.active.suggest', 'The active field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.alert_message.show',
-    oils_i18n_gettext('ui.patron.edit.au.alert_message.show', 'Show alert_message field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.alert_message.show', 'The alert_message field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.alert_message.suggest',
-    oils_i18n_gettext('ui.patron.edit.au.alert_message.suggest', 'Suggest alert_message field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.alert_message.suggest', 'The alert_message field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.alias.show',
-    oils_i18n_gettext('ui.patron.edit.au.alias.show', 'Show alias field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.alias.show', 'The alias field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.alias.suggest',
-    oils_i18n_gettext('ui.patron.edit.au.alias.suggest', 'Suggest alias field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.alias.suggest', 'The alias field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.barred.show',
-    oils_i18n_gettext('ui.patron.edit.au.barred.show', 'Show barred field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.barred.show', 'The barred field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.barred.suggest',
-    oils_i18n_gettext('ui.patron.edit.au.barred.suggest', 'Suggest barred field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.barred.suggest', 'The barred field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.claims_never_checked_out_count.show',
-    oils_i18n_gettext('ui.patron.edit.au.claims_never_checked_out_count.show', 'Show claims_never_checked_out_count field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.claims_never_checked_out_count.show', 'The claims_never_checked_out_count field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.claims_never_checked_out_count.suggest',
-    oils_i18n_gettext('ui.patron.edit.au.claims_never_checked_out_count.suggest', 'Suggest claims_never_checked_out_count field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.claims_never_checked_out_count.suggest', 'The claims_never_checked_out_count field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.claims_returned_count.show',
-    oils_i18n_gettext('ui.patron.edit.au.claims_returned_count.show', 'Show claims_returned_count field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.claims_returned_count.show', 'The claims_returned_count field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.claims_returned_count.suggest',
-    oils_i18n_gettext('ui.patron.edit.au.claims_returned_count.suggest', 'Suggest claims_returned_count field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.claims_returned_count.suggest', 'The claims_returned_count field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.day_phone.example',
-    oils_i18n_gettext('ui.patron.edit.au.day_phone.example', 'Example for day_phone field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.day_phone.example', 'The Example for validation on the day_phone field in patron registration.', 'coust', 'description'),
-    'string'),
-( 'ui.patron.edit.au.day_phone.regex',
-    oils_i18n_gettext('ui.patron.edit.au.day_phone.regex', 'Regex for day_phone field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.day_phone.regex', E'The Regular Expression for validation on the day_phone field in patron registration. Note: The first capture group will be used for the "last 4 digits of phone number" feature, if enabled. Ex: "[2-9]\\d{2}-\\d{3}-(\\d{4})( x\\d+)?" will ignore the extension on a NANP number.', 'coust', 'description'),
-    'string'),
-( 'ui.patron.edit.au.day_phone.require',
-    oils_i18n_gettext('ui.patron.edit.au.day_phone.require', 'Require day_phone field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.day_phone.require', 'The day_phone field will be required on the patron registration screen.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.day_phone.show',
-    oils_i18n_gettext('ui.patron.edit.au.day_phone.show', 'Show day_phone field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.day_phone.show', 'The day_phone field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.day_phone.suggest',
-    oils_i18n_gettext('ui.patron.edit.au.day_phone.suggest', 'Suggest day_phone field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.day_phone.suggest', 'The day_phone field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.dob.calendar',
-    oils_i18n_gettext('ui.patron.edit.au.dob.calendar', 'Show calendar widget for dob field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.dob.calendar', 'If set the calendar widget will appear when editing the dob field on the patron registration form.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.dob.require',
-    oils_i18n_gettext('ui.patron.edit.au.dob.require', 'Require dob field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.dob.require', 'The dob field will be required on the patron registration screen.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.dob.show',
-    oils_i18n_gettext('ui.patron.edit.au.dob.show', 'Show dob field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.dob.show', 'The dob field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.dob.suggest',
-    oils_i18n_gettext('ui.patron.edit.au.dob.suggest', 'Suggest dob field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.dob.suggest', 'The dob field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.email.example',
-    oils_i18n_gettext('ui.patron.edit.au.email.example', 'Example for email field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.email.example', 'The Example for validation on the email field in patron registration.', 'coust', 'description'),
-    'string'),
-( 'ui.patron.edit.au.email.regex',
-    oils_i18n_gettext('ui.patron.edit.au.email.regex', 'Regex for email field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.email.regex', 'The Regular Expression for validation on the email field in patron registration.', 'coust', 'description'),
-    'string'),
-( 'ui.patron.edit.au.email.require',
-    oils_i18n_gettext('ui.patron.edit.au.email.require', 'Require email field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.email.require', 'The email field will be required on the patron registration screen.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.email.show',
-    oils_i18n_gettext('ui.patron.edit.au.email.show', 'Show email field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.email.show', 'The email field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.email.suggest',
-    oils_i18n_gettext('ui.patron.edit.au.email.suggest', 'Suggest email field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.email.suggest', 'The email field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.evening_phone.example',
-    oils_i18n_gettext('ui.patron.edit.au.evening_phone.example', 'Example for evening_phone field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.evening_phone.example', 'The Example for validation on the evening_phone field in patron registration.', 'coust', 'description'),
-    'string'),
-( 'ui.patron.edit.au.evening_phone.regex',
-    oils_i18n_gettext('ui.patron.edit.au.evening_phone.regex', 'Regex for evening_phone field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.evening_phone.regex', 'The Regular Expression for validation on the evening_phone field in patron registration.', 'coust', 'description'),
-    'string'),
-( 'ui.patron.edit.au.evening_phone.require',
-    oils_i18n_gettext('ui.patron.edit.au.evening_phone.require', 'Require evening_phone field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.evening_phone.require', 'The evening_phone field will be required on the patron registration screen.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.evening_phone.show',
-    oils_i18n_gettext('ui.patron.edit.au.evening_phone.show', 'Show evening_phone field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.evening_phone.show', 'The evening_phone field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.evening_phone.suggest',
-    oils_i18n_gettext('ui.patron.edit.au.evening_phone.suggest', 'Suggest evening_phone field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.evening_phone.suggest', 'The evening_phone field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.ident_value.show',
-    oils_i18n_gettext('ui.patron.edit.au.ident_value.show', 'Show ident_value field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.ident_value.show', 'The ident_value field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.ident_value.suggest',
-    oils_i18n_gettext('ui.patron.edit.au.ident_value.suggest', 'Suggest ident_value field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.ident_value.suggest', 'The ident_value field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.ident_value2.show',
-    oils_i18n_gettext('ui.patron.edit.au.ident_value2.show', 'Show ident_value2 field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.ident_value2.show', 'The ident_value2 field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.ident_value2.suggest',
-    oils_i18n_gettext('ui.patron.edit.au.ident_value2.suggest', 'Suggest ident_value2 field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.ident_value2.suggest', 'The ident_value2 field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.juvenile.show',
-    oils_i18n_gettext('ui.patron.edit.au.juvenile.show', 'Show juvenile field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.juvenile.show', 'The juvenile field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.juvenile.suggest',
-    oils_i18n_gettext('ui.patron.edit.au.juvenile.suggest', 'Suggest juvenile field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.juvenile.suggest', 'The juvenile field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.master_account.show',
-    oils_i18n_gettext('ui.patron.edit.au.master_account.show', 'Show master_account field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.master_account.show', 'The master_account field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.master_account.suggest',
-    oils_i18n_gettext('ui.patron.edit.au.master_account.suggest', 'Suggest master_account field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.master_account.suggest', 'The master_account field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.other_phone.example',
-    oils_i18n_gettext('ui.patron.edit.au.other_phone.example', 'Example for other_phone field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.other_phone.example', 'The Example for validation on the other_phone field in patron registration.', 'coust', 'description'),
-    'string'),
-( 'ui.patron.edit.au.other_phone.regex',
-    oils_i18n_gettext('ui.patron.edit.au.other_phone.regex', 'Regex for other_phone field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.other_phone.regex', 'The Regular Expression for validation on the other_phone field in patron registration.', 'coust', 'description'),
-    'string'),
-( 'ui.patron.edit.au.other_phone.require',
-    oils_i18n_gettext('ui.patron.edit.au.other_phone.require', 'Require other_phone field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.other_phone.require', 'The other_phone field will be required on the patron registration screen.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.other_phone.show',
-    oils_i18n_gettext('ui.patron.edit.au.other_phone.show', 'Show other_phone field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.other_phone.show', 'The other_phone field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.other_phone.suggest',
-    oils_i18n_gettext('ui.patron.edit.au.other_phone.suggest', 'Suggest other_phone field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.other_phone.suggest', 'The other_phone field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.second_given_name.show',
-    oils_i18n_gettext('ui.patron.edit.au.second_given_name.show', 'Show second_given_name field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.second_given_name.show', 'The second_given_name field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.second_given_name.suggest',
-    oils_i18n_gettext('ui.patron.edit.au.second_given_name.suggest', 'Suggest second_given_name field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.second_given_name.suggest', 'The second_given_name field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.suffix.show',
-    oils_i18n_gettext('ui.patron.edit.au.suffix.show', 'Show suffix field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.suffix.show', 'The suffix field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.au.suffix.suggest',
-    oils_i18n_gettext('ui.patron.edit.au.suffix.suggest', 'Suggest suffix field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.suffix.suggest', 'The suffix field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.aua.county.require',
-    oils_i18n_gettext('ui.patron.edit.aua.county.require', 'Require county field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.aua.county.require', 'The county field will be required on the patron registration screen.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.aua.post_code.example',
-    oils_i18n_gettext('ui.patron.edit.aua.post_code.example', 'Example for post_code field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.aua.post_code.example', 'The Example for validation on the post_code field in patron registration.', 'coust', 'description'),
-    'string'),
-( 'ui.patron.edit.aua.post_code.regex',
-    oils_i18n_gettext('ui.patron.edit.aua.post_code.regex', 'Regex for post_code field on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.aua.post_code.regex', 'The Regular Expression for validation on the post_code field in patron registration.', 'coust', 'description'),
-    'string'),
-( 'ui.patron.edit.default_suggested',
-    oils_i18n_gettext('ui.patron.edit.default_suggested', 'Default showing suggested patron registration fields', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.default_suggested', 'Instead of All fields, show just suggested fields in patron registration by default.', 'coust', 'description'),
-    'bool'),
-( 'ui.patron.edit.phone.example',
-    oils_i18n_gettext('ui.patron.edit.phone.example', 'Example for phone fields on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.phone.example', 'The Example for validation on phone fields in patron registration. Applies to all phone fields without their own setting.', 'coust', 'description'),
-    'string'),
-( 'ui.patron.edit.phone.regex',
-    oils_i18n_gettext('ui.patron.edit.phone.regex', 'Regex for phone fields on patron registration', 'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.phone.regex', 'The Regular Expression for validation on phone fields in patron registration. Applies to all phone fields without their own setting. NOTE: See description of the day_phone regex for important information about capture groups with it.', 'coust', 'description'),
-    'string');
-
 -- *** Has to go below coust definition to satisfy referential integrity ***
 -- In booking, elbow room defines:
 --  a) how far in the future you must make a reservation on a given item if
@@ -3329,17 +4384,15 @@ INSERT into config.org_unit_setting_type
 INSERT INTO actor.org_unit_setting (org_unit, name, value) VALUES (
     (SELECT id FROM actor.org_unit WHERE parent_ou IS NULL),
     'circ.booking_reservation.default_elbow_room',
-    '"1 day"'
-);
+    '"1 day"')
+    ,(1, 'cat.spine.line.margin', 0)
+    ,(1, 'cat.spine.line.height', 9)
+    ,(1, 'cat.spine.line.width', 8)
+    ,(1, 'cat.label.font.family', '"monospace"')
+    ,(1, 'cat.label.font.size', 10)
+    ,(1, 'cat.label.font.weight', '"normal"')
+;
 
--- Org_unit_setting_type(s) that need an fm_class:
-INSERT into config.org_unit_setting_type
-( name, label, description, datatype, fm_class ) VALUES
-( 'acq.default_copy_location',
-  oils_i18n_gettext( 'acq.default_copy_location', 'Default copy location', 'coust', 'label'),
-  oils_i18n_gettext( 'acq.default_copy_location', 'Default copy location', 'coust', 'description'),
-  'link',
-  'acpl' );
 
 -- Staged Search (for default matchpoints)
 INSERT INTO search.relevance_adjustment (field, bump_type, multiplier) VALUES(1, 'first_word', 1.5);
@@ -5851,76 +6904,6 @@ INSERT INTO action_trigger.environment (event_def, path) VALUES
 
 SELECT SETVAL('action_trigger.event_definition_id_seq'::TEXT, 100);
 
--- Org Unit Settings for configuring org unit weights and org unit max-loops for hold targeting
-
-INSERT INTO config.org_unit_setting_type (name, label, description, datatype) VALUES (
-    'circ.holds.org_unit_target_weight',
-    oils_i18n_gettext('circ.holds.org_unit_target_weight', 'Org Unit Target Weight', 'coust', 'label'),
-    oils_i18n_gettext('circ.holds.org_unit_target_weight', 'Org Units can be organized into hold target groups based on a weight.  Potential copies from org units with the same weight are chosen at random.', 'coust', 'description'),
-    'integer'
-);
-
-INSERT INTO config.org_unit_setting_type (name, label, description, datatype) VALUES (
-    'circ.holds.target_holds_by_org_unit_weight',
-    oils_i18n_gettext('circ.holds.target_holds_by_org_unit_weight', 'Use weight-based hold targeting', 'coust', 'label'),
-    oils_i18n_gettext('circ.holds.target_holds_by_org_unit_weight', 'Use library weight based hold targeting', 'coust', 'description'),
-    'bool'
-);
-
-INSERT INTO config.org_unit_setting_type (name, label, description, datatype) VALUES (
-    'circ.holds.max_org_unit_target_loops',
-    oils_i18n_gettext('circ.holds.max_org_unit_target_loops', 'Maximum library target attempts', 'coust', 'label'),
-    oils_i18n_gettext('circ.holds.max_org_unit_target_loops', 'When this value is set and greater than 0, the system will only attempt to find a copy at each possible branch the configured number of times', 'coust', 'description'),
-    'integer'
-);
-
-
--- Org setting for overriding the circ lib of a precat copy
-INSERT INTO config.org_unit_setting_type (name, label, description, datatype) VALUES (
-    'circ.pre_cat_copy_circ_lib',
-    oils_i18n_gettext('circ.pre_cat_copy_circ_lib', 'Pre-cat Item Circ Lib', 'coust', 'label'),
-    oils_i18n_gettext('circ.pre_cat_copy_circ_lib', 'Override the default circ lib of "here" with a pre-configured circ lib for pre-cat items.  The value should be the "shortname" (aka policy name) of the org unit', 'coust', 'description'),
-    'string'
-);
-
--- Circ auto-renew interval setting
-INSERT INTO config.org_unit_setting_type (name, label, description, datatype) VALUES (
-    'circ.checkout_auto_renew_age',
-    oils_i18n_gettext('circ.checkout_auto_renew_age', 'Checkout auto renew age', 'coust', 'label'),
-    oils_i18n_gettext('circ.checkout_auto_renew_age', 'When an item has been checked out for at least this amount of time, an attempt to check out the item to the patron that it is already checked out to will simply renew the circulation', 'coust', 'description'),
-    'interval'
-);
-
--- Setting for behind the desk hold pickups
-INSERT INTO config.org_unit_setting_type (name, label, description, datatype) VALUES (
-    'circ.holds.behind_desk_pickup_supported',
-    oils_i18n_gettext('circ.holds.behind_desk_pickup_supported',
-        'Behind Desk Pickup Supported',
-        'coust',
-        'label'),
-    oils_i18n_gettext('circ.holds.behind_desk_pickup_supported',
-        'If a branch supports both a public holds shelf and behind-the-desk pickups, set this value to true.  This gives the patron the option to enable behind-the-desk pickups for their holds',
-        'coust',
-        'description'),
-    'bool'
-);
-
--- 0227.data.org-setting-acq.holds.allow_holds_from_purchase_request.sql
-INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) VALUES (
-        'acq.holds.allow_holds_from_purchase_request',
-        oils_i18n_gettext(
-            'acq.holds.allow_holds_from_purchase_request', 
-            'Allows patrons to create automatic holds from purchase requests.', 
-            'coust', 
-            'label'),
-        oils_i18n_gettext(
-            'acq.holds.allow_holds_from_purchase_request', 
-            'Allows patrons to create automatic holds from purchase requests.', 
-            'coust', 
-            'description'),
-        'bool'
-);
-
 -- Hold cancel action/trigger hooks
 
 INSERT INTO action_trigger.hook (key,core_type,description) VALUES (
@@ -5948,16 +6931,6 @@ INSERT INTO action_trigger.hook (key,core_type,description) VALUES (
 );
 
 
-
--- hold targeter skip me
-INSERT INTO config.org_unit_setting_type (name, label, description, datatype) VALUES (
-    'circ.holds.target_skip_me',
-    'Skip For Hold Targeting',
-    'When true, don''t target any copies at this org unit for holds',
-    'bool'
-);
-
-
 -- in-db indexing normalizers
 INSERT INTO config.index_normalizer (name, description, func, param_count) VALUES (
 	'NACO Normalize',
@@ -6138,60 +7111,6 @@ INSERT INTO config.record_attr_index_norm_map (attr,norm,pos)
       WHERE i.func IN ('approximate_high_date')
             AND m.name IN ('date2');
 
--- claims never checked out mark item missing 
-INSERT INTO
-    config.org_unit_setting_type ( name, label, description, datatype )
-    VALUES (
-        'circ.claim_never_checked_out.mark_missing',
-        oils_i18n_gettext('circ.claim_never_checked_out.mark_missing', 'Claim Never Checked Out: Mark copy as missing', 'coust', 'label'),
-        oils_i18n_gettext('circ.claim_never_checked_out.mark_missing', 'When a circ is marked as claims-never-checked-out, mark the copy as missing', 'coust', 'description'),
-        'bool'
-    );
-
--- mark damaged void overdue setting
-INSERT INTO
-    config.org_unit_setting_type ( name, label, description, datatype )
-    VALUES (
-        'circ.damaged.void_ovedue',
-        oils_i18n_gettext('circ.damaged.void_ovedue', 'Mark item damaged voids overdues', 'coust', 'label'),
-        oils_i18n_gettext('circ.damaged.void_ovedue', 'When an item is marked damaged, overdue fines on the most recent circulation are voided.', 'coust', 'description'),
-        'bool'
-    );
-
--- hold cancel display limits
-INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
-    VALUES (
-        'circ.holds.canceled.display_count',
-        oils_i18n_gettext('circ.holds.canceled.display_count', 'Canceled holds display count', 'coust', 'label'),
-        oils_i18n_gettext('circ.holds.canceled.display_count', 'How many canceled holds to show in patron holds interfaces', 'coust', 'description'),
-        'integer'
-    );
-
-INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
-    VALUES (
-        'circ.holds.canceled.display_age',
-        oils_i18n_gettext('circ.holds.canceled.display_age', 'Canceled holds display age', 'coust', 'label'),
-        oils_i18n_gettext('circ.holds.canceled.display_age', 'Show all canceled holds that were canceled within this amount of time', 'coust', 'description'),
-        'interval'
-    );
-
-INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
-    VALUES (
-        'circ.holds.uncancel.reset_request_time',
-        oils_i18n_gettext('circ.holds.uncancel.reset_request_time', 'Reset request time on un-cancel','coust', 'label'),
-        oils_i18n_gettext('circ.holds.uncancel.reset_request_time', 'When a hold is uncanceled, reset the request time to push it to the end of the queue', 'coust', 'description'),
-        'bool'
-    );
-
-INSERT INTO config.org_unit_setting_type (name, label, description, datatype)
-    VALUES (
-        'circ.holds.default_shelf_expire_interval',
-        oils_i18n_gettext('circ.holds.default_shelf_expire_interval', 'Default hold shelf expire interval', 'coust', 'label'),
-        oils_i18n_gettext('circ.holds.default_shelf_expire_interval', '', 'coust', 'description'),
-        'interval'
-);
-
-
 -- Sample Pre-due Notice --
 
 INSERT INTO action_trigger.event_definition (id, active, owner, name, hook, validator, reactor, delay, delay_field, group_field, max_delay, template) 
@@ -6244,54 +7163,6 @@ INSERT INTO action_trigger.reactor (module,description) VALUES
     )
 );
 
-
-INSERT INTO config.org_unit_setting_type (name, label, description, datatype, fm_class)
-    VALUES (
-        'circ.claim_return.copy_status', 
-        'Claim Return Copy Status', 
-        'Claims returned copies are put into this status.  Default is to leave the copy in the Checked Out status',
-        'link', 
-        'ccs' 
-    );
-
-INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) 
-    VALUES ( 
-        'circ.max_fine.cap_at_price',
-        oils_i18n_gettext('circ.max_fine.cap_at_price', 'Cap Max Fine at Item Price', 'coust', 'label'),
-        oils_i18n_gettext('circ.max_fine.cap_at_price', 'This prevents the system from charging more than the item price in overdue fines', 'coust', 'description'),
-        'bool' 
-    );
-
-INSERT INTO config.org_unit_setting_type ( name, label, description, datatype, fm_class ) 
-    VALUES ( 
-        'circ.holds.clear_shelf.copy_status',
-        oils_i18n_gettext('circ.holds.clear_shelf.copy_status', 'Clear shelf copy status', 'coust', 'label'),
-        oils_i18n_gettext('circ.holds.clear_shelf.copy_status', 'Any copies that have not been put into reshelving, in-transit, or on-holds-shelf (for a new hold) during the clear shelf process will be put into this status.  This is basically a purgatory status for copies waiting to be pulled from the shelf and processed by hand', 'coust', 'description'),
-        'link',
-        'ccs'
-    );
-
-INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
-    VALUES ( 
-        'circ.selfcheck.workstation_required',
-        oils_i18n_gettext('circ.selfcheck.workstation_required', 'Workstation Required', 'coust', 'label'),
-        oils_i18n_gettext('circ.selfcheck.workstation_required', 'All selfcheck stations must use a workstation', 'coust', 'description'),
-        'bool'
-    ), (
-        'circ.selfcheck.patron_password_required',
-        oils_i18n_gettext('circ.selfcheck.patron_password_required', 'Require Patron Password', 'coust', 'label'),
-        oils_i18n_gettext('circ.selfcheck.patron_password_required', 'Patron must log in with barcode and password at selfcheck station', 'coust', 'description'),
-        'bool'
-    );
-
-INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
-    VALUES ( 
-        'circ.selfcheck.alert.sound',
-        oils_i18n_gettext('circ.selfcheck.alert.sound', 'Audio Alerts', 'coust', 'label'),
-        oils_i18n_gettext('circ.selfcheck.alert.sound', 'Use audio alerts for selfcheck events', 'coust', 'description'),
-        'bool'
-    );
-
 -- self-check checkout receipt
 
 INSERT INTO action_trigger.hook (key, core_type, description, passive) 
@@ -6785,19 +7656,6 @@ INSERT INTO action_trigger.environment (event_def, path) VALUES
   (23, 'provider'),
   (23, 'provider.edi_default');
 
-INSERT INTO
-    config.org_unit_setting_type (name, label, description, datatype)
-    VALUES (
-        'notice.telephony.callfile_lines',
-        'Telephony: Arbitrary line(s) to include in each notice callfile',
-        $$
-        This overrides lines from opensrf.xml.
-        Line(s) must be valid for your target server and platform
-        (e.g. Asterisk 1.4).
-        $$,
-        'string'
-    );
-
 INSERT INTO action_trigger.reactor (module, description) VALUES (
     'AstCall', 'Possibly place a phone call with Asterisk'
 );
@@ -6838,14 +7696,6 @@ INSERT INTO
         (DEFAULT, 24, 'usr')
     ;
 
-INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
-    VALUES ( 
-        'circ.offline.username_allowed',
-        oils_i18n_gettext('circ.offline.username_allowed', 'Offline: Patron Usernames Allowed', 'coust', 'label'),
-        oils_i18n_gettext('circ.offline.username_allowed', 'During offline circulations, allow patrons to identify themselves with usernames in addition to barcode.  For this setting to work, a barcode format must also be defined', 'coust', 'description'),
-        'bool'
-    );
-
 -- 0285.data.history_format.sql
 
 INSERT INTO action_trigger.hook (key,core_type,description,passive) VALUES (
@@ -7389,24 +8239,6 @@ INSERT INTO action_trigger.environment (
         ,( 32, 'items.target_biblio_record_entry.full_record_entries' )
 ;
 
--- Org unit settings for fund spending limits
-
-INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
-VALUES (
-    'acq.fund.balance_limit.warn',
-    oils_i18n_gettext('acq.fund.balance_limit.warn', 'Fund Spending Limit for Warning', 'coust', 'label'),
-    oils_i18n_gettext('acq.fund.balance_limit.warn', 'When the amount remaining in the fund, including spent money and encumbrances, goes below this percentage, attempts to spend from the fund will result in a warning to the staff.', 'coust', 'descripton'),
-    'integer'
-);
-
-INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
-VALUES (
-    'acq.fund.balance_limit.block',
-    oils_i18n_gettext('acq.fnd.balance_limit.block', 'Fund Spending Limit for Block', 'coust', 'label'),
-    oils_i18n_gettext('acq.fund.balance_limit.block', 'When the amount remaining in the fund, including spent money and encumbrances, goes below this percentage, attempts to spend from the fund will be blocked.', 'coust', 'description'),
-    'integer'
-);
-
 INSERT INTO acq.invoice_item_type (code,name) VALUES ('TAX',oils_i18n_gettext('TAX', 'Tax', 'aiit', 'name'));
 INSERT INTO acq.invoice_item_type (code,name) VALUES ('PRO',oils_i18n_gettext('PRO', 'Processing Fee', 'aiit', 'name'));
 INSERT INTO acq.invoice_item_type (code,name) VALUES ('SHP',oils_i18n_gettext('SHP', 'Shipping Charge', 'aiit', 'name'));
@@ -8039,20 +8871,6 @@ INSERT INTO acq.cancel_reason (org_unit, keep_debits, id, label, description) VA
 ;
 -- ZZZ, 'Mutually defined', 'As agreed by the trading partners.'),
 
-
-INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
-    VALUES (
-        'circ.holds.hold_has_copy_at.alert',
-        oils_i18n_gettext('circ.holds.hold_has_copy_at.alert', 'Has Local Copy Alert', 'coust', 'label'),
-        oils_i18n_gettext('circ.holds.hold_has_copy_at.alert', 'If there is an available copy at the requesting library that could fulfill a hold during hold placement time, alert the patron', 'coust', 'description'),
-        'bool'
-    ),(
-        'circ.holds.hold_has_copy_at.block',
-        oils_i18n_gettext('circ.holds.hold_has_copy_at.block', 'Has Local Copy Block', 'coust', 'label'),
-        oils_i18n_gettext('circ.holds.hold_has_copy_at.block', 'If there is an available copy at the requesting library that could fulfill a hold during hold placement time, do not allow the hold to be placed', 'coust', 'description'),
-        'bool'
-    );
-
 INSERT INTO config.global_flag (name, label, enabled)
     VALUES (
         'circ.holds.usr_not_requestor',
@@ -8182,30 +9000,6 @@ INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatyp
         'integer'
     );
 
--- 0281.data.persistent-login-interval.sql
-INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
-VALUES (
-    'auth.persistent_login_interval',
-    oils_i18n_gettext('auth.persistent_login_interval', 'Persistent Login Duration', 'coust', 'label'),
-    oils_i18n_gettext('auth.persistent_login_interval', 'How long a persistent login lasts.  E.g. ''2 weeks''', 'coust', 'description'),
-    'interval'
-);
-
-INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) VALUES (
-        'cat.marc_control_number_identifier',
-        oils_i18n_gettext(
-            'cat.marc_control_number_identifier', 
-            'Defines the control number identifier used in 003 and 035 fields.', 
-            'coust', 
-            'label'),
-        oils_i18n_gettext(
-            'cat.marc_control_number_identifier', 
-            'Cat: Defines the control number identifier used in 003 and 035 fields.', 
-            'coust', 
-            'description'),
-        'string'
-);
-
 -- 0311.data.query-seed-datatypes.sql
 -- Define the most common datatypes in query.datatype.  Note that none of
 -- these stock datatypes specifies a width or precision.
@@ -8298,65 +9092,6 @@ INSERT INTO config.usr_setting_type (name, opac_visible, label, description, dat
         'string'
     );
 
-INSERT INTO config.org_unit_setting_type (name, label, description, datatype) 
-    VALUES (
-        'circ.selfcheck.block_checkout_on_copy_status',
-        oils_i18n_gettext(
-            'circ.selfcheck.block_checkout_on_copy_status',
-            'Block copy checkout status',
-            'coust',
-            'label'
-        ),
-        oils_i18n_gettext(
-            'circ.selfcheck.block_checkout_on_copy_status',
-            'List of copy status IDs that will block checkout even if the generic COPY_NOT_AVAILABLE event is overridden',
-            'coust',
-            'description'
-        ),
-        'array'
-    );
-
--- 0359.data.setting-prev-iss-copy-loc.sql
-
-INSERT INTO config.org_unit_setting_type ( name, label, description, datatype, fm_class )
-VALUES (
-    'serial.prev_issuance_copy_location',
-    oils_i18n_gettext(
-        'serial.prev_issuance_copy_location',
-        'Previous Issuance Copy Location',
-        'coust',
-        'label'
-    ),
-    oils_i18n_gettext(
-        'serial.prev_issuance_copy_location',
-        'When a serial issuance is received, copies (units) of the previous issuance will be automatically moved into the configured shelving location',
-        'coust',
-        'descripton'
-        ),
-    'link',
-    'acpl'
-);
-
-INSERT INTO config.org_unit_setting_type ( name, label, description, datatype, fm_class )
-VALUES (
-    'cat.default_classification_scheme',
-    oils_i18n_gettext(
-        'cat.default_classification_scheme',
-        'Default Classification Scheme',
-        'coust',
-        'label'
-    ),
-    oils_i18n_gettext(
-        'cat.default_classification_scheme',
-        'Defines the default classification scheme for new call numbers: 1 = Generic; 2 = Dewey; 3 = LC',
-        'coust',
-        'descripton'
-        ),
-    'link',
-    'acnc'
-);
-
-
 -- 0355.data.missing_pieces_format.sql
 
 INSERT INTO action_trigger.hook (key,core_type,description,passive) VALUES 
@@ -8480,127 +9215,6 @@ INSERT INTO action_trigger.environment (
         ,( 34, 'circ_lib.billing_address')
 ;
 
--- 0373.data.org-setting-opac.org_unit_hiding.depth.sql
-INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) VALUES (
-        'opac.org_unit_hiding.depth',
-        oils_i18n_gettext(
-            'opac.org_unit_hiding.depth',
-            'Org Unit Hiding Depth', 
-            'coust', 
-            'label'),
-        oils_i18n_gettext(
-            'opac.org_unit_hiding.depth',
-            'This will hide certain org units in the public OPAC if the Original Location (url param "ol") for the OPAC inherits this setting.  This setting specifies an org unit depth, that together with the OPAC Original Location determines which section of the Org Hierarchy should be visible in the OPAC.  For example, a stock Evergreen installation will have a 3-tier hierarchy (Consortium/System/Branch), where System has a depth of 1 and Branch has a depth of 2.  If this setting contains a depth of 1 in such an installation, then every library in the System in which the Original Location belongs will be visible, and everything else will be hidden.  A depth of 0 will effectively make every org visible.  The embedded OPAC in the staff client ignores this setting.', 
-            'coust', 
-            'description'),
-        'integer'
-);
-
-INSERT INTO config.org_unit_setting_type (name, label, description, datatype)
-    VALUES
-        ('circ.holds.clear_shelf.no_capture_holds',
-        oils_i18n_gettext( 'circ.holds.clear_shelf.no_capture_holds',
-            'Bypass hold capture during clear shelf process', 'coust', 'label'),
-        oils_i18n_gettext( 'circ.holds.clear_shelf.no_capture_holds',
-            'During the clear shelf process, avoid capturing new holds on cleared items.', 'coust', 'description'),
-        'bool')
-;
-
--- 0379.data.org-setting-circ.missing_pieces.copy_status.sql
-INSERT INTO config.org_unit_setting_type ( name, label, description, datatype, fm_class ) VALUES (
-        'circ.missing_pieces.copy_status',
-        oils_i18n_gettext(
-            'circ.missing_pieces.copy_status',
-            'Item Status for Missing Pieces', 
-            'coust', 
-            'label'),
-        oils_i18n_gettext(
-            'circ.missing_pieces.copy_status',
-            'This is the Item Status to use for items that have been marked or scanned as having Missing Pieces.  In the absence of this setting, the Damaged status is used.',
-            'coust', 
-            'description'),
-        'link',
-        'ccs'
-);
-
--- 0380.data.spine_label.sql Add spine label preferences
-INSERT INTO config.org_unit_setting_type (name, label, description, datatype)
-    VALUES
-        ('cat.label.font.size',
-            oils_i18n_gettext('cat.label.font.size',
-                'Spine and pocket label font size', 'coust', 'label'),
-            oils_i18n_gettext('cat.label.font.size',
-                'Set the default font size for spine and pocket labels', 'coust', 'description'),
-            'integer'
-        )
-        ,('cat.label.font.family',
-            oils_i18n_gettext('cat.label.font.family',
-                'Spine and pocket label font family', 'coust', 'label'),
-            oils_i18n_gettext('cat.label.font.family',
-                'Set the preferred font family for spine and pocket labels. You can specify a list of fonts, separated by commas, in order of preference; the system will use the first font it finds with a matching name. For example, "Arial, Helvetica, serif".',
-                'coust', 'description'),
-            'string'
-        )
-        ,('cat.spine.line.width',
-            oils_i18n_gettext('cat.spine.line.width',
-                'Spine label line width', 'coust', 'label'),
-            oils_i18n_gettext('cat.spine.line.width',
-                'Set the default line width for spine labels in number of characters. This specifies the boundary at which lines must be wrapped.',
-                'coust', 'description'),
-            'integer'
-        )
-        ,('cat.spine.line.height',
-            oils_i18n_gettext('cat.spine.line.height',
-                'Spine label maximum lines', 'coust', 'label'),
-            oils_i18n_gettext('cat.spine.line.height',
-                'Set the default maximum number of lines for spine labels.',
-                'coust', 'description'),
-            'integer'
-        )
-        ,('cat.spine.line.margin',
-            oils_i18n_gettext('cat.spine.line.margin',
-                'Spine label left margin', 'coust', 'label'),
-            oils_i18n_gettext('cat.spine.line.margin',
-                'Set the left margin for spine labels in number of characters.',
-                'coust', 'description'),
-            'integer'
-        )
-        ,('cat.label.font.weight',
-            oils_i18n_gettext('cat.label.font.weight',
-                'Spine and pocket label font weight', 'coust', 'label'),
-            oils_i18n_gettext('cat.label.font.weight',
-                'Set the preferred font weight for spine and pocket labels. You can specify "normal", "bold", "bolder", or "lighter".',
-                'coust', 'description'),
-            'string'
-        )
-;
-
-INSERT INTO actor.org_unit_setting (org_unit, name, value) VALUES
-    (1, 'cat.spine.line.margin', 0)
-    ,(1, 'cat.spine.line.height', 9)
-    ,(1, 'cat.spine.line.width', 8)
-    ,(1, 'cat.label.font.family', '"monospace"')
-    ,(1, 'cat.label.font.size', 10)
-    ,(1, 'cat.label.font.weight', '"normal"')
-;
-
--- 0383.data.org-setting-circ.do_not_tally_claims_returned.sql
-
-INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) VALUES (
-        'circ.do_not_tally_claims_returned',
-        oils_i18n_gettext(
-            'circ.do_not_tally_claims_returned',
-            'Do not include outstanding Claims Returned circulations in lump sum tallies in Patron Display.', 
-            'coust', 
-            'label'),
-        oils_i18n_gettext(
-            'circ.do_not_tally_claims_returned',
-            'In the Patron Display interface, the number of total active circulations for a given patron is presented in the Summary sidebar and underneath the Items Out navigation button.  This setting will prevent Claims Returned circulations from counting toward these tallies.',
-            'coust', 
-            'description'),
-        'bool'
-);
-
 -- 0384.data.hold_pull_list_template.sql
 
 INSERT INTO action_trigger.hook (key,core_type,description,passive) 
@@ -8713,75 +9327,6 @@ INSERT INTO action_trigger.environment (
         (35, 'current_copy.parts.part')
 ;
 
--- 0386.data.org-setting-patron-clone-copy-addr.sql
-
-INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) VALUES (
-        'circ.patron_edit.clone.copy_address',
-        oils_i18n_gettext(
-            'circ.patron_edit.clone.copy_address',
-            'Patron Registration: Cloned patrons get address copy',
-            'coust', 
-            'label'
-        ),
-        oils_i18n_gettext(
-            'circ.patron_edit.clone.copy_address',
-            'In the Patron editor, copy addresses from the cloned user instead of linking directly to the address',
-            'coust', 
-            'description'
-        ),
-        'bool'
-);
-
--- 0388.data.org-setting-ui.patron.editor_defaults.sql
-
-INSERT INTO config.org_unit_setting_type ( name, label, description, datatype, fm_class ) VALUES (
-        'ui.patron.default_ident_type',
-        oils_i18n_gettext(
-            'ui.patron.default_ident_type',
-            'Default Ident Type for Patron Registration', 
-            'coust', 
-            'label'),
-        oils_i18n_gettext(
-            'ui.patron.default_ident_type',
-            'This is the default Ident Type for new users in the patron editor.',
-            'coust', 
-            'description'),
-        'link',
-        'cit'
-);
-
-INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) VALUES (
-        'ui.patron.default_country',
-        oils_i18n_gettext(
-            'ui.patron.default_country',
-            'Default Country for New Addresses in Patron Editor', 
-            'coust', 
-            'label'),
-        oils_i18n_gettext(
-            'ui.patron.default_country',
-            'This is the default Country for new addresses in the patron editor.',
-            'coust', 
-            'description'),
-        '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',
-            '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'
-);
-
 -- 0412.data.trigger.validator.HoldIsCancelled.sql
 
 INSERT INTO action_trigger.validator (module, description) VALUES (
@@ -8830,37 +9375,6 @@ INSERT INTO action_trigger.event_definition (
     )
 ;
 
--- 0460 schema for recalls triggered by holds
-INSERT INTO config.org_unit_setting_type (name, label, description, datatype)
-    VALUES
-        ('circ.holds.recall_threshold',
-        oils_i18n_gettext( 'circ.holds.recall_threshold',
-            'Circulation duration that triggers a recall.', 'coust', 'label'),
-        oils_i18n_gettext( 'circ.holds.recall_threshold',
-            'Recalls: A hold placed on an item with a circulation duration longer than this will trigger a recall. For example, "14 days" or "3 weeks".', 'coust', 'description'),
-        'interval')
-;
-
-INSERT INTO config.org_unit_setting_type (name, label, description, datatype)
-    VALUES
-        ('circ.holds.recall_return_interval',
-        oils_i18n_gettext( 'circ.holds.recall_return_interval',
-            'Truncated loan period.', 'coust', 'label'),
-        oils_i18n_gettext( 'circ.holds.recall_return_interval',
-            'Recalls: When a recall is triggered, this defines the adjusted loan period for the item. For example, "4 days" or "1 week".', 'coust', 'description'),
-        'interval')
-;
-
-INSERT INTO config.org_unit_setting_type (name, label, description, datatype)
-    VALUES
-        ('circ.holds.recall_fine_rules',
-        oils_i18n_gettext( 'circ.holds.recall_fine_rules',
-            'An array of fine amount, fine interval, and maximum fine.', 'coust', 'label'),
-        oils_i18n_gettext( 'circ.holds.recall_fine_rules',
-            'Recalls: An array of fine amount, fine interval, and maximum fine. For example, to specify a new fine rule of $5.00 per day, with a maximum fine of $50.00, use: [5.00,"1 day",50.00]', 'coust', 'description'),
-        'array')
-;
-
 INSERT INTO action_trigger.hook (key,core_type,description)
     VALUES ('circ.recall.target', 'circ', 'A checked-out copy has been recalled for a hold.');
 
@@ -8923,105 +9437,6 @@ INSERT INTO vandelay.import_error ( code, description ) VALUES (
 INSERT INTO vandelay.import_error ( code, description ) VALUES ( 
     'import.item.invalid.circ_as_type', oils_i18n_gettext('import.item.invalid.circ_as_type', 'Invalid value for "circ_as_type"', 'vie', 'description') );
 
-INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) VALUES (
-    'ui.cat.volume_copy_editor.horizontal',
-    oils_i18n_gettext(
-        'ui.cat.volume_copy_editor.horizontal',
-        'Horizontal layout for Volume/Copy Creator/Editor.',
-        'coust', 'label'),
-    oils_i18n_gettext(
-        'ui.cat.volume_copy_editor.horizontal',
-        'The main entry point for this interface is in Holdings Maintenance, Actions for Selected Rows, Edit Item Attributes / Call Numbers / Replace Barcodes.  This setting changes the top and bottom panes for that interface into left and right panes.',
-        'coust', 'description'),
-    'bool'
-);
-
-INSERT into config.org_unit_setting_type
-( name, label, description, datatype, fm_class ) VALUES
-( 'cat.default_copy_status_fast',
-  oils_i18n_gettext( 'cat.default_copy_status_fast', 'Default copy status (fast add)', 'coust', 'label'),
-  oils_i18n_gettext( 'cat.default_copy_status_fast', 'Default status when a copy is created using the "Fast Add" interface.', 'coust', 'description'),
-  'link', 'ccs'
-);
-
-INSERT into config.org_unit_setting_type
-( name, label, description, datatype, fm_class ) VALUES
-( 'cat.default_copy_status_normal',
-  oils_i18n_gettext( 'cat.default_copy_status_normal', 'Default copy status (normal)', 'coust', 'label'),
-  oils_i18n_gettext( 'cat.default_copy_status_normal', 'Default status when a copy is created using the normal volume/copy creator interface.', 'coust', 'description'),
-  'link', 'ccs'
-);
-
--- 0524.data.toggle_unified_volume_copy_editor.sql
-
-INSERT into config.org_unit_setting_type
-( name, label, description, datatype ) VALUES
-( 'ui.unified_volume_copy_editor',
-  oils_i18n_gettext( 'ui.unified_volume_copy_editor', 'Unified Volume/Item Creator/Editor', 'coust', 'label'),
-  oils_i18n_gettext( 'ui.unified_volume_copy_editor', 'If true combines the Volume/Copy Creator and Item Attribute Editor in some instances.', 'coust', 'description'),
-  'bool'
-);
-
--- add patron merge org unit settings
-
-INSERT INTO config.org_unit_setting_type 
-( name, label, description, datatype ) VALUES 
-( 'circ.user_merge.delete_addresses', 
-  oils_i18n_gettext('circ.user_merge.delete_addresses','Patron Merge Address Delete', 'coust', 'label'),
-  oils_i18n_gettext('circ.user_merge.delete_addresses','Delete address(es) of subordinate user(s) in a patron merge', 'coust', 'description'),
-   'bool'
-);
-
-INSERT INTO config.org_unit_setting_type 
-( name, label, description, datatype ) VALUES 
-( 'circ.user_merge.delete_cards', 
-  oils_i18n_gettext('circ.user_merge.delete_cards','Patron Merge Barcode Delete', 'coust', 'label'),
-  oils_i18n_gettext('circ.user_merge.delete_cards','Delete barcode(s) of subordinate user(s) in a patron merge', 'coust', 'description'),
-  'bool'
-);
-
-INSERT INTO config.org_unit_setting_type 
-( name, label, description, datatype ) VALUES 
-( 'circ.user_merge.deactivate_cards', 
-  oils_i18n_gettext('circ.user_merge.deactivate_cards','Patron Merge Deactivate Card', 'coust', 'label'),
-  oils_i18n_gettext('circ.user_merge.deactivate_cards','Mark barcode(s) of subordinate user(s) in a patron merge as inactive', 'coust', 'description'),
-  'bool'
-);
-
-INSERT INTO config.usr_setting_type 
-( name, opac_visible, label, description, datatype) VALUES 
-( 'circ.collections.exempt',
-  FALSE, 
-  oils_i18n_gettext('circ.collections.exempt', 'Collections: Exempt', 'cust', 'description'),
-  oils_i18n_gettext('circ.collections.exempt', 'User is exempt from collections tracking/processing', 'cust', 'description'),
-  'bool'
-);
-
-INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) VALUES (
-    'circ.transit.min_checkin_interval',
-    oils_i18n_gettext( 
-        'circ.transit.min_checkin_interval', 
-        'Minimum Transit Checkin Interval',
-        'coust',
-        'label'
-    ),
-    oils_i18n_gettext( 
-        'circ.transit.min_checkin_interval', 
-        'In-Transit items checked in this close to the transit start time will be prevented from checking in',
-        'coust',
-        'label'
-    ),
-    'interval'
-);
-
-INSERT INTO config.org_unit_setting_type 
-( name, label, description, datatype ) VALUES 
-( 'cat.volume.delete_on_empty',
-  oils_i18n_gettext('cat.volume.delete_on_empty', 'Cat: Delete volume with last copy', 'coust', 'label'),
-  oils_i18n_gettext('cat.volume.delete_on_empty', 'Automatically delete a volume when the last linked copy is deleted', 'coust', 'description'),
-  'bool'
-);
-
 -- Event def for email notice for hold cancelled due to lack of target -----
 
 INSERT INTO action_trigger.event_definition (id, active, owner, name, hook, validator, reactor, delay, delay_field, group_field, template)
@@ -9053,24 +9468,6 @@ INSERT INTO action_trigger.environment (event_def, path) VALUES
     (38, 'pickup_lib'),
     (38, 'bib_rec.bib_record.simple_record');
 
-
-INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) VALUES (
-    'circ.lost.generate_overdue_on_checkin',
-    oils_i18n_gettext( 
-        'circ.lost.generate_overdue_on_checkin',
-        'Circ:  Lost Checkin Generates New Overdues',
-        'coust',
-        'label'
-    ),
-    oils_i18n_gettext( 
-        'circ.lost.generate_overdue_on_checkin',
-        'Enabling this setting causes retroactive creation of not-yet-existing overdue fines on lost item checkin, up to the point of checkin time (or max fines is reached).  This is different than "restore overdue on lost", because it only creates new overdue fines.  Use both settings together to get the full complement of overdue fines for a lost item',
-        'coust',
-        'label'
-    ),
-    'bool'
-);
-
 ----------------------------------------------------------------
 -- Seed data for queued record/item exports
 ----------------------------------------------------------------
@@ -9792,23 +10189,6 @@ INSERT INTO authority.thesaurus (code, name, control_set) VALUES
     ('z', oils_i18n_gettext('z','Other','at','name'), 1),
     ('|', oils_i18n_gettext('|','No attempt to code','at','name'), 1);
 
-INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) VALUES (
-    'acq.copy_creator_uses_receiver',
-    oils_i18n_gettext( 
-        'acq.copy_creator_uses_receiver',
-        'Acq: Set copy creator as receiver',
-        'coust',
-        'label'
-    ),
-    oils_i18n_gettext( 
-        'acq.copy_creator_uses_receiver',
-        'When receiving a copy in acquisitions, set the copy "creator" to be the staff that received the copy',
-        'coust',
-        'label'
-    ),
-    'bool'
-);
-
 INSERT INTO action_trigger.hook ( key, core_type, description, passive ) VALUES (
     'reservation.available',
     'bresv',
@@ -9820,225 +10200,3 @@ INSERT INTO action_trigger.validator ( module, description ) VALUES (
     'ReservationIsAvailable',
     'Checked that a reserved resource is available for checkout'
 );
-
-INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) VALUES (
-    'booking.allow_email_notify',
-    'booking.allow_email_notify',
-    'Permit email notification when a reservation is ready for pickup.',
-    'bool'
-);
-
--- Add groups to config settings.
-
--- config settings groups
-INSERT INTO config.settings_group (name, label) VALUES
-('sys', oils_i18n_gettext('config.settings_group.system', 'System', 'coust', 'label')),
-('gui', oils_i18n_gettext('config.settings_group.gui', 'GUI', 'coust', 'label')),
-('lib', oils_i18n_gettext('config.settings_group.lib', 'Library', 'coust', 'label')),
-('sec', oils_i18n_gettext('config.settings_group.sec', 'Security', 'coust', 'label')),
-('cat', oils_i18n_gettext('config.settings_group.cat', 'Cataloging', 'coust', 'label')),
-('holds', oils_i18n_gettext('config.settings_group.holds', 'Holds', 'coust', 'label')),
-('circ', oils_i18n_gettext('config.settings_group.circulation', 'Circulation', 'coust', 'label')),
-('self', oils_i18n_gettext('config.settings_group.self', 'Self Check', 'coust', 'label')),
-('opac', oils_i18n_gettext('config.settings_group.opac', 'OPAC', 'coust', 'label')),
-('prog', oils_i18n_gettext('config.settings_group.program', 'Program', 'coust', 'label')),
-('glob', oils_i18n_gettext('config.settings_group.global', 'Global', 'coust', 'label')),
-('finance', oils_i18n_gettext('config.settings_group.finances', 'Finanaces', 'coust', 'label')),
-('credit', oils_i18n_gettext('config.settings_group.ccp', 'Credit Card Processing', 'coust', 'label')),
-('serial', oils_i18n_gettext('config.settings_group.serial', 'Serials', 'coust', 'label')),
-('recall', oils_i18n_gettext('config.settings_group.recall', 'Recalls', 'coust', 'label'));
-
--- Set up all of the config.org_unit_setting_type[s] with a proper group.
-UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.bib.delete_on_no_copy_via_acq_lineitem_cancel';
-UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.default_classification_scheme';
-UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.label.font.family';
-UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.label.font.size';
-UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.label.font.weight';
-UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.marc_control_number_identifier';
-UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.spine.line.height';
-UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.spine.line.margin';
-UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.spine.line.width';
-UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.checkout_auto_renew_age';
-UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.checkout_fills_related_hold';
-UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.do_not_tally_claims_returned';
-UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.holds.expired_patron_block';
-UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.hold_shelf_status_delay';
-UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.lost_immediately_available';
-UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.max_accept_return_of_lost';
-UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.max_fine.cap_at_price';
-UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.max_patron_claim_return_count';
-UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.missing_pieces.copy_status';
-UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.password_reset_request_requires_matching_email';
-UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.patron_edit.clone.copy_address';
-UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.patron_invalid_address_apply_penalty';
-UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.restore_overdue_on_lost_return';
-UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.void_lost_on_checkin';
-UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.void_lost_proc_fee_on_checkin';
-UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'ui.circ.suppress_checkin_popups';
-UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.authorizenet.enabled';
-UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.authorizenet.login';
-UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.authorizenet.password';
-UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.authorizenet.server';
-UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.authorizenet.testmode';
-UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.default';
-UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.payflowpro.enabled';
-UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.payflowpro.login';
-UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.payflowpro.partner';
-UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.payflowpro.password';
-UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.payflowpro.testmode';
-UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.payflowpro.vendor';
-UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.paypal.enabled';
-UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.paypal.login';
-UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.paypal.password';
-UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.paypal.signature';
-UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.paypal.testmode';
-UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'acq.fund.balance_limit.block';
-UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'acq.fund.balance_limit.warn';
-UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'cat.default_item_price';
-UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'circ.charge_lost_on_zero';
-UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'circ.charge_on_damaged';
-UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'circ.damaged_item_processing_fee';
-UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'circ.lost_materials_processing_fee';
-UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'circ.void_overdue_on_lost';
-UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'credit.payments.allow';
-UPDATE config.org_unit_setting_type SET grp = 'glob' WHERE name = 'global.default_locale';
-UPDATE config.org_unit_setting_type SET grp = 'glob' WHERE name = 'global.password_regex';
-UPDATE config.org_unit_setting_type SET grp = 'glob' WHERE name = 'opac.barcode_regex';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'cat.bib.alert_on_empty';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'circ.auto_hide_patron_summary';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'circ.item_checkout_history.max';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'format.date';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'format.time';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'gui.disable_local_save_columns';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.admin.patron_log.max_entries';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.admin.work_log.max_entries';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.circ.in_house_use.entry_cap';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.circ.in_house_use.entry_warn';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.circ.patron_summary.horizontal';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.circ.show_billing_tab_on_bills';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.general.button_bar';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.general.idle_timeout';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.default_country';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.default_ident_type';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.aua.county.require';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.active.show';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.active.suggest';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.alert_message.show';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.alert_message.suggest';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.alias.show';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.alias.suggest';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.aua.post_code.example';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.aua.post_code.regex';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.barred.show';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.barred.suggest';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.claims_never_checked_out_count.show';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.claims_never_checked_out_count.suggest';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.claims_returned_count.show';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.claims_returned_count.suggest';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.day_phone.example';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.day_phone.regex';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.day_phone.require';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.day_phone.show';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.day_phone.suggest';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.dob.calendar';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.dob.require';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.dob.show';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.dob.suggest';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.email.example';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.email.regex';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.email.require';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.email.show';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.email.suggest';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.evening_phone.example';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.evening_phone.regex';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.evening_phone.require';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.evening_phone.show';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.evening_phone.suggest';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.ident_value2.show';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.ident_value2.suggest';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.ident_value.show';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.ident_value.suggest';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.juvenile.show';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.juvenile.suggest';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.master_account.show';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.master_account.suggest';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.other_phone.example';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.other_phone.regex';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.other_phone.require';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.other_phone.show';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.other_phone.suggest';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.second_given_name.show';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.second_given_name.suggest';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.suffix.show';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.suffix.suggest';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.default_suggested';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.phone.example';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.phone.regex';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.registration.require_address';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.staff.require_initials';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'url.remote_column_settings';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.block_renews_for_holds';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.hold_boundary.hard';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.hold_boundary.soft';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.hold_expire_alert_interval';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.hold_expire_interval';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.behind_desk_pickup_supported';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.canceled.display_age';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.canceled.display_count';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.clear_shelf.copy_status';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.clear_shelf.no_capture_holds';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.default_estimated_wait_interval';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.default_shelf_expire_interval';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds_fifo';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.hold_has_copy_at.alert';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.hold_has_copy_at.block';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.max_org_unit_target_loops';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.min_estimated_wait_interval';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.org_unit_target_weight';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.hold_stalling_hard';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.hold_stalling.soft';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.target_holds_by_org_unit_weight';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.target_skip_me';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.uncancel.reset_request_time';
-UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'acq.default_circ_modifier';
-UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'acq.default_copy_location';
-UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'acq.holds.allow_holds_from_purchase_request';
-UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'acq.tmp_barcode_prefix';
-UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'acq.tmp_callnumber_prefix';
-UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'circ.booking_reservation.default_elbow_room';
-UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'circ.claim_never_checked_out.mark_missing';
-UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'circ.claim_return.copy_status';
-UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'circ.damaged.void_ovedue';
-UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'circ.pre_cat_copy_circ_lib';
-UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'circ.reshelving_complete.interval';
-UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'global.juvenile_age_threshold';
-UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'lib.courier_code';
-UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'notice.telephony.callfile_lines';
-UPDATE config.org_unit_setting_type SET grp = 'opac' WHERE name = 'opac.allow_pending_address';
-UPDATE config.org_unit_setting_type SET grp = 'opac' WHERE name = 'opac.fully_compressed_serial_holdings';
-UPDATE config.org_unit_setting_type SET grp = 'opac' WHERE name = 'opac.org_unit_hiding.depth';
-UPDATE config.org_unit_setting_type SET grp = 'prog' WHERE name = 'cat.bib.keep_on_empty';
-UPDATE config.org_unit_setting_type SET grp = 'prog' WHERE name = 'circ.staff_client.do_not_auto_attempt_print';
-UPDATE config.org_unit_setting_type SET grp = 'prog' WHERE name = 'org.bounced_emails';
-UPDATE config.org_unit_setting_type SET grp = 'recall' WHERE name = 'circ.holds.recall_fine_rules';
-UPDATE config.org_unit_setting_type SET grp = 'recall' WHERE name = 'circ.holds.recall_return_interval';
-UPDATE config.org_unit_setting_type SET grp = 'recall' WHERE name = 'circ.holds.recall_threshold';
-UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'auth.opac_timeout';
-UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'auth.persistent_login_interval';
-UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'auth.staff_timeout';
-UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'circ.obscure_dob';
-UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'circ.offline.username_allowed';
-UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'circ.password_reset_request_per_user_limit';
-UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'circ.password_reset_request_throttle';
-UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'circ.password_reset_request_time_to_live';
-UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'patron.password.use_phone';
-UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'ui.patron.default_inet_access_level';
-UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.alert.popup';
-UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.alert.sound';
-UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.auto_override_checkout_events';
-UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.block_checkout_on_copy_status';
-UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.patron_login_timeout';
-UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.patron_password_required';
-UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.require_patron_password';
-UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.workstation_required';
-UPDATE config.org_unit_setting_type SET grp = 'serial' WHERE name = 'serial.prev_issuance_copy_location';
diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.data.YAOUS-i18n-update.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.data.YAOUS-i18n-update.sql
index 3588622..6b77fde 100644
--- a/Open-ILS/src/sql/Pg/upgrade/XXXX.data.YAOUS-i18n-update.sql
+++ b/Open-ILS/src/sql/Pg/upgrade/XXXX.data.YAOUS-i18n-update.sql
@@ -5,163 +5,249 @@ BEGIN;
 
 SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version);
 
+INSERT INTO config.settings_group (name, label) VALUES
+('sys', oils_i18n_gettext('config.settings_group.system', 'System', 'coust', 'label')),
+('gui', oils_i18n_gettext('config.settings_group.gui', 'GUI', 'coust', 'label')),
+('lib', oils_i18n_gettext('config.settings_group.lib', 'Library', 'coust', 'label')),
+('sec', oils_i18n_gettext('config.settings_group.sec', 'Security', 'coust', 'label')),
+('cat', oils_i18n_gettext('config.settings_group.cat', 'Cataloging', 'coust', 'label')),
+('holds', oils_i18n_gettext('config.settings_group.holds', 'Holds', 'coust', 'label')),
+('circ', oils_i18n_gettext('config.settings_group.circulation', 'Circulation', 'coust', 'label')),
+('self', oils_i18n_gettext('config.settings_group.self', 'Self Check', 'coust', 'label')),
+('opac', oils_i18n_gettext('config.settings_group.opac', 'OPAC', 'coust', 'label')),
+('prog', oils_i18n_gettext('config.settings_group.program', 'Program', 'coust', 'label')),
+('glob', oils_i18n_gettext('config.settings_group.global', 'Global', 'coust', 'label')),
+('finance', oils_i18n_gettext('config.settings_group.finances', 'Finanaces', 'coust', 'label')),
+('credit', oils_i18n_gettext('config.settings_group.ccp', 'Credit Card Processing', 'coust', 'label')),
+('serial', oils_i18n_gettext('config.settings_group.serial', 'Serials', 'coust', 'label')),
+('recall', oils_i18n_gettext('config.settings_group.recall', 'Recalls', 'coust', 'label')),
+('booking', oils_i18n_gettext('config.settings_group.booking', 'Booking', 'coust', 'label')),
+('offline', oils_i18n_gettext('config.settings_group.offline', 'Offline', 'coust', 'label')),
+('receipt_template', oils_i18n_gettext('config.settings_group.receipt_template', 'Receipt Template', 'coust', 'label'));
 
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.holds.behind_desk_pickup_supported', 'Behind Desk Pickup Supported', 'coust', 'label') WHERE name = 'circ.holds.behind_desk_pickup_supported';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.holds.canceled.display_age', 'Canceled holds display age', 'coust', 'label') WHERE name = 'circ.holds.canceled.display_age';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.holds.canceled.display_count', 'Canceled holds display count', 'coust', 'label') WHERE name = 'circ.holds.canceled.display_count';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('cat.marc_control_number_identifier', 'Defines the control number identifier used in 003 and 035 fields.', 'coust', 'label') WHERE name = 'cat.marc_control_number_identifier';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.holds.max_org_unit_target_loops', 'Maximum library target attempts', 'coust', 'label') WHERE name = 'circ.holds.max_org_unit_target_loops';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.holds.org_unit_target_weight', 'Org Unit Target Weight', 'coust', 'label') WHERE name = 'circ.holds.org_unit_target_weight';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.user_merge.delete_addresses','Patron Merge Address Delete', 'coust', 'label') WHERE name = 'circ.user_merge.delete_addresses';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.user_merge.delete_cards','Patron Merge Barcode Delete', 'coust', 'label') WHERE name = 'circ.user_merge.delete_cards';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.user_merge.deactivate_cards','Patron Merge Deactivate Card', 'coust', 'label') WHERE name = 'circ.user_merge.deactivate_cards';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.holds.uncancel.reset_request_time', 'Reset request time on un-cancel','coust', 'label') WHERE name = 'circ.holds.uncancel.reset_request_time';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.holds.target_holds_by_org_unit_weight', 'Use weight-based hold targeting', 'coust', 'label') WHERE name = 'circ.holds.target_holds_by_org_unit_weight';
+UPDATE config.org_unit_setting_type SET grp = 'lib', label='Set copy creator as receiver' WHERE name = 'acq.copy_creator_uses_receiver';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'acq.default_circ_modifier';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'acq.default_copy_location';
+UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'acq.fund.balance_limit.block';
+UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'acq.fund.balance_limit.warn';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'acq.holds.allow_holds_from_purchase_request';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'acq.tmp_barcode_prefix';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'acq.tmp_callnumber_prefix';
+UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'auth.opac_timeout';
+UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'auth.persistent_login_interval';
+UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'auth.staff_timeout';
+UPDATE config.org_unit_setting_type SET grp = 'booking' WHERE name = 'booking.allow_email_notify';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'cat.bib.alert_on_empty';
+UPDATE config.org_unit_setting_type SET grp = 'cat', label='Delete bib if all copies are deleted via Acquisitions lineitem cancellation.' WHERE name = 'cat.bib.delete_on_no_copy_via_acq_lineitem_cancel';
+UPDATE config.org_unit_setting_type SET grp = 'prog' WHERE name = 'cat.bib.keep_on_empty';
+UPDATE config.org_unit_setting_type SET grp = 'cat', label='Default Classification Scheme' WHERE name = 'cat.default_classification_scheme';
+UPDATE config.org_unit_setting_type SET grp = 'cat', label='Default copy status (fast add)' WHERE name = 'cat.default_copy_status_fast';
+UPDATE config.org_unit_setting_type SET grp = 'cat', label='Default copy status (normal)' WHERE name = 'cat.default_copy_status_normal';
+UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'cat.default_item_price';
+UPDATE config.org_unit_setting_type SET grp = 'cat', label='Spine and pocket label font family' WHERE name = 'cat.label.font.family';
+UPDATE config.org_unit_setting_type SET grp = 'cat', label='Spine and pocket label font size' WHERE name = 'cat.label.font.size';
+UPDATE config.org_unit_setting_type SET grp = 'cat', label='Spine and pocket label font weight' WHERE name = 'cat.label.font.weight';
+UPDATE config.org_unit_setting_type SET grp = 'cat', label='Defines the control number identifier used in 003 and 035 fields.' WHERE name = 'cat.marc_control_number_identifier';
+UPDATE config.org_unit_setting_type SET grp = 'cat', label='Spine label maximum lines' WHERE name = 'cat.spine.line.height';
+UPDATE config.org_unit_setting_type SET grp = 'cat', label='Spine label left margin' WHERE name = 'cat.spine.line.margin';
+UPDATE config.org_unit_setting_type SET grp = 'cat', label='Spine label line width' WHERE name = 'cat.spine.line.width';
+UPDATE config.org_unit_setting_type SET grp = 'cat', label='Delete volume with last copy' WHERE name = 'cat.volume.delete_on_empty';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Toggle off the patron summary sidebar after first view.' WHERE name = 'circ.auto_hide_patron_summary';
+UPDATE config.org_unit_setting_type SET grp = 'holds', label='Block Renewal of Items Needed for Holds' WHERE name = 'circ.block_renews_for_holds';
+UPDATE config.org_unit_setting_type SET grp = 'booking', label='Elbow room' WHERE name = 'circ.booking_reservation.default_elbow_room';
+UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'circ.charge_lost_on_zero';
+UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'circ.charge_on_damaged';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.checkout_auto_renew_age';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.checkout_fills_related_hold';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.checkout_fills_related_hold_exact_match_only';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'circ.claim_never_checked_out.mark_missing';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'circ.claim_return.copy_status';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'circ.damaged.void_ovedue';
+UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'circ.damaged_item_processing_fee';
+UPDATE config.org_unit_setting_type SET grp = 'circ', label='Do not include outstanding Claims Returned circulations in lump sum tallies in Patron Display.' WHERE name = 'circ.do_not_tally_claims_returned';
+UPDATE config.org_unit_setting_type SET grp = 'holds', label='Hard boundary' WHERE name = 'circ.hold_boundary.hard';
+UPDATE config.org_unit_setting_type SET grp = 'holds', label='Soft boundary' WHERE name = 'circ.hold_boundary.soft';
+UPDATE config.org_unit_setting_type SET grp = 'holds', label='Expire Alert Interval' WHERE name = 'circ.hold_expire_alert_interval';
+UPDATE config.org_unit_setting_type SET grp = 'holds', label='Expire Interval' WHERE name = 'circ.hold_expire_interval';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.hold_shelf_status_delay';
+UPDATE config.org_unit_setting_type SET grp = 'holds', label='Soft stalling interval' WHERE name = 'circ.hold_stalling.soft';
+UPDATE config.org_unit_setting_type SET grp = 'holds', label='Hard stalling interval' WHERE name = 'circ.hold_stalling_hard';
+UPDATE config.org_unit_setting_type SET grp = 'holds', label='Use Active Date for Age Protection' WHERE name = 'circ.holds.age_protect.active_date';
+UPDATE config.org_unit_setting_type SET grp = 'holds', label='Behind Desk Pickup Supported' WHERE name = 'circ.holds.behind_desk_pickup_supported';
+UPDATE config.org_unit_setting_type SET grp = 'holds', label='Canceled holds display age' WHERE name = 'circ.holds.canceled.display_age';
+UPDATE config.org_unit_setting_type SET grp = 'holds', label='Canceled holds display count' WHERE name = 'circ.holds.canceled.display_count';
+UPDATE config.org_unit_setting_type SET grp = 'holds', label='Clear shelf copy status' WHERE name = 'circ.holds.clear_shelf.copy_status';
+UPDATE config.org_unit_setting_type SET grp = 'holds', label='Bypass hold capture during clear shelf process' WHERE name = 'circ.holds.clear_shelf.no_capture_holds';
+UPDATE config.org_unit_setting_type SET grp = 'holds', label='Default Estimated Wait' WHERE name = 'circ.holds.default_estimated_wait_interval';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.default_shelf_expire_interval';
+UPDATE config.org_unit_setting_type SET grp = 'circ', label='Block hold request if hold recipient privileges have expired' WHERE name = 'circ.holds.expired_patron_block';
+UPDATE config.org_unit_setting_type SET grp = 'holds', label='Has Local Copy Alert' WHERE name = 'circ.holds.hold_has_copy_at.alert';
+UPDATE config.org_unit_setting_type SET grp = 'holds', label='Has Local Copy Block' WHERE name = 'circ.holds.hold_has_copy_at.block';
+UPDATE config.org_unit_setting_type SET grp = 'holds', label='Maximum library target attempts' WHERE name = 'circ.holds.max_org_unit_target_loops';
+UPDATE config.org_unit_setting_type SET grp = 'holds', label='Minimum Estimated Wait' WHERE name = 'circ.holds.min_estimated_wait_interval';
+UPDATE config.org_unit_setting_type SET grp = 'holds', label='Org Unit Target Weight' WHERE name = 'circ.holds.org_unit_target_weight';
+UPDATE config.org_unit_setting_type SET grp = 'recall', label='An array of fine amount, fine interval, and maximum fine.' WHERE name = 'circ.holds.recall_fine_rules';
+UPDATE config.org_unit_setting_type SET grp = 'recall', label='Truncated loan period.' WHERE name = 'circ.holds.recall_return_interval';
+UPDATE config.org_unit_setting_type SET grp = 'recall', label='Circulation duration that triggers a recall.' WHERE name = 'circ.holds.recall_threshold';
+UPDATE config.org_unit_setting_type SET grp = 'holds', label='Use weight-based hold targeting' WHERE name = 'circ.holds.target_holds_by_org_unit_weight';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.target_skip_me';
+UPDATE config.org_unit_setting_type SET grp = 'holds', label='Reset request time on un-cancel' WHERE name = 'circ.holds.uncancel.reset_request_time';
+UPDATE config.org_unit_setting_type SET grp = 'holds', label='FIFO' WHERE name = 'circ.holds_fifo';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'circ.item_checkout_history.max';
+UPDATE config.org_unit_setting_type SET grp = 'circ', label='Lost Checkin Generates New Overdues' WHERE name = 'circ.lost.generate_overdue_on_checkin';
+UPDATE config.org_unit_setting_type SET grp = 'circ', label='Lost items usable on checkin' WHERE name = 'circ.lost_immediately_available';
+UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'circ.lost_materials_processing_fee';
+UPDATE config.org_unit_setting_type SET grp = 'circ', label='Void lost max interval' WHERE name = 'circ.max_accept_return_of_lost';
+UPDATE config.org_unit_setting_type SET grp = 'circ', label='Cap Max Fine at Item Price' WHERE name = 'circ.max_fine.cap_at_price';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.max_patron_claim_return_count';
+UPDATE config.org_unit_setting_type SET grp = 'circ', label='Item Status for Missing Pieces' WHERE name = 'circ.missing_pieces.copy_status';
+UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'circ.obscure_dob';
+UPDATE config.org_unit_setting_type SET grp = 'offline', label='Skip offline checkin if newer item Status Changed Time.' WHERE name = 'circ.offline.skip_checkin_if_newer_status_changed_time';
+UPDATE config.org_unit_setting_type SET grp = 'offline', label='Skip offline checkout if newer item Status Changed Time.' WHERE name = 'circ.offline.skip_checkout_if_newer_status_changed_time';
+UPDATE config.org_unit_setting_type SET grp = 'offline', label='Skip offline renewal if newer item Status Changed Time.' WHERE name = 'circ.offline.skip_renew_if_newer_status_changed_time';
+UPDATE config.org_unit_setting_type SET grp = 'sec', label='Offline: Patron Usernames Allowed' WHERE name = 'circ.offline.username_allowed';
+UPDATE config.org_unit_setting_type SET grp = 'sec', label='Maximum concurrently active self-serve password reset requests per user' WHERE name = 'circ.password_reset_request_per_user_limit';
+UPDATE config.org_unit_setting_type SET grp = 'circ', label='Require matching email address for password reset requests' WHERE name = 'circ.password_reset_request_requires_matching_email';
+UPDATE config.org_unit_setting_type SET grp = 'sec', label='Maximum concurrently active self-serve password reset requests' WHERE name = 'circ.password_reset_request_throttle';
+UPDATE config.org_unit_setting_type SET grp = 'sec', label='Self-serve password reset request time-to-live' WHERE name = 'circ.password_reset_request_time_to_live';
+UPDATE config.org_unit_setting_type SET grp = 'circ', label='Patron Registration: Cloned patrons get address copy' WHERE name = 'circ.patron_edit.clone.copy_address';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.patron_invalid_address_apply_penalty';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'circ.pre_cat_copy_circ_lib';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'circ.reshelving_complete.interval';
+UPDATE config.org_unit_setting_type SET grp = 'circ', label='Restore overdues on lost item return' WHERE name = 'circ.restore_overdue_on_lost_return';
+UPDATE config.org_unit_setting_type SET grp = 'self', label='Pop-up alert for errors' WHERE name = 'circ.selfcheck.alert.popup';
+UPDATE config.org_unit_setting_type SET grp = 'self', label='Audio Alerts' WHERE name = 'circ.selfcheck.alert.sound';
+UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.auto_override_checkout_events';
+UPDATE config.org_unit_setting_type SET grp = 'self', label='Block copy checkout status' WHERE name = 'circ.selfcheck.block_checkout_on_copy_status';
+UPDATE config.org_unit_setting_type SET grp = 'self', label='Patron Login Timeout (in seconds)' WHERE name = 'circ.selfcheck.patron_login_timeout';
+UPDATE config.org_unit_setting_type SET grp = 'self', label='Require Patron Password' WHERE name = 'circ.selfcheck.patron_password_required';
+UPDATE config.org_unit_setting_type SET grp = 'self', label='Require patron password' WHERE name = 'circ.selfcheck.require_patron_password';
+UPDATE config.org_unit_setting_type SET grp = 'self', label='Workstation Required' WHERE name = 'circ.selfcheck.workstation_required';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.staff_client.actor_on_checkout';
+UPDATE config.org_unit_setting_type SET grp = 'prog' WHERE name = 'circ.staff_client.do_not_auto_attempt_print';
+UPDATE config.org_unit_setting_type SET grp = 'receipt_template', label='Content of alert_text include' WHERE name = 'circ.staff_client.receipt.alert_text';
+UPDATE config.org_unit_setting_type SET grp = 'receipt_template', label='Content of event_text include' WHERE name = 'circ.staff_client.receipt.event_text';
+UPDATE config.org_unit_setting_type SET grp = 'receipt_template', label='Content of footer_text include' WHERE name = 'circ.staff_client.receipt.footer_text';
+UPDATE config.org_unit_setting_type SET grp = 'receipt_template', label='Content of header_text include' WHERE name = 'circ.staff_client.receipt.header_text';
+UPDATE config.org_unit_setting_type SET grp = 'receipt_template', label='Content of notice_text include' WHERE name = 'circ.staff_client.receipt.notice_text';
+UPDATE config.org_unit_setting_type SET grp = 'circ', label='Minimum Transit Checkin Interval' WHERE name = 'circ.transit.min_checkin_interval';
+UPDATE config.org_unit_setting_type SET grp = 'circ', label='Patron Merge Deactivate Card' WHERE name = 'circ.user_merge.deactivate_cards';
+UPDATE config.org_unit_setting_type SET grp = 'circ', label='Patron Merge Address Delete' WHERE name = 'circ.user_merge.delete_addresses';
+UPDATE config.org_unit_setting_type SET grp = 'circ', label='Patron Merge Barcode Delete' WHERE name = 'circ.user_merge.delete_cards';
+UPDATE config.org_unit_setting_type SET grp = 'circ', label='Void lost item billing when returned' WHERE name = 'circ.void_lost_on_checkin';
+UPDATE config.org_unit_setting_type SET grp = 'circ', label='Void processing fee on lost item return' WHERE name = 'circ.void_lost_proc_fee_on_checkin';
+UPDATE config.org_unit_setting_type SET grp = 'finance', label='Void overdue fines when items are marked lost' WHERE name = 'circ.void_overdue_on_lost';
+UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'credit.payments.allow';
+UPDATE config.org_unit_setting_type SET grp = 'credit', label='Enable AuthorizeNet payments' WHERE name = 'credit.processor.authorizenet.enabled';
+UPDATE config.org_unit_setting_type SET grp = 'credit', label='AuthorizeNet login' WHERE name = 'credit.processor.authorizenet.login';
+UPDATE config.org_unit_setting_type SET grp = 'credit', label='AuthorizeNet password' WHERE name = 'credit.processor.authorizenet.password';
+UPDATE config.org_unit_setting_type SET grp = 'credit', label='AuthorizeNet server' WHERE name = 'credit.processor.authorizenet.server';
+UPDATE config.org_unit_setting_type SET grp = 'credit', label='AuthorizeNet test mode' WHERE name = 'credit.processor.authorizenet.testmode';
+UPDATE config.org_unit_setting_type SET grp = 'credit', label='Name default credit processor' WHERE name = 'credit.processor.default';
+UPDATE config.org_unit_setting_type SET grp = 'credit', label='Enable PayflowPro payments' WHERE name = 'credit.processor.payflowpro.enabled';
+UPDATE config.org_unit_setting_type SET grp = 'credit', label='PayflowPro login/merchant ID' WHERE name = 'credit.processor.payflowpro.login';
+UPDATE config.org_unit_setting_type SET grp = 'credit', label='PayflowPro partner' WHERE name = 'credit.processor.payflowpro.partner';
+UPDATE config.org_unit_setting_type SET grp = 'credit', label='PayflowPro password' WHERE name = 'credit.processor.payflowpro.password';
+UPDATE config.org_unit_setting_type SET grp = 'credit', label='PayflowPro test mode' WHERE name = 'credit.processor.payflowpro.testmode';
+UPDATE config.org_unit_setting_type SET grp = 'credit', label='PayflowPro vendor' WHERE name = 'credit.processor.payflowpro.vendor';
+UPDATE config.org_unit_setting_type SET grp = 'credit', label='Enable PayPal payments' WHERE name = 'credit.processor.paypal.enabled';
+UPDATE config.org_unit_setting_type SET grp = 'credit', label='PayPal login' WHERE name = 'credit.processor.paypal.login';
+UPDATE config.org_unit_setting_type SET grp = 'credit', label='PayPal password' WHERE name = 'credit.processor.paypal.password';
+UPDATE config.org_unit_setting_type SET grp = 'credit', label='PayPal signature' WHERE name = 'credit.processor.paypal.signature';
+UPDATE config.org_unit_setting_type SET grp = 'credit', label='PayPal test mode' WHERE name = 'credit.processor.paypal.testmode';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Format Dates with this pattern.' WHERE name = 'format.date';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Format Times with this pattern.' WHERE name = 'format.time';
+UPDATE config.org_unit_setting_type SET grp = 'glob' WHERE name = 'global.default_locale';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'global.juvenile_age_threshold';
+UPDATE config.org_unit_setting_type SET grp = 'glob' WHERE name = 'global.password_regex';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Disable the ability to save list column configurations locally.' WHERE name = 'gui.disable_local_save_columns';
+UPDATE config.org_unit_setting_type SET grp = 'lib', label='Courier Code' WHERE name = 'lib.courier_code';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'notice.telephony.callfile_lines';
+UPDATE config.org_unit_setting_type SET grp = 'opac', label='Allow pending addresses' WHERE name = 'opac.allow_pending_address';
+UPDATE config.org_unit_setting_type SET grp = 'glob' WHERE name = 'opac.barcode_regex';
+UPDATE config.org_unit_setting_type SET grp = 'opac', label='Use fully compressed serial holdings' WHERE name = 'opac.fully_compressed_serial_holdings';
+UPDATE config.org_unit_setting_type SET grp = 'opac', label='Org Unit Hiding Depth' WHERE name = 'opac.org_unit_hiding.depth';
+UPDATE config.org_unit_setting_type SET grp = 'opac', label='Payment History Age Limit' WHERE name = 'opac.payment_history_age_limit';
+UPDATE config.org_unit_setting_type SET grp = 'prog' WHERE name = 'org.bounced_emails';
+UPDATE config.org_unit_setting_type SET grp = 'sec', label='Patron Opt-In Boundary' WHERE name = 'org.patron_opt_boundary';
+UPDATE config.org_unit_setting_type SET grp = 'sec', label='Patron Opt-In Default' WHERE name = 'org.patron_opt_default';
+UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'patron.password.use_phone';
+UPDATE config.org_unit_setting_type SET grp = 'serial', label='Previous Issuance Copy Location' WHERE name = 'serial.prev_issuance_copy_location';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Work Log: Maximum Patrons Logged' WHERE name = 'ui.admin.patron_log.max_entries';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Work Log: Maximum Actions Logged' WHERE name = 'ui.admin.work_log.max_entries';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Horizontal layout for Volume/Copy Creator/Editor.' WHERE name = 'ui.cat.volume_copy_editor.horizontal';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Uncheck bills by default in the patron billing interface' WHERE name = 'ui.circ.billing.uncheck_bills_and_unfocus_payment_box';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Record In-House Use: Maximum # of uses allowed per entry.' WHERE name = 'ui.circ.in_house_use.entry_cap';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Record In-House Use: # of uses threshold for Are You Sure? dialog.' WHERE name = 'ui.circ.in_house_use.entry_warn';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.circ.patron_summary.horizontal';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.circ.show_billing_tab_on_bills';
+UPDATE config.org_unit_setting_type SET grp = 'circ', label='Suppress popup-dialogs during check-in.' WHERE name = 'ui.circ.suppress_checkin_popups';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Button bar' WHERE name = 'ui.general.button_bar';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Default Hotkeyset' WHERE name = 'ui.general.hotkeyset';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Idle timeout' WHERE name = 'ui.general.idle_timeout';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Default Country for New Addresses in Patron Editor' WHERE name = 'ui.patron.default_country';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Default Ident Type for Patron Registration' WHERE name = 'ui.patron.default_ident_type';
+UPDATE config.org_unit_setting_type SET grp = 'sec', label='Default level of patrons'' internet access' WHERE name = 'ui.patron.default_inet_access_level';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Show active field on patron registration' WHERE name = 'ui.patron.edit.au.active.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Suggest active field on patron registration' WHERE name = 'ui.patron.edit.au.active.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Show alert_message field on patron registration' WHERE name = 'ui.patron.edit.au.alert_message.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Suggest alert_message field on patron registration' WHERE name = 'ui.patron.edit.au.alert_message.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Show alias field on patron registration' WHERE name = 'ui.patron.edit.au.alias.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Suggest alias field on patron registration' WHERE name = 'ui.patron.edit.au.alias.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Show barred field on patron registration' WHERE name = 'ui.patron.edit.au.barred.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Suggest barred field on patron registration' WHERE name = 'ui.patron.edit.au.barred.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Show claims_never_checked_out_count field on patron registration' WHERE name = 'ui.patron.edit.au.claims_never_checked_out_count.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Suggest claims_never_checked_out_count field on patron registration' WHERE name = 'ui.patron.edit.au.claims_never_checked_out_count.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Show claims_returned_count field on patron registration' WHERE name = 'ui.patron.edit.au.claims_returned_count.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Suggest claims_returned_count field on patron registration' WHERE name = 'ui.patron.edit.au.claims_returned_count.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Example for day_phone field on patron registration' WHERE name = 'ui.patron.edit.au.day_phone.example';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Regex for day_phone field on patron registration' WHERE name = 'ui.patron.edit.au.day_phone.regex';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Require day_phone field on patron registration' WHERE name = 'ui.patron.edit.au.day_phone.require';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Show day_phone field on patron registration' WHERE name = 'ui.patron.edit.au.day_phone.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Suggest day_phone field on patron registration' WHERE name = 'ui.patron.edit.au.day_phone.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Show calendar widget for dob field on patron registration' WHERE name = 'ui.patron.edit.au.dob.calendar';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Require dob field on patron registration' WHERE name = 'ui.patron.edit.au.dob.require';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Show dob field on patron registration' WHERE name = 'ui.patron.edit.au.dob.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Suggest dob field on patron registration' WHERE name = 'ui.patron.edit.au.dob.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Example for email field on patron registration' WHERE name = 'ui.patron.edit.au.email.example';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Regex for email field on patron registration' WHERE name = 'ui.patron.edit.au.email.regex';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Require email field on patron registration' WHERE name = 'ui.patron.edit.au.email.require';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Show email field on patron registration' WHERE name = 'ui.patron.edit.au.email.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Suggest email field on patron registration' WHERE name = 'ui.patron.edit.au.email.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Example for evening_phone field on patron registration' WHERE name = 'ui.patron.edit.au.evening_phone.example';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Regex for evening_phone field on patron registration' WHERE name = 'ui.patron.edit.au.evening_phone.regex';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Require evening_phone field on patron registration' WHERE name = 'ui.patron.edit.au.evening_phone.require';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Show evening_phone field on patron registration' WHERE name = 'ui.patron.edit.au.evening_phone.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Suggest evening_phone field on patron registration' WHERE name = 'ui.patron.edit.au.evening_phone.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Show ident_value field on patron registration' WHERE name = 'ui.patron.edit.au.ident_value.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Suggest ident_value field on patron registration' WHERE name = 'ui.patron.edit.au.ident_value.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Show ident_value2 field on patron registration' WHERE name = 'ui.patron.edit.au.ident_value2.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Suggest ident_value2 field on patron registration' WHERE name = 'ui.patron.edit.au.ident_value2.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Show juvenile field on patron registration' WHERE name = 'ui.patron.edit.au.juvenile.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Suggest juvenile field on patron registration' WHERE name = 'ui.patron.edit.au.juvenile.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Show master_account field on patron registration' WHERE name = 'ui.patron.edit.au.master_account.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Suggest master_account field on patron registration' WHERE name = 'ui.patron.edit.au.master_account.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Example for other_phone field on patron registration' WHERE name = 'ui.patron.edit.au.other_phone.example';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Regex for other_phone field on patron registration' WHERE name = 'ui.patron.edit.au.other_phone.regex';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Require other_phone field on patron registration' WHERE name = 'ui.patron.edit.au.other_phone.require';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Show other_phone field on patron registration' WHERE name = 'ui.patron.edit.au.other_phone.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Suggest other_phone field on patron registration' WHERE name = 'ui.patron.edit.au.other_phone.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Show second_given_name field on patron registration' WHERE name = 'ui.patron.edit.au.second_given_name.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Suggest second_given_name field on patron registration' WHERE name = 'ui.patron.edit.au.second_given_name.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Show suffix field on patron registration' WHERE name = 'ui.patron.edit.au.suffix.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Suggest suffix field on patron registration' WHERE name = 'ui.patron.edit.au.suffix.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Require county field on patron registration' WHERE name = 'ui.patron.edit.aua.county.require';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Example for post_code field on patron registration' WHERE name = 'ui.patron.edit.aua.post_code.example';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Regex for post_code field on patron registration' WHERE name = 'ui.patron.edit.aua.post_code.regex';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Default showing suggested patron registration fields' WHERE name = 'ui.patron.edit.default_suggested';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Example for phone fields on patron registration' WHERE name = 'ui.patron.edit.phone.example';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Regex for phone fields on patron registration' WHERE name = 'ui.patron.edit.phone.regex';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Require at least one address for Patron Registration' WHERE name = 'ui.patron.registration.require_address';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Cap results in Patron Search at this number.' WHERE name = 'ui.patron_search.result_cap';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Require staff initials for entry/edit of item/patron/penalty notes/messages.' WHERE name = 'ui.staff.require_initials';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='Unified Volume/Item Creator/Editor' WHERE name = 'ui.unified_volume_copy_editor';
+UPDATE config.org_unit_setting_type SET grp = 'gui', label='URL for remote directory containing list column settings.' WHERE name = 'url.remote_column_settings';
 
 
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('cat.bib.delete_on_no_copy_via_acq_lineitem_cancel','Delete bib if all copies are deleted via Acquisitions lineitem cancellation.', 'coust', 'label') WHERE name = 'cat.bib.delete_on_no_copy_via_acq_lineitem_cancel';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('cat.default_classification_scheme', 'Default Classification Scheme', 'coust', 'label') WHERE name = 'cat.default_classification_scheme';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('cat.default_copy_status_fast', 'Default copy status (fast add)', 'coust', 'label') WHERE name = 'cat.default_copy_status_fast';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('cat.default_copy_status_normal', 'Default copy status (normal)', 'coust', 'label') WHERE name = 'cat.default_copy_status_normal';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('cat.label.font.family','Spine and pocket label font family', 'coust', 'label') WHERE name = 'cat.label.font.family';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('cat.label.font.size','Spine and pocket label font size', 'coust', 'label') WHERE name = 'cat.label.font.size';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('cat.label.font.weight', 'Spine and pocket label font weight', 'coust', 'label') WHERE name = 'cat.label.font.weight';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('cat.spine.line.height', 'Spine label maximum lines', 'coust', 'label') WHERE name = 'cat.spine.line.height';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('cat.spine.line.margin', 'Spine label left margin', 'coust', 'label') WHERE name = 'cat.spine.line.margin';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('cat.spine.line.width', 'Spine label line width', 'coust', 'label') WHERE name = 'cat.spine.line.width';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.auto_hide_patron_summary', 'Toggle off the patron summary sidebar after first view.', 'coust', 'label') WHERE name = 'circ.auto_hide_patron_summary';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.block_renews_for_holds', 'Block Renewal of Items Needed for Holds', 'coust', 'label') WHERE name = 'circ.block_renews_for_holds';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.booking_reservation.default_elbow_room','Booking elbow room','coust','label') WHERE name = 'circ.booking_reservation.default_elbow_room';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.do_not_tally_claims_returned','Do not include outstanding Claims Returned circulations in lump sum tallies in Patron Display.', 'coust', 'label') WHERE name = 'circ.do_not_tally_claims_returned';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.hold_boundary.hard', 'Hard boundary', 'coust', 'label') WHERE name = 'circ.hold_boundary.hard';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.hold_boundary.soft', 'Soft boundary', 'coust', 'label') WHERE name = 'circ.hold_boundary.soft';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.hold_expire_alert_interval', 'Expire Alert Interval', 'coust', 'label') WHERE name = 'circ.hold_expire_alert_interval';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.hold_expire_interval', 'Expire Interval', 'coust', 'label') WHERE name = 'circ.hold_expire_interval';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.holds.clear_shelf.copy_status', 'Clear shelf copy status', 'coust', 'label') WHERE name = 'circ.holds.clear_shelf.copy_status';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext( 'circ.holds.clear_shelf.no_capture_holds','Bypass hold capture during clear shelf process', 'coust', 'label') WHERE name = 'circ.holds.clear_shelf.no_capture_holds';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.holds.default_estimated_wait_interval', 'Default Estimated Wait', 'coust', 'label') WHERE name = 'circ.holds.default_estimated_wait_interval';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.holds.expired_patron_block','Block hold request if hold recipient privileges have expired', 'coust', 'label') WHERE name = 'circ.holds.expired_patron_block';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.holds_fifo', 'FIFO', 'coust', 'label') WHERE name = 'circ.holds_fifo';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.holds.hold_has_copy_at.alert', 'Has Local Copy Alert', 'coust', 'label') WHERE name = 'circ.holds.hold_has_copy_at.alert';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.holds.hold_has_copy_at.block', 'Has Local Copy Block', 'coust', 'label') WHERE name = 'circ.holds.hold_has_copy_at.block';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.holds.min_estimated_wait_interval', 'Minimum Estimated Wait', 'coust', 'label') WHERE name = 'circ.holds.min_estimated_wait_interval';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext( 'circ.holds.recall_fine_rules', 'An array of fine amount, fine interval, and maximum fine.', 'coust', 'label') WHERE name = 'circ.holds.recall_fine_rules';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext( 'circ.holds.recall_return_interval', 'Truncated loan period.', 'coust', 'label') WHERE name = 'circ.holds.recall_return_interval';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext( 'circ.holds.recall_threshold', 'Circulation duration that triggers a recall.', 'coust', 'label') WHERE name = 'circ.holds.recall_threshold';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.hold_stalling_hard', 'Hard stalling interval', 'coust', 'label') WHERE name = 'circ.hold_stalling_hard';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.hold_stalling.soft', 'Soft stalling interval', 'coust', 'label') WHERE name = 'circ.hold_stalling.soft';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.lost_immediately_available', 'Lost items usable on checkin', 'coust', 'label') WHERE name = 'circ.lost_immediately_available';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.max_accept_return_of_lost', 'Void lost max interval', 'coust', 'label') WHERE name = 'circ.max_accept_return_of_lost';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.max_fine.cap_at_price', 'Cap Max Fine at Item Price', 'coust', 'label') WHERE name = 'circ.max_fine.cap_at_price';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.missing_pieces.copy_status','Item Status for Missing Pieces', 'coust', 'label') WHERE name = 'circ.missing_pieces.copy_status';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.password_reset_request_per_user_limit', 'Maximum concurrently active self-serve password reset requests per user', 'coust', 'label') WHERE name = 'circ.password_reset_request_per_user_limit';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.password_reset_request_requires_matching_email','Require matching email address for password reset requests', 'coust', 'label') WHERE name = 'circ.password_reset_request_requires_matching_email';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.password_reset_request_throttle', 'Maximum concurrently active self-serve password reset requests', 'coust', 'label') WHERE name = 'circ.password_reset_request_throttle';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.password_reset_request_time_to_live', 'Self-serve password reset request time-to-live', 'coust', 'label') WHERE name = 'circ.password_reset_request_time_to_live';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.restore_overdue_on_lost_return', 'Restore overdues on lost item return', 'coust', 'label') WHERE name = 'circ.restore_overdue_on_lost_return';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.selfcheck.alert.popup', 'Pop-up alert for errors', 'coust', 'label') WHERE name = 'circ.selfcheck.alert.popup';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.selfcheck.alert.sound', 'Audio Alerts', 'coust', 'label') WHERE name = 'circ.selfcheck.alert.sound';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.selfcheck.block_checkout_on_copy_status','Block copy checkout status', 'coust', 'label') WHERE name = 'circ.selfcheck.block_checkout_on_copy_status';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.selfcheck.patron_login_timeout', 'Patron Login Timeout (in seconds)', 'coust', 'label') WHERE name = 'circ.selfcheck.patron_login_timeout';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.selfcheck.patron_password_required', 'Require Patron Password', 'coust', 'label') WHERE name = 'circ.selfcheck.patron_password_required';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.selfcheck.require_patron_password', 'Require patron password', 'coust', 'label') WHERE name = 'circ.selfcheck.require_patron_password';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.selfcheck.workstation_required', 'Workstation Required', 'coust', 'label') WHERE name = 'circ.selfcheck.workstation_required';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.void_lost_on_checkin', 'Void lost item billing when returned', 'coust', 'label') WHERE name = 'circ.void_lost_on_checkin';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.void_lost_proc_fee_on_checkin', 'Void processing fee on lost item return', 'coust', 'label') WHERE name = 'circ.void_lost_proc_fee_on_checkin';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('credit.processor.authorizenet.enabled', 'Enable AuthorizeNet payments', 'coust', 'label') WHERE name = 'credit.processor.authorizenet.enabled';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('credit.processor.authorizenet.login', 'AuthorizeNet login', 'coust', 'label') WHERE name = 'credit.processor.authorizenet.login';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('credit.processor.authorizenet.password', 'AuthorizeNet password', 'coust', 'label') WHERE name = 'credit.processor.authorizenet.password';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('credit.processor.authorizenet.server', 'AuthorizeNet server', 'coust', 'label') WHERE name = 'credit.processor.authorizenet.server';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('credit.processor.authorizenet.testmode', 'AuthorizeNet test mode', 'coust', 'label') WHERE name = 'credit.processor.authorizenet.testmode';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('credit.processor.default', 'Name default credit processor', 'coust', 'label') WHERE name = 'credit.processor.default';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('credit.processor.payflowpro.enabled', 'Enable PayflowPro payments', 'coust', 'label') WHERE name = 'credit.processor.payflowpro.enabled';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('credit.processor.payflowpro.login', 'PayflowPro login/merchant ID', 'coust', 'label') WHERE name = 'credit.processor.payflowpro.login';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('credit.processor.payflowpro.partner', 'PayflowPro partner', 'coust', 'label') WHERE name = 'credit.processor.payflowpro.partner';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('credit.processor.payflowpro.password', 'PayflowPro password', 'coust', 'label') WHERE name = 'credit.processor.payflowpro.password';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('credit.processor.payflowpro.testmode', 'PayflowPro test mode', 'coust', 'label') WHERE name = 'credit.processor.payflowpro.testmode';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('credit.processor.payflowpro.vendor', 'PayflowPro vendor', 'coust', 'label') WHERE name = 'credit.processor.payflowpro.vendor';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('credit.processor.paypal.enabled', 'Enable PayPal payments', 'coust', 'label') WHERE name = 'credit.processor.paypal.enabled';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('credit.processor.paypal.login', 'PayPal login', 'coust', 'label') WHERE name = 'credit.processor.paypal.login';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('credit.processor.paypal.password', 'PayPal password', 'coust', 'label') WHERE name = 'credit.processor.paypal.password';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('credit.processor.paypal.signature', 'PayPal signature', 'coust', 'label') WHERE name = 'credit.processor.paypal.signature';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('credit.processor.paypal.testmode', 'PayPal test mode', 'coust', 'label') WHERE name = 'credit.processor.paypal.testmode';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext( 'format.date', 'Format Dates with this pattern.', 'coust', 'label') WHERE name = 'format.date';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('format.time','Format Times with this pattern.', 'coust', 'label') WHERE name = 'format.time';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('gui.disable_local_save_columns','Disable the ability to save list column configurations locally.', 'coust', 'label') WHERE name = 'gui.disable_local_save_columns';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('opac.allow_pending_address', 'Allow pending addresses', 'coust', 'label') WHERE name = 'opac.allow_pending_address';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('opac.fully_compressed_serial_holdings', 'Use fully compressed serial holdings', 'coust', 'label') WHERE name = 'opac.fully_compressed_serial_holdings';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('opac.org_unit_hiding.depth','Org Unit Hiding Depth', 'coust', 'label') WHERE name = 'opac.org_unit_hiding.depth';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext( 'org.patron_opt_boundary', 'Patron Opt-In Boundary', 'coust', 'label') WHERE name = 'org.patron_opt_boundary';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext( 'org.patron_opt_default', 'Patron Opt-In Default', 'coust', 'label') WHERE name = 'org.patron_opt_default';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('serial.prev_issuance_copy_location', 'Previous Issuance Copy Location', 'coust', 'label') WHERE name = 'serial.prev_issuance_copy_location';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.admin.patron_log.max_entries', 'Work Log: Maximum Patrons Logged', 'coust', 'label') WHERE name = 'ui.admin.patron_log.max_entries';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.admin.work_log.max_entries', 'Work Log: Maximum Actions Logged', 'coust', 'label') WHERE name = 'ui.admin.work_log.max_entries';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.cat.volume_copy_editor.horizontal','Horizontal layout for Volume/Copy Creator/Editor.','coust', 'label') WHERE name = 'ui.cat.volume_copy_editor.horizontal';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.circ.in_house_use.entry_cap', 'Record In-House Use: Maximum # of uses allowed per entry.', 'coust', 'label') WHERE name = 'ui.circ.in_house_use.entry_cap';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.circ.in_house_use.entry_warn', 'Record In-House Use: # of uses threshold for Are You Sure? dialog.', 'coust', 'label') WHERE name = 'ui.circ.in_house_use.entry_warn';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext( 'ui.circ.suppress_checkin_popups', 'Suppress popup-dialogs during check-in.', 'coust', 'label') WHERE name = 'ui.circ.suppress_checkin_popups';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.general.button_bar', 'Button bar', 'coust', 'label') WHERE name = 'ui.general.button_bar';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.general.hotkeyset', 'Default Hotkeyset', 'coust', 'label') WHERE name = 'ui.general.hotkeyset';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.general.idle_timeout', 'Idle timeout', 'coust', 'label') WHERE name = 'ui.general.idle_timeout';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.default_country','Default Country for New Addresses in Patron Editor', 'coust', 'label') WHERE name = 'ui.patron.default_country';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.default_ident_type','Default Ident Type for Patron Registration', 'coust', 'label') WHERE name = 'ui.patron.default_ident_type';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.aua.county.require', 'Require county field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.aua.county.require';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.active.show', 'Show active field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.active.show';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.active.suggest', 'Suggest active field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.active.suggest';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.alert_message.show', 'Show alert_message field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.alert_message.show';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.alert_message.suggest', 'Suggest alert_message field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.alert_message.suggest';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.alias.show', 'Show alias field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.alias.show';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.alias.suggest', 'Suggest alias field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.alias.suggest';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.aua.post_code.example', 'Example for post_code field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.aua.post_code.example';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.aua.post_code.regex', 'Regex for post_code field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.aua.post_code.regex';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.barred.show', 'Show barred field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.barred.show';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.barred.suggest', 'Suggest barred field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.barred.suggest';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.claims_never_checked_out_count.show', 'Show claims_never_checked_out_count field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.claims_never_checked_out_count.show';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.claims_never_checked_out_count.suggest', 'Suggest claims_never_checked_out_count field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.claims_never_checked_out_count.suggest';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.claims_returned_count.show', 'Show claims_returned_count field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.claims_returned_count.show';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.claims_returned_count.suggest', 'Suggest claims_returned_count field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.claims_returned_count.suggest';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.day_phone.example', 'Example for day_phone field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.day_phone.example';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.day_phone.regex', 'Regex for day_phone field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.day_phone.regex';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.day_phone.require', 'Require day_phone field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.day_phone.require';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.day_phone.show', 'Show day_phone field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.day_phone.show';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.day_phone.suggest', 'Suggest day_phone field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.day_phone.suggest';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.dob.calendar', 'Show calendar widget for dob field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.dob.calendar';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.dob.require', 'Require dob field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.dob.require';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.dob.show', 'Show dob field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.dob.show';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.dob.suggest', 'Suggest dob field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.dob.suggest';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.email.example', 'Example for email field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.email.example';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.email.regex', 'Regex for email field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.email.regex';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.email.require', 'Require email field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.email.require';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.email.show', 'Show email field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.email.show';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.email.suggest', 'Suggest email field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.email.suggest';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.evening_phone.example', 'Example for evening_phone field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.evening_phone.example';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.evening_phone.regex', 'Regex for evening_phone field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.evening_phone.regex';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.evening_phone.require', 'Require evening_phone field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.evening_phone.require';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.evening_phone.show', 'Show evening_phone field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.evening_phone.show';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.evening_phone.suggest', 'Suggest evening_phone field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.evening_phone.suggest';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.ident_value2.show', 'Show ident_value2 field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.ident_value2.show';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.ident_value2.suggest', 'Suggest ident_value2 field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.ident_value2.suggest';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.ident_value.show', 'Show ident_value field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.ident_value.show';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.ident_value.suggest', 'Suggest ident_value field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.ident_value.suggest';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.juvenile.show', 'Show juvenile field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.juvenile.show';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.juvenile.suggest', 'Suggest juvenile field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.juvenile.suggest';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.master_account.show', 'Show master_account field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.master_account.show';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.master_account.suggest', 'Suggest master_account field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.master_account.suggest';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.other_phone.example', 'Example for other_phone field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.other_phone.example';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.other_phone.regex', 'Regex for other_phone field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.other_phone.regex';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.other_phone.require', 'Require other_phone field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.other_phone.require';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.other_phone.show', 'Show other_phone field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.other_phone.show';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.other_phone.suggest', 'Suggest other_phone field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.other_phone.suggest';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.second_given_name.show', 'Show second_given_name field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.second_given_name.show';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.second_given_name.suggest', 'Suggest second_given_name field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.second_given_name.suggest';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.suffix.show', 'Show suffix field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.suffix.show';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.suffix.suggest', 'Suggest suffix field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.suffix.suggest';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.default_suggested', 'Default showing suggested patron registration fields', 'coust', 'label') WHERE name = 'ui.patron.edit.default_suggested';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.phone.example', 'Example for phone fields on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.phone.example';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.phone.regex', 'Regex for phone fields on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.phone.regex';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.registration.require_address','Require at least one address for Patron Registration', 'coust', 'label') WHERE name = 'ui.patron.registration.require_address';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.staff.require_initials', 'Require staff initials for entry/edit of item/patron/penalty notes/messages.', 'coust', 'label') WHERE name = 'ui.staff.require_initials';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext( 'ui.unified_volume_copy_editor', 'Unified Volume/Item Creator/Editor', 'coust', 'label') WHERE name = 'ui.unified_volume_copy_editor';
-UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('url.remote_column_settings','URL for remote directory containing list column settings.', 'coust', 'label') WHERE name = 'url.remote_column_settings';
 
 COMMIT;
diff --git a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
index 55b5164..9ca048c 100644
--- a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
+++ b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
@@ -530,7 +530,9 @@ function osLaunchHistory(name) {
         d = thisHist[i].date_applied();
         a = ouNames[thisHist[i].org()];
         o = thisHist[i].original_value();
+        if(o) o=o.replace(/\&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
         n = thisHist[i].new_value();
+        if(n) n=n.replace(/\&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
         r = thisHist[i].org();
         // Table is: Date | Org Name | Orig Value | New Value | Revert
         data += "<tr><td>" + d + "</td><td>" + a + "</td><td>" + o +

commit d5043efbad49eef4b723567d27b6094b02d5e663
Author: Mike Rylander <mrylander at gmail.com>
Date:   Wed Sep 7 14:27:05 2011 -0400

    Cleanup, yay! Give YAOUS logging table a surrogate pkey and upgrade script; clean up some typos; position the existing upgrade script correctly
    
    Signed-off-by: Mike Rylander <mrylander at gmail.com>
    Signed-off-by: Thomas Berezansky <tsbere at mvlc.org>
    Signed-off-by: Jason Etheridge <jason at esilibrary.com>

diff --git a/Open-ILS/examples/fm_IDL.xml b/Open-ILS/examples/fm_IDL.xml
index 2c1c186..8c587e3 100644
--- a/Open-ILS/examples/fm_IDL.xml
+++ b/Open-ILS/examples/fm_IDL.xml
@@ -9159,9 +9159,10 @@ SELECT  usr,
 	</class>
 
 	<class id="coustl" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="config::org_unit_setting_type_log" oils_persist:tablename="config.org_unit_setting_type_log" reporter:label="Organizational Unit Setting Type Log">
-		<fields oils_persist:primary="date_applied">
+		<fields oils_persist:primary="date_applied" oils_persist:sequence="config.org_unit_setting_type_log_id_seq">
+			<field reporter:label="ID" name="id" reporter:datatype="id"/>
 			<field name="date_applied" reporter:datatype="timestamp"/>
-			<field name="org" reporter:datatype="link"/>
+			<field name="org" reporter:datatype="org_unit"/>
 			<field name="original_value" reporter:datatype="text"/>
 			<field name="new_value" reporter:datatype="text"/>
 			<field name="field_name" reporter:datatype="link"/>
@@ -9172,10 +9173,10 @@ SELECT  usr,
 		</links>
 		<permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
 			<actions>
-				<create permission="ADMIN_ORG_UNIT_SETTING_TYPE" global_required="true"/>
+				<create permission="ADMIN_ORG_UNIT_SETTING_TYPE" context_field="org"/>
 				<retrieve/>
-				<update permission="ADMIN_ORG_UNIT_SETTING_TYPE_LOG" global_required="true"/>
-				<delete permission="ADMIN_ORG_UNIT_SETTING_TYPE_LOG" global_required="true"/>
+				<update permission="ADMIN_ORG_UNIT_SETTING_TYPE_LOG" context_field="org"/>
+				<delete permission="ADMIN_ORG_UNIT_SETTING_TYPE_LOG" context_field="org"/>
 			</actions>
 		</permacrud>
 	</class>
diff --git a/Open-ILS/src/sql/Pg/002.schema.config.sql b/Open-ILS/src/sql/Pg/002.schema.config.sql
index 6f61662..53e0ba5 100644
--- a/Open-ILS/src/sql/Pg/002.schema.config.sql
+++ b/Open-ILS/src/sql/Pg/002.schema.config.sql
@@ -917,8 +917,9 @@ CREATE TYPE evergreen.barcode_set AS (type TEXT, id BIGINT, barcode TEXT);
 
 
 CREATE TABLE config.org_unit_setting_type_log (
-    date_applied    TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW() PRIMARY KEY,
-    org             SERIAL,   --REFERENCES actor.org_unit (id),
+    id              BIGSERIAL   PRIMARY KEY,
+    date_applied    TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
+    org             INT,   --REFERENCES actor.org_unit (id),
     original_value  TEXT,
     new_value       TEXT,
     field_name      TEXT      REFERENCES config.org_unit_setting_type (name)
diff --git a/Open-ILS/src/sql/Pg/800.fkeys.sql b/Open-ILS/src/sql/Pg/800.fkeys.sql
index 224ca4a..53be2e1 100644
--- a/Open-ILS/src/sql/Pg/800.fkeys.sql
+++ b/Open-ILS/src/sql/Pg/800.fkeys.sql
@@ -124,6 +124,6 @@ CREATE INDEX by_heading ON authority.record_entry (authority.simple_normalize_he
 
 ALTER TABLE config.z3950_source ADD CONSTRAINT use_perm_fkey FOREIGN KEY (use_perm) REFERENCES permission.perm_list (id) ON UPDATE CASCADE ON DELETE RESTRICT DEFERRABLE INITIALLY DEFERRED;
 
-ALTER TABLE config.org_unit_setting_type_log ADD CONSTRAINT config_org_unit_setting_type_log_fkey FORIEGN KEY (org) REFERENCES actor.org_unit (id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
+ALTER TABLE config.org_unit_setting_type_log ADD CONSTRAINT config_org_unit_setting_type_log_fkey FOREIGN KEY (org) REFERENCES actor.org_unit (id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
 
 COMMIT;
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 1e9d908..af06103 100644
--- a/Open-ILS/src/sql/Pg/950.data.seed-values.sql
+++ b/Open-ILS/src/sql/Pg/950.data.seed-values.sql
@@ -6179,7 +6179,7 @@ INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
     VALUES (
         'circ.holds.uncancel.reset_request_time',
         oils_i18n_gettext('circ.holds.uncancel.reset_request_time', 'Reset request time on un-cancel','coust', 'label'),
-        oils_i18n_gettext('circ.holds.uncancel.reset_request_time', 'When a hold is uncanceled, reset the request time to push it to the end of the queue',- 'coust', 'description'),
+        oils_i18n_gettext('circ.holds.uncancel.reset_request_time', 'When a hold is uncanceled, reset the request time to push it to the end of the queue', 'coust', 'description'),
         'bool'
     );
 
diff --git a/Open-ILS/src/sql/Pg/upgrade/9999.data-seed-values-group update.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.data.YAOUS-i18n-update.sql
similarity index 99%
rename from Open-ILS/src/sql/Pg/upgrade/9999.data-seed-values-group update.sql
rename to Open-ILS/src/sql/Pg/upgrade/XXXX.data.YAOUS-i18n-update.sql
index 3084d1c..3588622 100644
--- a/Open-ILS/src/sql/Pg/upgrade/9999.data-seed-values-group update.sql	
+++ b/Open-ILS/src/sql/Pg/upgrade/XXXX.data.YAOUS-i18n-update.sql
@@ -3,7 +3,7 @@
 --
 BEGIN;
 
-INSERT INTO config.upgrade_log (version) VALUES ('9999');
+SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version);
 
 
 UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.holds.behind_desk_pickup_supported', 'Behind Desk Pickup Supported', 'coust', 'label') WHERE name = 'circ.holds.behind_desk_pickup_supported';
diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.YAOUS-log-table.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.YAOUS-log-table.sql
new file mode 100644
index 0000000..4ce1c9d
--- /dev/null
+++ b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.YAOUS-log-table.sql
@@ -0,0 +1,15 @@
+BEGIN;
+
+SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version);
+
+
+CREATE TABLE config.org_unit_setting_type_log (
+    id              BIGSERIAL   PRIMARY KEY,
+    date_applied    TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
+    org             INT         REFERENCES actor.org_unit (id),
+    original_value  TEXT,
+    new_value       TEXT,
+    field_name      TEXT      REFERENCES config.org_unit_setting_type (name)
+);
+
+COMMIT;

commit 4af6d17a09ad214c63724a47ff7113d70fc3f849
Author: Joseph Lewis <joehms22 at gmail.com>
Date:   Thu Jul 7 13:21:53 2011 -0600

    Added the following features/imporovements suggested by the community:
    
     * Sort history by date descending.
     * Add revert button to history.
     * Search after pause.
     * Dynamically adjust amount of time message is shown by its length.
     * Fix a bug about things not being shown in history after delete.
     * Fix a problem with user not being shown change if they make a change in a
       context that isn't currently shown.
     * Do i18n on everything.
    
    Signed-off-by: Joseph Lewis <joehms22 at gmail.com>
    Signed-off-by: Thomas Berezansky <tsbere at mvlc.org>
    Signed-off-by: Jason Etheridge <jason at esilibrary.com>

diff --git a/Open-ILS/src/sql/Pg/005.schema.actors.sql b/Open-ILS/src/sql/Pg/005.schema.actors.sql
index 587b785..4306245 100644
--- a/Open-ILS/src/sql/Pg/005.schema.actors.sql
+++ b/Open-ILS/src/sql/Pg/005.schema.actors.sql
@@ -486,6 +486,25 @@ CREATE TRIGGER log_ous_change
     BEFORE INSERT OR UPDATE ON actor.org_unit_setting
     FOR EACH ROW EXECUTE PROCEDURE ous_change_log();
 
+CREATE OR REPLACE FUNCTION ous_delete_log() RETURNS TRIGGER AS $ous_delete_log$
+    DECLARE
+    original TEXT;
+    BEGIN
+        -- Check for which setting is being updated, and log it.
+        SELECT INTO original value FROM actor.org_unit_setting WHERE name = OLD.name AND org_unit = OLD.org_unit;
+                
+        INSERT INTO config.org_unit_setting_type_log (org,original_value,new_value,field_name) VALUES (OLD.org_unit, original, 'null', OLD.name);
+        
+        RETURN OLD;
+    END;
+$ous_delete_log$ LANGUAGE plpgsql;    
+
+CREATE TRIGGER log_ous_del
+    BEFORE DELETE ON actor.org_unit_setting
+    FOR EACH ROW EXECUTE PROCEDURE ous_delete_log();
+
+
+
 
 CREATE TABLE actor.usr_address (
 	id			SERIAL	PRIMARY KEY,
diff --git a/Open-ILS/web/opac/locale/en-US/lang.dtd b/Open-ILS/web/opac/locale/en-US/lang.dtd
index 0af38c2..966e8f2 100644
--- a/Open-ILS/web/opac/locale/en-US/lang.dtd
+++ b/Open-ILS/web/opac/locale/en-US/lang.dtd
@@ -1822,6 +1822,8 @@
 <!ENTITY staff.server.admin.org_unit_settings.history_date "Date Changed">
 <!ENTITY staff.server.admin.org_unit_settings.history_orig "Original Value">
 <!ENTITY staff.server.admin.org_unit_settings.history_new "New Value">
+<!ENTITY staff.server.admin.org_unit_settings.history_revert "Revert">
+<!ENTITY staff.server.admin.org_unit_settings.not_chosen "The setting you edited is not the currently chosen org unit, therefore the changes you made are not visible.">
 <!ENTITY staff.server.admin.offline.xacts.caption "Offline Sessions">
 <!ENTITY staff.server.admin.offline.xacts.refresh.accesskey "R">
 <!ENTITY staff.server.admin.offline.xacts.create.label "Create">
diff --git a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
index 1559c1c..55b5164 100644
--- a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
+++ b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
@@ -131,6 +131,17 @@ function osDraw(specific_setting) {
     osDrawNames(names);
 }
 
+/**
+ * Auto searches 500ms after entering text.
+ */
+var osCurrentSearchTimeout;
+function osSearchChange() {
+    if(osCurrentSearchTimeout != null)
+        clearTimeout(osCurrentSearchTimeout);
+        
+    osCurrentSearchTimeout = setTimeout("doSearch()", 500);
+}
+
 //Limits those functions seen to the ones that have similar text to 
 //that which is provided. Not case sensitive.
 function osLimitSeen(text) {
@@ -167,6 +178,8 @@ function osLimitSeen(text) {
 }
 
 function doSearch() {
+    osCurrentSearchTimeout = null;
+    
     var query = dojo.byId('searchBox').value;
     
     osLimitSeen(query);
@@ -434,9 +447,7 @@ function osEditSetting(deleteMe) {
     var obj = {};
     if(deleteMe) {
         obj[name] = null;
-
     } else {
-
         if(osSettings[name].fm_class) {
             var val = osEditAutoWidget.attr('value');
             osEditAutoWidget.domNode.parentNode.removeChild(osEditAutoWidget.domNode);
@@ -478,11 +489,26 @@ function osUpdateSetting(obj, context, name) {
                 if(e = openils.Event.parse(res))
                     return alert(e);
                 osDraw(obj);
+                if(context != osContextSelector.getValue())
+                    showAlert(dojo.byId('os-not-chosen').innerHTML);
             }
         }
     );
 }
 
+function osRevertSetting(context, name, value) {
+    osHistDialog.hide();
+
+    var obj = {};
+    
+    if(value == 'null' || value == null)
+        obj[name] = null;
+    else
+        obj[name] = value;
+    
+    osUpdateSetting(obj, context, name);
+}
+
 function osGetHistoryLink(rowIdx) {
     var data = this.grid.model.getRow(rowIdx);
     if(!data) return '';
@@ -500,23 +526,33 @@ function osLaunchHistory(name) {
     
     var data = dojo.byId('histTitle').innerHTML;
     var thisHist = pcrud.search('coustl', {'field_name':name});
-    for(var i in thisHist) {
-         data += "<tr><td>" + thisHist[i].date_applied() + "</td><td>" + 
-         ouNames[thisHist[i].org()] + "</td><td>" + thisHist[i].original_value() +
-         "</td><td>" + thisHist[i].new_value() + "</td></tr>";
+    for(var i in thisHist.reverse()) {
+        d = thisHist[i].date_applied();
+        a = ouNames[thisHist[i].org()];
+        o = thisHist[i].original_value();
+        n = thisHist[i].new_value();
+        r = thisHist[i].org();
+        // Table is: Date | Org Name | Orig Value | New Value | Revert
+        data += "<tr><td>" + d + "</td><td>" + a + "</td><td>" + o +
+        "</td><td>" + n + "</td><td>" +
+        "<a href='javascript:void(0);' onclick='osRevertSetting(" + r + ", &quot;" + name +"&quot;,"+o+");'>"+dojo.byId('os-revert').innerHTML+"</a></td></tr>";
     }
         
     dojo.byId('historyData').innerHTML = data;
     
     showProcessingDialog(false);
     osHistDialog.show();
-
 }
 
 function showAlert(message, timeout) {
-     if(timeout == null)
+    if(timeout == null) {
         timeout = 3000;
-        
+        if(message.length > 50)
+            timeout = 5000;
+        if(message.length > 80)
+            timeout = 8000;
+    }
+    
     dojo.removeClass('msgCont', 'hidden');
     
     dojo.byId('msgInner').innerHTML = message;
diff --git a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.xhtml b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.xhtml
index 988ad21..df6d7da 100644
--- a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.xhtml
+++ b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.xhtml
@@ -88,7 +88,7 @@
                     <span dojoType="dijit.ToolbarSeparator" />
                     
                     <form id='searchform' onSubmit='return doSearch()'>
-                            <input type='text' dojoType='dijit.form.TextBox' id='searchBox' />
+                            <input type='text' dojoType='dijit.form.TextBox' id='searchBox' onkeypress='osSearchChange();' />
                             <button type='submit' dojoType='dijit.form.Button'>&staff.server.admin.org_unit_settings.filter;</button>
                             <button dojoType='dijit.form.Button' onClick='clearSearch();'>&staff.server.admin.org_unit_settings.clear_filter;</button>
                     </form>
@@ -141,8 +141,7 @@
                         <td>&staff.server.admin.org_unit_settings.context;</td>
                         <td> 
                             <select dojoType="openils.widget.OrgUnitFilteringSelect" jsId='osEditContextSelector'
-                                searchAttr="shortname" autocomplete="true" labelAttr='shortname'> 
-                            </select>
+                                searchAttr="shortname" autocomplete="true" labelAttr='shortname' />
                         </td>
                     </tr>
                     <tr>
@@ -178,6 +177,8 @@
         <span id='os-true' class='hidden'>&common.true;</span>
         <span id='os-false' class='hidden'>&common.false;</span>
         <span id='os-copy' class='hidden'>&staff.server.admin.org_unit_settings.copy;</span>
+        <span id='os-revert' class='hidden'>&staff.server.admin.org_unit_settings.history_revert;</span>
+        <span id='os-not-chosen' class='hidden'>&staff.server.admin.org_unit_settings.not_chosen;</span>
         
         <!--Export Dialog-->
         <div id='jsonOutputDialog' dojoType='dijit.Dialog' jsId='osJSONOutDialog' title='&staff.server.admin.org_unit_settings.export;'>

commit d2ae9eddb7e9e324e7dad774c9fdd284ab2102de
Author: Joseph Lewis <joehms22 at gmail.com>
Date:   Mon Jun 20 13:36:25 2011 -0600

    Fixed my database errors (although some still exist, I can't tell if they
    are mine or not, I'm going to test the master and see if they exist there...)
    
    Signed-off-by: Joseph Lewis <joehms22 at gmail.com>
    Signed-off-by: Thomas Berezansky <tsbere at mvlc.org>
    Signed-off-by: Jason Etheridge <jason at esilibrary.com>

diff --git a/Open-ILS/src/sql/Pg/002.schema.config.sql b/Open-ILS/src/sql/Pg/002.schema.config.sql
index 2e032a2..6f61662 100644
--- a/Open-ILS/src/sql/Pg/002.schema.config.sql
+++ b/Open-ILS/src/sql/Pg/002.schema.config.sql
@@ -918,13 +918,13 @@ CREATE TYPE evergreen.barcode_set AS (type TEXT, id BIGINT, barcode TEXT);
 
 CREATE TABLE config.org_unit_setting_type_log (
     date_applied    TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW() PRIMARY KEY,
-    org             SERIAL    REFERENCES actor.org_unit (id),
+    org             SERIAL,   --REFERENCES actor.org_unit (id),
     original_value  TEXT,
     new_value       TEXT,
     field_name      TEXT      REFERENCES config.org_unit_setting_type (name)
 );
 
-COMMENT ON TABLE config.org_unit_setting_log IS $$
+COMMENT ON TABLE config.org_unit_setting_type_log IS $$
 Org Unit setting Logs
 
 This table contains the most recent changes to each setting 
diff --git a/Open-ILS/src/sql/Pg/800.fkeys.sql b/Open-ILS/src/sql/Pg/800.fkeys.sql
index 3777df3..224ca4a 100644
--- a/Open-ILS/src/sql/Pg/800.fkeys.sql
+++ b/Open-ILS/src/sql/Pg/800.fkeys.sql
@@ -124,4 +124,6 @@ CREATE INDEX by_heading ON authority.record_entry (authority.simple_normalize_he
 
 ALTER TABLE config.z3950_source ADD CONSTRAINT use_perm_fkey FOREIGN KEY (use_perm) REFERENCES permission.perm_list (id) ON UPDATE CASCADE ON DELETE RESTRICT DEFERRABLE INITIALLY DEFERRED;
 
+ALTER TABLE config.org_unit_setting_type_log ADD CONSTRAINT config_org_unit_setting_type_log_fkey FORIEGN KEY (org) REFERENCES actor.org_unit (id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
+
 COMMIT;

commit 1e8a378b54b546ac0a474d39a24c00a195e5d026
Author: Joseph Lewis <joehms22 at gmail.com>
Date:   Fri Jun 17 15:05:51 2011 -0600

    Cleaned up so it shouldn't ruin the database creation (hopefully).
    
    Signed-off-by: Joseph Lewis <joehms22 at gmail.com>
    Signed-off-by: Thomas Berezansky <tsbere at mvlc.org>
    Signed-off-by: Jason Etheridge <jason at esilibrary.com>

diff --git a/Open-ILS/src/sql/Pg/002.schema.config.sql b/Open-ILS/src/sql/Pg/002.schema.config.sql
index 476cc2f..2e032a2 100644
--- a/Open-ILS/src/sql/Pg/002.schema.config.sql
+++ b/Open-ILS/src/sql/Pg/002.schema.config.sql
@@ -924,6 +924,14 @@ CREATE TABLE config.org_unit_setting_type_log (
     field_name      TEXT      REFERENCES config.org_unit_setting_type (name)
 );
 
+COMMENT ON TABLE config.org_unit_setting_log IS $$
+Org Unit setting Logs
+
+This table contains the most recent changes to each setting 
+in actor.org_unit_setting, allowing for mistakes to be undone.
+This is NOT meant to be an auditor, but rather an undo/redo.
+$$;
+
 CREATE OR REPLACE FUNCTION limit_oustl() RETURNS TRIGGER AS $oustl_limit$
     BEGIN
         -- Only keeps the most recent five settings changes.
@@ -942,24 +950,5 @@ $oustl_limit$ LANGUAGE plpgsql;
 CREATE TRIGGER limit_logs_oust
     BEFORE INSERT OR UPDATE ON config.org_unit_setting_type_log
     FOR EACH ROW EXECUTE PROCEDURE limit_oustl();
-    
-
--- Log each change in oust to oustl, so admins can see what they messed up if someting stops working.
-CREATE OR REPLACE FUNCTION ous_change_log() RETURNS TRIGGER AS $ous_change_log$
-    DECLARE
-    original TEXT;
-    BEGIN
-        -- Check for which setting is being updated, and log it.
-        SELECT INTO original value FROM actor.org_unit_setting WHERE name = NEW.name AND org_unit = NEW.org_unit;
-                
-        INSERT INTO config.org_unit_setting_type_log (org,original_value,new_value,field_name) VALUES (NEW.org_unit, original, NEW.value, NEW.name);
-        
-        RETURN NEW;
-    END;
-$ous_change_log$ LANGUAGE plpgsql;    
-
-CREATE TRIGGER log_ous_change
-    BEFORE INSERT OR UPDATE ON actor.org_unit_setting
-    FOR EACH ROW EXECUTE PROCEDURE ous_change_log();
 
 COMMIT;
diff --git a/Open-ILS/src/sql/Pg/005.schema.actors.sql b/Open-ILS/src/sql/Pg/005.schema.actors.sql
index 4208cd0..587b785 100644
--- a/Open-ILS/src/sql/Pg/005.schema.actors.sql
+++ b/Open-ILS/src/sql/Pg/005.schema.actors.sql
@@ -468,6 +468,24 @@ $$;
 
 CREATE INDEX actor_org_unit_setting_usr_idx ON actor.org_unit_setting (org_unit);
 
+-- Log each change in oust to oustl, so admins can see what they messed up if someting stops working.
+CREATE OR REPLACE FUNCTION ous_change_log() RETURNS TRIGGER AS $ous_change_log$
+    DECLARE
+    original TEXT;
+    BEGIN
+        -- Check for which setting is being updated, and log it.
+        SELECT INTO original value FROM actor.org_unit_setting WHERE name = NEW.name AND org_unit = NEW.org_unit;
+                
+        INSERT INTO config.org_unit_setting_type_log (org,original_value,new_value,field_name) VALUES (NEW.org_unit, original, NEW.value, NEW.name);
+        
+        RETURN NEW;
+    END;
+$ous_change_log$ LANGUAGE plpgsql;    
+
+CREATE TRIGGER log_ous_change
+    BEFORE INSERT OR UPDATE ON actor.org_unit_setting
+    FOR EACH ROW EXECUTE PROCEDURE ous_change_log();
+
 
 CREATE TABLE actor.usr_address (
 	id			SERIAL	PRIMARY KEY,

commit 721e1be02c0088b9ecb553b0963e90a1da31418b
Author: Joseph Lewis <joehms22 at gmail.com>
Date:   Wed Jun 15 13:28:26 2011 -0600

    Fixed the non i18n settings for oust.
    
    Signed-off-by: Joseph Lewis <joehms22 at gmail.com>
    Signed-off-by: Thomas Berezansky <tsbere at mvlc.org>
    Signed-off-by: Jason Etheridge <jason at esilibrary.com>

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 da0bb3c..1e9d908 100644
--- a/Open-ILS/src/sql/Pg/950.data.seed-values.sql
+++ b/Open-ILS/src/sql/Pg/950.data.seed-values.sql
@@ -5855,22 +5855,22 @@ SELECT SETVAL('action_trigger.event_definition_id_seq'::TEXT, 100);
 
 INSERT INTO config.org_unit_setting_type (name, label, description, datatype) VALUES (
     'circ.holds.org_unit_target_weight',
-    'Org Unit Target Weight',
-    'Org Units can be organized into hold target groups based on a weight.  Potential copies from org units with the same weight are chosen at random.',
+    oils_i18n_gettext('circ.holds.org_unit_target_weight', 'Org Unit Target Weight', 'coust', 'label'),
+    oils_i18n_gettext('circ.holds.org_unit_target_weight', 'Org Units can be organized into hold target groups based on a weight.  Potential copies from org units with the same weight are chosen at random.', 'coust', 'description'),
     'integer'
 );
 
 INSERT INTO config.org_unit_setting_type (name, label, description, datatype) VALUES (
     'circ.holds.target_holds_by_org_unit_weight',
-    'Use weight-based hold targeting',
-    'Use library weight based hold targeting',
+    oils_i18n_gettext('circ.holds.target_holds_by_org_unit_weight', 'Use weight-based hold targeting', 'coust', 'label'),
+    oils_i18n_gettext('circ.holds.target_holds_by_org_unit_weight', 'Use library weight based hold targeting', 'coust', 'description'),
     'bool'
 );
 
 INSERT INTO config.org_unit_setting_type (name, label, description, datatype) VALUES (
     'circ.holds.max_org_unit_target_loops',
-    'Maximum library target attempts',
-    'When this value is set and greater than 0, the system will only attempt to find a copy at each possible branch the configured number of times',
+    oils_i18n_gettext('circ.holds.max_org_unit_target_loops', 'Maximum library target attempts', 'coust', 'label'),
+    oils_i18n_gettext('circ.holds.max_org_unit_target_loops', 'When this value is set and greater than 0, the system will only attempt to find a copy at each possible branch the configured number of times', 'coust', 'description'),
     'integer'
 );
 
@@ -5878,24 +5878,30 @@ INSERT INTO config.org_unit_setting_type (name, label, description, datatype) VA
 -- Org setting for overriding the circ lib of a precat copy
 INSERT INTO config.org_unit_setting_type (name, label, description, datatype) VALUES (
     'circ.pre_cat_copy_circ_lib',
-    'Pre-cat Item Circ Lib',
-    'Override the default circ lib of "here" with a pre-configured circ lib for pre-cat items.  The value should be the "shortname" (aka policy name) of the org unit',
+    oils_i18n_gettext('circ.pre_cat_copy_circ_lib', 'Pre-cat Item Circ Lib', 'coust', 'label'),
+    oils_i18n_gettext('circ.pre_cat_copy_circ_lib', 'Override the default circ lib of "here" with a pre-configured circ lib for pre-cat items.  The value should be the "shortname" (aka policy name) of the org unit', 'coust', 'description'),
     'string'
 );
 
 -- Circ auto-renew interval setting
 INSERT INTO config.org_unit_setting_type (name, label, description, datatype) VALUES (
     'circ.checkout_auto_renew_age',
-    'Checkout auto renew age',
-    'When an item has been checked out for at least this amount of time, an attempt to check out the item to the patron that it is already checked out to will simply renew the circulation',
+    oils_i18n_gettext('circ.checkout_auto_renew_age', 'Checkout auto renew age', 'coust', 'label'),
+    oils_i18n_gettext('circ.checkout_auto_renew_age', 'When an item has been checked out for at least this amount of time, an attempt to check out the item to the patron that it is already checked out to will simply renew the circulation', 'coust', 'description'),
     'interval'
 );
 
 -- Setting for behind the desk hold pickups
 INSERT INTO config.org_unit_setting_type (name, label, description, datatype) VALUES (
     'circ.holds.behind_desk_pickup_supported',
-    'Behind Desk Pickup Supported',
-    'If a branch supports both a public holds shelf and behind-the-desk pickups, set this value to true.  This gives the patron the option to enable behind-the-desk pickups for their holds',
+    oils_i18n_gettext('circ.holds.behind_desk_pickup_supported',
+        'Behind Desk Pickup Supported',
+        'coust',
+        'label'),
+    oils_i18n_gettext('circ.holds.behind_desk_pickup_supported',
+        'If a branch supports both a public holds shelf and behind-the-desk pickups, set this value to true.  This gives the patron the option to enable behind-the-desk pickups for their holds',
+        'coust',
+        'description'),
     'bool'
 );
 
@@ -6137,8 +6143,8 @@ INSERT INTO
     config.org_unit_setting_type ( name, label, description, datatype )
     VALUES (
         'circ.claim_never_checked_out.mark_missing',
-        'Claim Never Checked Out: Mark copy as missing', 
-        'When a circ is marked as claims-never-checked-out, mark the copy as missing',
+        oils_i18n_gettext('circ.claim_never_checked_out.mark_missing', 'Claim Never Checked Out: Mark copy as missing', 'coust', 'label'),
+        oils_i18n_gettext('circ.claim_never_checked_out.mark_missing', 'When a circ is marked as claims-never-checked-out, mark the copy as missing', 'coust', 'description'),
         'bool'
     );
 
@@ -6147,8 +6153,8 @@ INSERT INTO
     config.org_unit_setting_type ( name, label, description, datatype )
     VALUES (
         'circ.damaged.void_ovedue',
-        'Mark item damaged voids overdues',
-        'When an item is marked damaged, overdue fines on the most recent circulation are voided.',
+        oils_i18n_gettext('circ.damaged.void_ovedue', 'Mark item damaged voids overdues', 'coust', 'label'),
+        oils_i18n_gettext('circ.damaged.void_ovedue', 'When an item is marked damaged, overdue fines on the most recent circulation are voided.', 'coust', 'description'),
         'bool'
     );
 
@@ -6156,32 +6162,32 @@ INSERT INTO
 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
     VALUES (
         'circ.holds.canceled.display_count',
-        'Canceled holds display count',
-        'How many canceled holds to show in patron holds interfaces',
+        oils_i18n_gettext('circ.holds.canceled.display_count', 'Canceled holds display count', 'coust', 'label'),
+        oils_i18n_gettext('circ.holds.canceled.display_count', 'How many canceled holds to show in patron holds interfaces', 'coust', 'description'),
         'integer'
     );
 
 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
     VALUES (
         'circ.holds.canceled.display_age',
-        'Canceled holds display age',
-        'Show all canceled holds that were canceled within this amount of time',
+        oils_i18n_gettext('circ.holds.canceled.display_age', 'Canceled holds display age', 'coust', 'label'),
+        oils_i18n_gettext('circ.holds.canceled.display_age', 'Show all canceled holds that were canceled within this amount of time', 'coust', 'description'),
         'interval'
     );
 
 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
     VALUES (
         'circ.holds.uncancel.reset_request_time',
-        'Reset request time on un-cancel',
-        'When a hold is uncanceled, reset the request time to push it to the end of the queue',
+        oils_i18n_gettext('circ.holds.uncancel.reset_request_time', 'Reset request time on un-cancel','coust', 'label'),
+        oils_i18n_gettext('circ.holds.uncancel.reset_request_time', 'When a hold is uncanceled, reset the request time to push it to the end of the queue',- 'coust', 'description'),
         'bool'
     );
 
 INSERT INTO config.org_unit_setting_type (name, label, description, datatype)
     VALUES (
         'circ.holds.default_shelf_expire_interval',
-        'Default hold shelf expire interval',
-        '',
+        oils_i18n_gettext('circ.holds.default_shelf_expire_interval', 'Default hold shelf expire interval', 'coust', 'label'),
+        oils_i18n_gettext('circ.holds.default_shelf_expire_interval', '', 'coust', 'description'),
         'interval'
 );
 
@@ -8961,24 +8967,24 @@ INSERT into config.org_unit_setting_type
 INSERT INTO config.org_unit_setting_type 
 ( name, label, description, datatype ) VALUES 
 ( 'circ.user_merge.delete_addresses', 
-  'Patron Merge Address Delete', 
-  'Delete address(es) of subordinate user(s) in a patron merge', 
+  oils_i18n_gettext('circ.user_merge.delete_addresses','Patron Merge Address Delete', 'coust', 'label'),
+  oils_i18n_gettext('circ.user_merge.delete_addresses','Delete address(es) of subordinate user(s) in a patron merge', 'coust', 'description'),
    'bool'
 );
 
 INSERT INTO config.org_unit_setting_type 
 ( name, label, description, datatype ) VALUES 
 ( 'circ.user_merge.delete_cards', 
-  'Patron Merge Barcode Delete', 
-  'Delete barcode(s) of subordinate user(s) in a patron merge', 
+  oils_i18n_gettext('circ.user_merge.delete_cards','Patron Merge Barcode Delete', 'coust', 'label'),
+  oils_i18n_gettext('circ.user_merge.delete_cards','Delete barcode(s) of subordinate user(s) in a patron merge', 'coust', 'description'),
   'bool'
 );
 
 INSERT INTO config.org_unit_setting_type 
 ( name, label, description, datatype ) VALUES 
 ( 'circ.user_merge.deactivate_cards', 
-  'Patron Merge Deactivate Card', 
-  'Mark barcode(s) of subordinate user(s) in a patron merge as inactive', 
+  oils_i18n_gettext('circ.user_merge.deactivate_cards','Patron Merge Deactivate Card', 'coust', 'label'),
+  oils_i18n_gettext('circ.user_merge.deactivate_cards','Mark barcode(s) of subordinate user(s) in a patron merge as inactive', 'coust', 'description'),
   'bool'
 );
 
diff --git a/Open-ILS/src/sql/Pg/upgrade/9999.data-seed-values-group update.sql b/Open-ILS/src/sql/Pg/upgrade/9999.data-seed-values-group update.sql
index df23211..3084d1c 100644
--- a/Open-ILS/src/sql/Pg/upgrade/9999.data-seed-values-group update.sql	
+++ b/Open-ILS/src/sql/Pg/upgrade/9999.data-seed-values-group update.sql	
@@ -6,18 +6,17 @@ BEGIN;
 INSERT INTO config.upgrade_log (version) VALUES ('9999');
 
 
--- FIXME these need i18n, along with their descriptions: reported in bug# 797809
-UPDATE config.org_unit_setting_type SET label = 'Behind Desk Pickup Supported' WHERE name = 'circ.holds.behind_desk_pickup_supported';
-UPDATE config.org_unit_setting_type SET label = 'Canceled holds display age' WHERE name = 'circ.holds.canceled.display_age';
-UPDATE config.org_unit_setting_type SET label = 'Canceled holds display count' WHERE name = 'circ.holds.canceled.display_count';
-UPDATE config.org_unit_setting_type SET label = 'Defines the control number identifier used in 003 and 035 fields.' WHERE name = 'cat.marc_control_number_identifier';
-UPDATE config.org_unit_setting_type SET label = 'Maximum library target attempts' WHERE name = 'circ.holds.max_org_unit_target_loops';
-UPDATE config.org_unit_setting_type SET label = 'Org Unit Target Weight' WHERE name = 'circ.holds.org_unit_target_weight';
-UPDATE config.org_unit_setting_type SET label = 'Patron Merge Address Delete' WHERE name = 'circ.user_merge.delete_addresses';
-UPDATE config.org_unit_setting_type SET label = 'Patron Merge Barcode Delete' WHERE name = 'circ.user_merge.delete_cards';
-UPDATE config.org_unit_setting_type SET label = 'Patron Merge Deactivate Card' WHERE name = 'circ.user_merge.deactivate_cards';
-UPDATE config.org_unit_setting_type SET label = 'Reset request time on un-cancel' WHERE name = 'circ.holds.uncancel.reset_request_time';
-UPDATE config.org_unit_setting_type SET label = 'Use weight-based hold targeting' WHERE name = 'circ.holds.target_holds_by_org_unit_weight';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.holds.behind_desk_pickup_supported', 'Behind Desk Pickup Supported', 'coust', 'label') WHERE name = 'circ.holds.behind_desk_pickup_supported';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.holds.canceled.display_age', 'Canceled holds display age', 'coust', 'label') WHERE name = 'circ.holds.canceled.display_age';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.holds.canceled.display_count', 'Canceled holds display count', 'coust', 'label') WHERE name = 'circ.holds.canceled.display_count';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('cat.marc_control_number_identifier', 'Defines the control number identifier used in 003 and 035 fields.', 'coust', 'label') WHERE name = 'cat.marc_control_number_identifier';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.holds.max_org_unit_target_loops', 'Maximum library target attempts', 'coust', 'label') WHERE name = 'circ.holds.max_org_unit_target_loops';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.holds.org_unit_target_weight', 'Org Unit Target Weight', 'coust', 'label') WHERE name = 'circ.holds.org_unit_target_weight';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.user_merge.delete_addresses','Patron Merge Address Delete', 'coust', 'label') WHERE name = 'circ.user_merge.delete_addresses';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.user_merge.delete_cards','Patron Merge Barcode Delete', 'coust', 'label') WHERE name = 'circ.user_merge.delete_cards';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.user_merge.deactivate_cards','Patron Merge Deactivate Card', 'coust', 'label') WHERE name = 'circ.user_merge.deactivate_cards';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.holds.uncancel.reset_request_time', 'Reset request time on un-cancel','coust', 'label') WHERE name = 'circ.holds.uncancel.reset_request_time';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.holds.target_holds_by_org_unit_weight', 'Use weight-based hold targeting', 'coust', 'label') WHERE name = 'circ.holds.target_holds_by_org_unit_weight';
 
 
 UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('cat.bib.delete_on_no_copy_via_acq_lineitem_cancel','Delete bib if all copies are deleted via Acquisitions lineitem cancellation.', 'coust', 'label') WHERE name = 'cat.bib.delete_on_no_copy_via_acq_lineitem_cancel';

commit 1f625985a72f18f79d638fee580b6aed9da47153
Author: Joseph Lewis <joehms22 at gmail.com>
Date:   Wed Jun 15 11:46:33 2011 -0600

    Got rid of old bug (pre me) that existed when an autowidget was used then
    canceled and the next setting wasn't an autowidget. The autowidget would
    continue to appear because it was never destroyed.
    
    Signed-off-by: Joseph Lewis <joehms22 at gmail.com>
    Signed-off-by: Thomas Berezansky <tsbere at mvlc.org>
    Signed-off-by: Jason Etheridge <jason at esilibrary.com>

diff --git a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
index 9f72069..1559c1c 100644
--- a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
+++ b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
@@ -379,6 +379,12 @@ function osLaunchEditor(name) {
 
     var fmClass = osSettings[name].fm_class;
 
+    if(osEditAutoWidget) {
+        osEditAutoWidget.domNode.parentNode.removeChild(osEditAutoWidget.domNode);
+        osEditAutoWidget.destroy();
+        osEditAutoWidget = null;
+    }
+    
     if(fmClass) {
 
         if(osEditAutoWidget) {

commit f69f755ad51afbdeb6645f150506dc58501a1551
Author: Joseph Lewis <joehms22 at gmail.com>
Date:   Wed Jun 15 11:03:14 2011 -0600

    Changed text in seed values to reflect addition of groups, added an update
    script for groups, fixed org_unit_settings.js so the dojo grid would correctly
    alphabetize with the additon of groups and the removal of groups from the
    labels themselves.
    
    Signed-off-by: Joseph Lewis <joehms22 at gmail.com>
    Signed-off-by: Thomas Berezansky <tsbere at mvlc.org>
    Signed-off-by: Jason Etheridge <jason at esilibrary.com>

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 90f8758..da0bb3c 100644
--- a/Open-ILS/src/sql/Pg/950.data.seed-values.sql
+++ b/Open-ILS/src/sql/Pg/950.data.seed-values.sql
@@ -6172,7 +6172,7 @@ INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
     VALUES (
         'circ.holds.uncancel.reset_request_time',
-        'Holds: Reset request time on un-cancel',
+        'Reset request time on un-cancel',
         'When a hold is uncanceled, reset the request time to push it to the end of the queue',
         'bool'
     );
@@ -8189,7 +8189,7 @@ INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
         'cat.marc_control_number_identifier',
         oils_i18n_gettext(
             'cat.marc_control_number_identifier', 
-            'Cat: Defines the control number identifier used in 003 and 035 fields.', 
+            'Defines the control number identifier used in 003 and 035 fields.', 
             'coust', 
             'label'),
         oils_i18n_gettext(
@@ -8317,7 +8317,7 @@ VALUES (
     'serial.prev_issuance_copy_location',
     oils_i18n_gettext(
         'serial.prev_issuance_copy_location',
-        'Serials: Previous Issuance Copy Location',
+        'Previous Issuance Copy Location',
         'coust',
         'label'
     ),
@@ -8537,7 +8537,7 @@ INSERT INTO config.org_unit_setting_type (name, label, description, datatype)
         )
         ,('cat.spine.line.width',
             oils_i18n_gettext('cat.spine.line.width',
-                'Cataloging: Spine label line width', 'coust', 'label'),
+                'Spine label line width', 'coust', 'label'),
             oils_i18n_gettext('cat.spine.line.width',
                 'Set the default line width for spine labels in number of characters. This specifies the boundary at which lines must be wrapped.',
                 'coust', 'description'),
@@ -8545,7 +8545,7 @@ INSERT INTO config.org_unit_setting_type (name, label, description, datatype)
         )
         ,('cat.spine.line.height',
             oils_i18n_gettext('cat.spine.line.height',
-                'Cataloging: Spine label maximum lines', 'coust', 'label'),
+                'Spine label maximum lines', 'coust', 'label'),
             oils_i18n_gettext('cat.spine.line.height',
                 'Set the default maximum number of lines for spine labels.',
                 'coust', 'description'),
@@ -8553,7 +8553,7 @@ INSERT INTO config.org_unit_setting_type (name, label, description, datatype)
         )
         ,('cat.spine.line.margin',
             oils_i18n_gettext('cat.spine.line.margin',
-                'Cataloging: Spine label left margin', 'coust', 'label'),
+                'Spine label left margin', 'coust', 'label'),
             oils_i18n_gettext('cat.spine.line.margin',
                 'Set the left margin for spine labels in number of characters.',
                 'coust', 'description'),
@@ -8561,7 +8561,7 @@ INSERT INTO config.org_unit_setting_type (name, label, description, datatype)
         )
         ,('cat.label.font.weight',
             oils_i18n_gettext('cat.label.font.weight',
-                'Cataloging: Spine and pocket label font weight', 'coust', 'label'),
+                'Spine and pocket label font weight', 'coust', 'label'),
             oils_i18n_gettext('cat.label.font.weight',
                 'Set the preferred font weight for spine and pocket labels. You can specify "normal", "bold", "bolder", or "lighter".',
                 'coust', 'description'),
@@ -8829,7 +8829,7 @@ INSERT INTO config.org_unit_setting_type (name, label, description, datatype)
     VALUES
         ('circ.holds.recall_threshold',
         oils_i18n_gettext( 'circ.holds.recall_threshold',
-            'Recalls: Circulation duration that triggers a recall.', 'coust', 'label'),
+            'Circulation duration that triggers a recall.', 'coust', 'label'),
         oils_i18n_gettext( 'circ.holds.recall_threshold',
             'Recalls: A hold placed on an item with a circulation duration longer than this will trigger a recall. For example, "14 days" or "3 weeks".', 'coust', 'description'),
         'interval')
@@ -8839,7 +8839,7 @@ INSERT INTO config.org_unit_setting_type (name, label, description, datatype)
     VALUES
         ('circ.holds.recall_return_interval',
         oils_i18n_gettext( 'circ.holds.recall_return_interval',
-            'Recalls: Truncated loan period.', 'coust', 'label'),
+            'Truncated loan period.', 'coust', 'label'),
         oils_i18n_gettext( 'circ.holds.recall_return_interval',
             'Recalls: When a recall is triggered, this defines the adjusted loan period for the item. For example, "4 days" or "1 week".', 'coust', 'description'),
         'interval')
@@ -8849,7 +8849,7 @@ INSERT INTO config.org_unit_setting_type (name, label, description, datatype)
     VALUES
         ('circ.holds.recall_fine_rules',
         oils_i18n_gettext( 'circ.holds.recall_fine_rules',
-            'Recalls: An array of fine amount, fine interval, and maximum fine.', 'coust', 'label'),
+            'An array of fine amount, fine interval, and maximum fine.', 'coust', 'label'),
         oils_i18n_gettext( 'circ.holds.recall_fine_rules',
             'Recalls: An array of fine amount, fine interval, and maximum fine. For example, to specify a new fine rule of $5.00 per day, with a maximum fine of $50.00, use: [5.00,"1 day",50.00]', 'coust', 'description'),
         'array')
diff --git a/Open-ILS/src/sql/Pg/upgrade/9999.data-seed-values-group update.sql b/Open-ILS/src/sql/Pg/upgrade/9999.data-seed-values-group update.sql
new file mode 100644
index 0000000..df23211
--- /dev/null
+++ b/Open-ILS/src/sql/Pg/upgrade/9999.data-seed-values-group update.sql	
@@ -0,0 +1,168 @@
+-- Updates config.org_unit_setting_type to remove the old tag prefixes for once 
+-- groups have been added.
+--
+BEGIN;
+
+INSERT INTO config.upgrade_log (version) VALUES ('9999');
+
+
+-- FIXME these need i18n, along with their descriptions: reported in bug# 797809
+UPDATE config.org_unit_setting_type SET label = 'Behind Desk Pickup Supported' WHERE name = 'circ.holds.behind_desk_pickup_supported';
+UPDATE config.org_unit_setting_type SET label = 'Canceled holds display age' WHERE name = 'circ.holds.canceled.display_age';
+UPDATE config.org_unit_setting_type SET label = 'Canceled holds display count' WHERE name = 'circ.holds.canceled.display_count';
+UPDATE config.org_unit_setting_type SET label = 'Defines the control number identifier used in 003 and 035 fields.' WHERE name = 'cat.marc_control_number_identifier';
+UPDATE config.org_unit_setting_type SET label = 'Maximum library target attempts' WHERE name = 'circ.holds.max_org_unit_target_loops';
+UPDATE config.org_unit_setting_type SET label = 'Org Unit Target Weight' WHERE name = 'circ.holds.org_unit_target_weight';
+UPDATE config.org_unit_setting_type SET label = 'Patron Merge Address Delete' WHERE name = 'circ.user_merge.delete_addresses';
+UPDATE config.org_unit_setting_type SET label = 'Patron Merge Barcode Delete' WHERE name = 'circ.user_merge.delete_cards';
+UPDATE config.org_unit_setting_type SET label = 'Patron Merge Deactivate Card' WHERE name = 'circ.user_merge.deactivate_cards';
+UPDATE config.org_unit_setting_type SET label = 'Reset request time on un-cancel' WHERE name = 'circ.holds.uncancel.reset_request_time';
+UPDATE config.org_unit_setting_type SET label = 'Use weight-based hold targeting' WHERE name = 'circ.holds.target_holds_by_org_unit_weight';
+
+
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('cat.bib.delete_on_no_copy_via_acq_lineitem_cancel','Delete bib if all copies are deleted via Acquisitions lineitem cancellation.', 'coust', 'label') WHERE name = 'cat.bib.delete_on_no_copy_via_acq_lineitem_cancel';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('cat.default_classification_scheme', 'Default Classification Scheme', 'coust', 'label') WHERE name = 'cat.default_classification_scheme';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('cat.default_copy_status_fast', 'Default copy status (fast add)', 'coust', 'label') WHERE name = 'cat.default_copy_status_fast';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('cat.default_copy_status_normal', 'Default copy status (normal)', 'coust', 'label') WHERE name = 'cat.default_copy_status_normal';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('cat.label.font.family','Spine and pocket label font family', 'coust', 'label') WHERE name = 'cat.label.font.family';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('cat.label.font.size','Spine and pocket label font size', 'coust', 'label') WHERE name = 'cat.label.font.size';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('cat.label.font.weight', 'Spine and pocket label font weight', 'coust', 'label') WHERE name = 'cat.label.font.weight';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('cat.spine.line.height', 'Spine label maximum lines', 'coust', 'label') WHERE name = 'cat.spine.line.height';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('cat.spine.line.margin', 'Spine label left margin', 'coust', 'label') WHERE name = 'cat.spine.line.margin';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('cat.spine.line.width', 'Spine label line width', 'coust', 'label') WHERE name = 'cat.spine.line.width';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.auto_hide_patron_summary', 'Toggle off the patron summary sidebar after first view.', 'coust', 'label') WHERE name = 'circ.auto_hide_patron_summary';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.block_renews_for_holds', 'Block Renewal of Items Needed for Holds', 'coust', 'label') WHERE name = 'circ.block_renews_for_holds';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.booking_reservation.default_elbow_room','Booking elbow room','coust','label') WHERE name = 'circ.booking_reservation.default_elbow_room';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.do_not_tally_claims_returned','Do not include outstanding Claims Returned circulations in lump sum tallies in Patron Display.', 'coust', 'label') WHERE name = 'circ.do_not_tally_claims_returned';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.hold_boundary.hard', 'Hard boundary', 'coust', 'label') WHERE name = 'circ.hold_boundary.hard';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.hold_boundary.soft', 'Soft boundary', 'coust', 'label') WHERE name = 'circ.hold_boundary.soft';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.hold_expire_alert_interval', 'Expire Alert Interval', 'coust', 'label') WHERE name = 'circ.hold_expire_alert_interval';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.hold_expire_interval', 'Expire Interval', 'coust', 'label') WHERE name = 'circ.hold_expire_interval';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.holds.clear_shelf.copy_status', 'Clear shelf copy status', 'coust', 'label') WHERE name = 'circ.holds.clear_shelf.copy_status';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext( 'circ.holds.clear_shelf.no_capture_holds','Bypass hold capture during clear shelf process', 'coust', 'label') WHERE name = 'circ.holds.clear_shelf.no_capture_holds';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.holds.default_estimated_wait_interval', 'Default Estimated Wait', 'coust', 'label') WHERE name = 'circ.holds.default_estimated_wait_interval';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.holds.expired_patron_block','Block hold request if hold recipient privileges have expired', 'coust', 'label') WHERE name = 'circ.holds.expired_patron_block';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.holds_fifo', 'FIFO', 'coust', 'label') WHERE name = 'circ.holds_fifo';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.holds.hold_has_copy_at.alert', 'Has Local Copy Alert', 'coust', 'label') WHERE name = 'circ.holds.hold_has_copy_at.alert';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.holds.hold_has_copy_at.block', 'Has Local Copy Block', 'coust', 'label') WHERE name = 'circ.holds.hold_has_copy_at.block';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.holds.min_estimated_wait_interval', 'Minimum Estimated Wait', 'coust', 'label') WHERE name = 'circ.holds.min_estimated_wait_interval';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext( 'circ.holds.recall_fine_rules', 'An array of fine amount, fine interval, and maximum fine.', 'coust', 'label') WHERE name = 'circ.holds.recall_fine_rules';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext( 'circ.holds.recall_return_interval', 'Truncated loan period.', 'coust', 'label') WHERE name = 'circ.holds.recall_return_interval';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext( 'circ.holds.recall_threshold', 'Circulation duration that triggers a recall.', 'coust', 'label') WHERE name = 'circ.holds.recall_threshold';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.hold_stalling_hard', 'Hard stalling interval', 'coust', 'label') WHERE name = 'circ.hold_stalling_hard';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.hold_stalling.soft', 'Soft stalling interval', 'coust', 'label') WHERE name = 'circ.hold_stalling.soft';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.lost_immediately_available', 'Lost items usable on checkin', 'coust', 'label') WHERE name = 'circ.lost_immediately_available';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.max_accept_return_of_lost', 'Void lost max interval', 'coust', 'label') WHERE name = 'circ.max_accept_return_of_lost';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.max_fine.cap_at_price', 'Cap Max Fine at Item Price', 'coust', 'label') WHERE name = 'circ.max_fine.cap_at_price';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.missing_pieces.copy_status','Item Status for Missing Pieces', 'coust', 'label') WHERE name = 'circ.missing_pieces.copy_status';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.password_reset_request_per_user_limit', 'Maximum concurrently active self-serve password reset requests per user', 'coust', 'label') WHERE name = 'circ.password_reset_request_per_user_limit';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.password_reset_request_requires_matching_email','Require matching email address for password reset requests', 'coust', 'label') WHERE name = 'circ.password_reset_request_requires_matching_email';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.password_reset_request_throttle', 'Maximum concurrently active self-serve password reset requests', 'coust', 'label') WHERE name = 'circ.password_reset_request_throttle';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.password_reset_request_time_to_live', 'Self-serve password reset request time-to-live', 'coust', 'label') WHERE name = 'circ.password_reset_request_time_to_live';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.restore_overdue_on_lost_return', 'Restore overdues on lost item return', 'coust', 'label') WHERE name = 'circ.restore_overdue_on_lost_return';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.selfcheck.alert.popup', 'Pop-up alert for errors', 'coust', 'label') WHERE name = 'circ.selfcheck.alert.popup';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.selfcheck.alert.sound', 'Audio Alerts', 'coust', 'label') WHERE name = 'circ.selfcheck.alert.sound';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.selfcheck.block_checkout_on_copy_status','Block copy checkout status', 'coust', 'label') WHERE name = 'circ.selfcheck.block_checkout_on_copy_status';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.selfcheck.patron_login_timeout', 'Patron Login Timeout (in seconds)', 'coust', 'label') WHERE name = 'circ.selfcheck.patron_login_timeout';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.selfcheck.patron_password_required', 'Require Patron Password', 'coust', 'label') WHERE name = 'circ.selfcheck.patron_password_required';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.selfcheck.require_patron_password', 'Require patron password', 'coust', 'label') WHERE name = 'circ.selfcheck.require_patron_password';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.selfcheck.workstation_required', 'Workstation Required', 'coust', 'label') WHERE name = 'circ.selfcheck.workstation_required';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.void_lost_on_checkin', 'Void lost item billing when returned', 'coust', 'label') WHERE name = 'circ.void_lost_on_checkin';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('circ.void_lost_proc_fee_on_checkin', 'Void processing fee on lost item return', 'coust', 'label') WHERE name = 'circ.void_lost_proc_fee_on_checkin';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('credit.processor.authorizenet.enabled', 'Enable AuthorizeNet payments', 'coust', 'label') WHERE name = 'credit.processor.authorizenet.enabled';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('credit.processor.authorizenet.login', 'AuthorizeNet login', 'coust', 'label') WHERE name = 'credit.processor.authorizenet.login';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('credit.processor.authorizenet.password', 'AuthorizeNet password', 'coust', 'label') WHERE name = 'credit.processor.authorizenet.password';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('credit.processor.authorizenet.server', 'AuthorizeNet server', 'coust', 'label') WHERE name = 'credit.processor.authorizenet.server';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('credit.processor.authorizenet.testmode', 'AuthorizeNet test mode', 'coust', 'label') WHERE name = 'credit.processor.authorizenet.testmode';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('credit.processor.default', 'Name default credit processor', 'coust', 'label') WHERE name = 'credit.processor.default';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('credit.processor.payflowpro.enabled', 'Enable PayflowPro payments', 'coust', 'label') WHERE name = 'credit.processor.payflowpro.enabled';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('credit.processor.payflowpro.login', 'PayflowPro login/merchant ID', 'coust', 'label') WHERE name = 'credit.processor.payflowpro.login';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('credit.processor.payflowpro.partner', 'PayflowPro partner', 'coust', 'label') WHERE name = 'credit.processor.payflowpro.partner';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('credit.processor.payflowpro.password', 'PayflowPro password', 'coust', 'label') WHERE name = 'credit.processor.payflowpro.password';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('credit.processor.payflowpro.testmode', 'PayflowPro test mode', 'coust', 'label') WHERE name = 'credit.processor.payflowpro.testmode';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('credit.processor.payflowpro.vendor', 'PayflowPro vendor', 'coust', 'label') WHERE name = 'credit.processor.payflowpro.vendor';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('credit.processor.paypal.enabled', 'Enable PayPal payments', 'coust', 'label') WHERE name = 'credit.processor.paypal.enabled';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('credit.processor.paypal.login', 'PayPal login', 'coust', 'label') WHERE name = 'credit.processor.paypal.login';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('credit.processor.paypal.password', 'PayPal password', 'coust', 'label') WHERE name = 'credit.processor.paypal.password';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('credit.processor.paypal.signature', 'PayPal signature', 'coust', 'label') WHERE name = 'credit.processor.paypal.signature';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('credit.processor.paypal.testmode', 'PayPal test mode', 'coust', 'label') WHERE name = 'credit.processor.paypal.testmode';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext( 'format.date', 'Format Dates with this pattern.', 'coust', 'label') WHERE name = 'format.date';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('format.time','Format Times with this pattern.', 'coust', 'label') WHERE name = 'format.time';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('gui.disable_local_save_columns','Disable the ability to save list column configurations locally.', 'coust', 'label') WHERE name = 'gui.disable_local_save_columns';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('opac.allow_pending_address', 'Allow pending addresses', 'coust', 'label') WHERE name = 'opac.allow_pending_address';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('opac.fully_compressed_serial_holdings', 'Use fully compressed serial holdings', 'coust', 'label') WHERE name = 'opac.fully_compressed_serial_holdings';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('opac.org_unit_hiding.depth','Org Unit Hiding Depth', 'coust', 'label') WHERE name = 'opac.org_unit_hiding.depth';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext( 'org.patron_opt_boundary', 'Patron Opt-In Boundary', 'coust', 'label') WHERE name = 'org.patron_opt_boundary';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext( 'org.patron_opt_default', 'Patron Opt-In Default', 'coust', 'label') WHERE name = 'org.patron_opt_default';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('serial.prev_issuance_copy_location', 'Previous Issuance Copy Location', 'coust', 'label') WHERE name = 'serial.prev_issuance_copy_location';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.admin.patron_log.max_entries', 'Work Log: Maximum Patrons Logged', 'coust', 'label') WHERE name = 'ui.admin.patron_log.max_entries';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.admin.work_log.max_entries', 'Work Log: Maximum Actions Logged', 'coust', 'label') WHERE name = 'ui.admin.work_log.max_entries';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.cat.volume_copy_editor.horizontal','Horizontal layout for Volume/Copy Creator/Editor.','coust', 'label') WHERE name = 'ui.cat.volume_copy_editor.horizontal';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.circ.in_house_use.entry_cap', 'Record In-House Use: Maximum # of uses allowed per entry.', 'coust', 'label') WHERE name = 'ui.circ.in_house_use.entry_cap';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.circ.in_house_use.entry_warn', 'Record In-House Use: # of uses threshold for Are You Sure? dialog.', 'coust', 'label') WHERE name = 'ui.circ.in_house_use.entry_warn';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext( 'ui.circ.suppress_checkin_popups', 'Suppress popup-dialogs during check-in.', 'coust', 'label') WHERE name = 'ui.circ.suppress_checkin_popups';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.general.button_bar', 'Button bar', 'coust', 'label') WHERE name = 'ui.general.button_bar';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.general.hotkeyset', 'Default Hotkeyset', 'coust', 'label') WHERE name = 'ui.general.hotkeyset';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.general.idle_timeout', 'Idle timeout', 'coust', 'label') WHERE name = 'ui.general.idle_timeout';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.default_country','Default Country for New Addresses in Patron Editor', 'coust', 'label') WHERE name = 'ui.patron.default_country';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.default_ident_type','Default Ident Type for Patron Registration', 'coust', 'label') WHERE name = 'ui.patron.default_ident_type';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.aua.county.require', 'Require county field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.aua.county.require';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.active.show', 'Show active field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.active.show';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.active.suggest', 'Suggest active field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.active.suggest';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.alert_message.show', 'Show alert_message field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.alert_message.show';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.alert_message.suggest', 'Suggest alert_message field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.alert_message.suggest';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.alias.show', 'Show alias field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.alias.show';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.alias.suggest', 'Suggest alias field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.alias.suggest';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.aua.post_code.example', 'Example for post_code field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.aua.post_code.example';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.aua.post_code.regex', 'Regex for post_code field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.aua.post_code.regex';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.barred.show', 'Show barred field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.barred.show';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.barred.suggest', 'Suggest barred field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.barred.suggest';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.claims_never_checked_out_count.show', 'Show claims_never_checked_out_count field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.claims_never_checked_out_count.show';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.claims_never_checked_out_count.suggest', 'Suggest claims_never_checked_out_count field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.claims_never_checked_out_count.suggest';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.claims_returned_count.show', 'Show claims_returned_count field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.claims_returned_count.show';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.claims_returned_count.suggest', 'Suggest claims_returned_count field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.claims_returned_count.suggest';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.day_phone.example', 'Example for day_phone field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.day_phone.example';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.day_phone.regex', 'Regex for day_phone field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.day_phone.regex';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.day_phone.require', 'Require day_phone field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.day_phone.require';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.day_phone.show', 'Show day_phone field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.day_phone.show';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.day_phone.suggest', 'Suggest day_phone field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.day_phone.suggest';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.dob.calendar', 'Show calendar widget for dob field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.dob.calendar';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.dob.require', 'Require dob field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.dob.require';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.dob.show', 'Show dob field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.dob.show';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.dob.suggest', 'Suggest dob field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.dob.suggest';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.email.example', 'Example for email field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.email.example';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.email.regex', 'Regex for email field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.email.regex';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.email.require', 'Require email field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.email.require';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.email.show', 'Show email field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.email.show';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.email.suggest', 'Suggest email field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.email.suggest';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.evening_phone.example', 'Example for evening_phone field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.evening_phone.example';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.evening_phone.regex', 'Regex for evening_phone field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.evening_phone.regex';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.evening_phone.require', 'Require evening_phone field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.evening_phone.require';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.evening_phone.show', 'Show evening_phone field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.evening_phone.show';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.evening_phone.suggest', 'Suggest evening_phone field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.evening_phone.suggest';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.ident_value2.show', 'Show ident_value2 field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.ident_value2.show';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.ident_value2.suggest', 'Suggest ident_value2 field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.ident_value2.suggest';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.ident_value.show', 'Show ident_value field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.ident_value.show';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.ident_value.suggest', 'Suggest ident_value field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.ident_value.suggest';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.juvenile.show', 'Show juvenile field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.juvenile.show';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.juvenile.suggest', 'Suggest juvenile field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.juvenile.suggest';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.master_account.show', 'Show master_account field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.master_account.show';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.master_account.suggest', 'Suggest master_account field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.master_account.suggest';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.other_phone.example', 'Example for other_phone field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.other_phone.example';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.other_phone.regex', 'Regex for other_phone field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.other_phone.regex';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.other_phone.require', 'Require other_phone field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.other_phone.require';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.other_phone.show', 'Show other_phone field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.other_phone.show';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.other_phone.suggest', 'Suggest other_phone field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.other_phone.suggest';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.second_given_name.show', 'Show second_given_name field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.second_given_name.show';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.second_given_name.suggest', 'Suggest second_given_name field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.second_given_name.suggest';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.suffix.show', 'Show suffix field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.suffix.show';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.au.suffix.suggest', 'Suggest suffix field on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.au.suffix.suggest';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.default_suggested', 'Default showing suggested patron registration fields', 'coust', 'label') WHERE name = 'ui.patron.edit.default_suggested';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.phone.example', 'Example for phone fields on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.phone.example';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.edit.phone.regex', 'Regex for phone fields on patron registration', 'coust', 'label') WHERE name = 'ui.patron.edit.phone.regex';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.patron.registration.require_address','Require at least one address for Patron Registration', 'coust', 'label') WHERE name = 'ui.patron.registration.require_address';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('ui.staff.require_initials', 'Require staff initials for entry/edit of item/patron/penalty notes/messages.', 'coust', 'label') WHERE name = 'ui.staff.require_initials';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext( 'ui.unified_volume_copy_editor', 'Unified Volume/Item Creator/Editor', 'coust', 'label') WHERE name = 'ui.unified_volume_copy_editor';
+UPDATE config.org_unit_setting_type SET label = oils_i18n_gettext('url.remote_column_settings','URL for remote directory containing list column settings.', 'coust', 'label') WHERE name = 'url.remote_column_settings';
+
+COMMIT;
diff --git a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
index cbfb8c2..9f72069 100644
--- a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
+++ b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
@@ -293,8 +293,8 @@ function osLoadGrid(data) {
         function(a, b) {
             var seta = osSettings[a.name];
             var setb = osSettings[b.name];
-            if(seta.label > setb.label) return 1;
-            if(seta.label < setb.label) return -1;
+            if(seta.grp + "" + seta.label > setb.grp + "" + setb.label) return 1;
+            if(seta.grp + "" + seta.label < setb.grp + "" + setb.label) return -1;
             return 0;
         }
     );

commit 46586b0535e478e94a1685a374b2a5f4c29c9778
Author: Joseph Lewis <joehms22 at gmail.com>
Date:   Wed Jun 15 08:35:45 2011 -0600

    Remove duplicates due to groups in seed-values.sql, and include groups in
    seed-values; delete seed values upgrade patch.
    
    Signed-off-by: Joseph Lewis <joehms22 at gmail.com>
    Signed-off-by: Thomas Berezansky <tsbere at mvlc.org>
    Signed-off-by: Jason Etheridge <jason at esilibrary.com>

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 b77364d..90f8758 100644
--- a/Open-ILS/src/sql/Pg/950.data.seed-values.sql
+++ b/Open-ILS/src/sql/Pg/950.data.seed-values.sql
@@ -2367,12 +2367,12 @@ INSERT into config.org_unit_setting_type
     'string'),
 
 ( 'circ.hold_expire_alert_interval',
-    oils_i18n_gettext('circ.hold_expire_alert_interval', 'Holds: Expire Alert Interval', 'coust', 'label'),
+    oils_i18n_gettext('circ.hold_expire_alert_interval', 'Expire Alert Interval', 'coust', 'label'),
     oils_i18n_gettext('circ.hold_expire_alert_interval', 'Amount of time before a hold expires at which point the patron should be alerted. Examples: "5 days", "1 hour"', 'coust', 'description'),
     'interval'),
 
 ( 'circ.hold_expire_interval',
-    oils_i18n_gettext('circ.hold_expire_interval', 'Holds: Expire Interval', 'coust', 'label'),
+    oils_i18n_gettext('circ.hold_expire_interval', 'Expire Interval', 'coust', 'label'),
     oils_i18n_gettext('circ.hold_expire_interval', 'Amount of time after a hold is placed before the hold expires.  Example "100 days"', 'coust', 'description'),
     'interval'),
 
@@ -2392,22 +2392,22 @@ INSERT into config.org_unit_setting_type
     'bool'),
 
 ( 'circ.hold_stalling.soft',
-    oils_i18n_gettext('circ.hold_stalling.soft', 'Holds: Soft stalling interval', 'coust', 'label'),
+    oils_i18n_gettext('circ.hold_stalling.soft', 'Soft stalling interval', 'coust', 'label'),
     oils_i18n_gettext('circ.hold_stalling.soft', 'How long to wait before allowing remote items to be opportunistically captured for a hold.  Example "5 days"', 'coust', 'description'),
     'interval'),
 
 ( 'circ.hold_stalling_hard',
-    oils_i18n_gettext('circ.hold_stalling_hard', 'Holds: Hard stalling interval', 'coust', 'label'),
+    oils_i18n_gettext('circ.hold_stalling_hard', 'Hard stalling interval', 'coust', 'label'),
     oils_i18n_gettext('circ.hold_stalling_hard', 'Holds: Hard stalling interval', 'coust', 'description'),
     'interval'),
 
 ( 'circ.hold_boundary.hard',
-    oils_i18n_gettext('circ.hold_boundary.hard', 'Holds: Hard boundary', 'coust', 'label'),
+    oils_i18n_gettext('circ.hold_boundary.hard', 'Hard boundary', 'coust', 'label'),
     oils_i18n_gettext('circ.hold_boundary.hard', 'Holds: Hard boundary', 'coust', 'description'),
     'integer'),
 
 ( 'circ.hold_boundary.soft',
-    oils_i18n_gettext('circ.hold_boundary.soft', 'Holds: Soft boundary', 'coust', 'label'),
+    oils_i18n_gettext('circ.hold_boundary.soft', 'Soft boundary', 'coust', 'label'),
     oils_i18n_gettext('circ.hold_boundary.soft', 'Holds: Soft boundary', 'coust', 'description'),
     'integer'),
 
@@ -2432,12 +2432,12 @@ INSERT into config.org_unit_setting_type
     'interval'),
 
 ( 'circ.holds.default_estimated_wait_interval',
-    oils_i18n_gettext('circ.holds.default_estimated_wait_interval', 'Holds: Default Estimated Wait', 'coust', 'label'),
+    oils_i18n_gettext('circ.holds.default_estimated_wait_interval', 'Default Estimated Wait', 'coust', 'label'),
     oils_i18n_gettext('circ.holds.default_estimated_wait_interval', 'When predicting the amount of time a patron will be waiting for a hold to be fulfilled, this is the default estimated length of time to assume an item will be checked out. Examples: "3 weeks", "7 days"', 'coust', 'description'),
     'interval'),
 
 ( 'circ.holds.min_estimated_wait_interval',
-    oils_i18n_gettext('circ.holds.min_estimated_wait_interval', 'Holds: Minimum Estimated Wait', 'coust', 'label'),
+    oils_i18n_gettext('circ.holds.min_estimated_wait_interval', 'Minimum Estimated Wait', 'coust', 'label'),
     oils_i18n_gettext('circ.holds.min_estimated_wait_interval', 'When predicting the amount of time a patron will be waiting for a hold to be fulfilled, this is the minimum estimated length of time to assume an item will be checked out. Examples: "2 weeks", "5 days"', 'coust', 'description'),
     'interval'),
 
@@ -2447,17 +2447,17 @@ INSERT into config.org_unit_setting_type
     'bool'),
 
 ( 'circ.selfcheck.patron_login_timeout',
-    oils_i18n_gettext('circ.selfcheck.patron_login_timeout', 'Selfcheck: Patron Login Timeout (in seconds)', 'coust', 'label'),
+    oils_i18n_gettext('circ.selfcheck.patron_login_timeout', 'Patron Login Timeout (in seconds)', 'coust', 'label'),
     oils_i18n_gettext('circ.selfcheck.patron_login_timeout', 'Number of seconds of inactivity before the patron is logged out of the selfcheck interface', 'coust', 'description'),
     'integer'),
 
 ( 'circ.selfcheck.alert.popup',
-    oils_i18n_gettext('circ.selfcheck.alert.popup', 'Selfcheck: Pop-up alert for errors', 'coust', 'label'),
+    oils_i18n_gettext('circ.selfcheck.alert.popup', 'Pop-up alert for errors', 'coust', 'label'),
     oils_i18n_gettext('circ.selfcheck.alert.popup', 'If true, checkout/renewal errors will cause a pop-up window in addition to the on-screen message', 'coust', 'description'),
     'bool'),
 
 ( 'circ.selfcheck.require_patron_password',
-    oils_i18n_gettext('circ.selfcheck.require_patron_password', 'Selfcheck: Require patron password', 'coust', 'label'),
+    oils_i18n_gettext('circ.selfcheck.require_patron_password', 'Require patron password', 'coust', 'label'),
     oils_i18n_gettext('circ.selfcheck.require_patron_password', 'If true, patrons will be required to enter their password in addition to their username/barcode to log into the selfcheck interface', 'coust', 'description'),
     'bool'),
 
@@ -2497,37 +2497,37 @@ INSERT into config.org_unit_setting_type
     'currency'),
 
 ( 'circ.void_lost_on_checkin',
-    oils_i18n_gettext('circ.void_lost_on_checkin', 'Circ: Void lost item billing when returned', 'coust', 'label'),
+    oils_i18n_gettext('circ.void_lost_on_checkin', 'Void lost item billing when returned', 'coust', 'label'),
     oils_i18n_gettext('circ.void_lost_on_checkin', 'Void lost item billing when returned', 'coust', 'description'),
     'bool'),
 
 ( 'circ.max_accept_return_of_lost',
-    oils_i18n_gettext('circ.max_accept_return_of_lost', 'Circ: Void lost max interval', 'coust', 'label'),
+    oils_i18n_gettext('circ.max_accept_return_of_lost', 'Void lost max interval', 'coust', 'label'),
     oils_i18n_gettext('circ.max_accept_return_of_lost', 'Items that have been lost this long will not result in voided billings when returned.  E.g. ''6 months''', 'coust', 'description'),
     'interval'),
 
 ( 'circ.void_lost_proc_fee_on_checkin',
-    oils_i18n_gettext('circ.void_lost_proc_fee_on_checkin', 'Circ: Void processing fee on lost item return', 'coust', 'label'),
+    oils_i18n_gettext('circ.void_lost_proc_fee_on_checkin', 'Void processing fee on lost item return', 'coust', 'label'),
     oils_i18n_gettext('circ.void_lost_proc_fee_on_checkin', 'Void processing fee when lost item returned', 'coust', 'description'),
     'bool'),
 
 ( 'circ.restore_overdue_on_lost_return',
-    oils_i18n_gettext('circ.restore_overdue_on_lost_return', 'Circ: Restore overdues on lost item return', 'coust', 'label'),
+    oils_i18n_gettext('circ.restore_overdue_on_lost_return', 'Restore overdues on lost item return', 'coust', 'label'),
     oils_i18n_gettext('circ.restore_overdue_on_lost_return', 'Restore overdue fines on lost item return', 'coust', 'description'),
     'bool'),
 
 ( 'circ.lost_immediately_available',
-    oils_i18n_gettext('circ.lost_immediately_available', 'Circ: Lost items usable on checkin', 'coust', 'label'),
+    oils_i18n_gettext('circ.lost_immediately_available', 'Lost items usable on checkin', 'coust', 'label'),
     oils_i18n_gettext('circ.lost_immediately_available', 'Lost items are usable on checkin instead of going ''home'' first', 'coust', 'description'),
     'bool'),
 
 ( 'circ.holds_fifo',
-    oils_i18n_gettext('circ.holds_fifo', 'Holds: FIFO', 'coust', 'label'),
+    oils_i18n_gettext('circ.holds_fifo', 'FIFO', 'coust', 'label'),
     oils_i18n_gettext('circ.holds_fifo', 'Force holds to a more strict First-In, First-Out capture', 'coust', 'description'),
     'bool'),
 
 ( 'opac.allow_pending_address',
-    oils_i18n_gettext('opac.allow_pending_address', 'OPAC: Allow pending addresses', 'coust', 'label'),
+    oils_i18n_gettext('opac.allow_pending_address', 'Allow pending addresses', 'coust', 'label'),
     oils_i18n_gettext('opac.allow_pending_address', 'If enabled, patrons can create and edit existing addresses.  Addresses are kept in a pending state until staff approves the changes', 'coust', 'description'),
     'bool'),
 
@@ -2537,17 +2537,17 @@ INSERT into config.org_unit_setting_type
     'bool'),
 
 ( 'ui.general.idle_timeout',
-    oils_i18n_gettext('ui.general.idle_timeout', 'GUI: Idle timeout', 'coust', 'label'),
+    oils_i18n_gettext('ui.general.idle_timeout', 'Idle timeout', 'coust', 'label'),
     oils_i18n_gettext('ui.general.idle_timeout', 'If you want staff client windows to be minimized after a certain amount of system idle time, set this to the number of seconds of idle time that you want to allow before minimizing (requires staff client restart).', 'coust', 'description'),
     'integer'),
 
 ( 'ui.circ.in_house_use.entry_cap',
-    oils_i18n_gettext('ui.circ.in_house_use.entry_cap', 'GUI: Record In-House Use: Maximum # of uses allowed per entry.', 'coust', 'label'),
+    oils_i18n_gettext('ui.circ.in_house_use.entry_cap', 'Record In-House Use: Maximum # of uses allowed per entry.', 'coust', 'label'),
     oils_i18n_gettext('ui.circ.in_house_use.entry_cap', 'The # of uses entry in the Record In-House Use interface may not exceed the value of this setting.', 'coust', 'description'),
     'integer'),
 
 ( 'ui.circ.in_house_use.entry_warn',
-    oils_i18n_gettext('ui.circ.in_house_use.entry_warn', 'GUI: Record In-House Use: # of uses threshold for Are You Sure? dialog.', 'coust', 'label'),
+    oils_i18n_gettext('ui.circ.in_house_use.entry_warn', 'Record In-House Use: # of uses threshold for Are You Sure? dialog.', 'coust', 'label'),
     oils_i18n_gettext('ui.circ.in_house_use.entry_warn', 'In the Record In-House Use interface, a submission attempt will warn if the # of uses field exceeds the value of this setting.', 'coust', 'description'),
     'integer'),
 
@@ -2572,17 +2572,17 @@ INSERT into config.org_unit_setting_type
     'bool'),
 
 ( 'ui.staff.require_initials',
-  oils_i18n_gettext('ui.staff.require_initials', 'GUI: Require staff initials for entry/edit of item/patron/penalty notes/messages.', 'coust', 'label'),
+  oils_i18n_gettext('ui.staff.require_initials', 'Require staff initials for entry/edit of item/patron/penalty notes/messages.', 'coust', 'label'),
   oils_i18n_gettext('ui.staff.require_initials', 'Appends staff initials and edit date into note content.', 'coust', 'description'),
     'bool'),
 
 ( 'ui.general.button_bar',
-    oils_i18n_gettext('ui.general.button_bar', 'GUI: Button bar', 'coust', 'label'),
+    oils_i18n_gettext('ui.general.button_bar', 'Button bar', 'coust', 'label'),
     oils_i18n_gettext('ui.general.button_bar', 'Set to "circ" or "cat" for stock circulator or cataloger toolbar, respectively.', 'coust', 'description'),
     'string'),
 
 ( 'ui.general.hotkeyset',
-    oils_i18n_gettext('ui.general.hotkeyset', 'GUI: Default Hotkeyset', 'coust', 'label'),
+    oils_i18n_gettext('ui.general.hotkeyset', 'Default Hotkeyset', 'coust', 'label'),
     oils_i18n_gettext('ui.general.hotkeyset', 'Default Hotkeyset for clients (filename without the .keyset).  Examples: Default, Minimal, and None', 'coust', 'description'),
     'string'),
 
@@ -2637,92 +2637,92 @@ INSERT into config.org_unit_setting_type
     'bool'),
 
 ( 'circ.auto_hide_patron_summary',
-    oils_i18n_gettext('circ.auto_hide_patron_summary', 'GUI: Toggle off the patron summary sidebar after first view.', 'coust', 'label'),
+    oils_i18n_gettext('circ.auto_hide_patron_summary', 'Toggle off the patron summary sidebar after first view.', 'coust', 'label'),
     oils_i18n_gettext('circ.auto_hide_patron_summary', 'When true, the patron summary sidebar will collapse after a new patron sub-interface is selected.', 'coust', 'description'),
     'bool'),
 
 ( 'credit.processor.default',
-    oils_i18n_gettext('credit.processor.default', 'Credit card processing: Name default credit processor', 'coust', 'label'),
+    oils_i18n_gettext('credit.processor.default', 'Name default credit processor', 'coust', 'label'),
     oils_i18n_gettext('credit.processor.default', 'This might be "AuthorizeNet", "PayPal", etc.', 'coust', 'description'),
     'string'),
 
 ( 'credit.processor.authorizenet.enabled',
-    oils_i18n_gettext('credit.processor.authorizenet.enabled', 'Credit card processing: Enable AuthorizeNet payments', 'coust', 'label'),
+    oils_i18n_gettext('credit.processor.authorizenet.enabled', 'Enable AuthorizeNet payments', 'coust', 'label'),
     oils_i18n_gettext('credit.processor.authorizenet.enabled', 'Enable AuthorizeNet payments', 'coust', 'description'),
     'bool'),
 
 ( 'credit.processor.authorizenet.login',
-    oils_i18n_gettext('credit.processor.authorizenet.login', 'Credit card processing: AuthorizeNet login', 'coust', 'label'),
+    oils_i18n_gettext('credit.processor.authorizenet.login', 'AuthorizeNet login', 'coust', 'label'),
     oils_i18n_gettext('credit.processor.authorizenet.login', 'AuthorizeNet login', 'coust', 'description'),
     'string'),
 
 ( 'credit.processor.authorizenet.password',
-    oils_i18n_gettext('credit.processor.authorizenet.password', 'Credit card processing: AuthorizeNet password', 'coust', 'label'),
+    oils_i18n_gettext('credit.processor.authorizenet.password', 'AuthorizeNet password', 'coust', 'label'),
     oils_i18n_gettext('credit.processor.authorizenet.password', 'AuthorizeNet password', 'coust', 'description'),
     'string'),
 
 ( 'credit.processor.authorizenet.server',
-    oils_i18n_gettext('credit.processor.authorizenet.server', 'Credit card processing: AuthorizeNet server', 'coust', 'label'),
+    oils_i18n_gettext('credit.processor.authorizenet.server', 'AuthorizeNet server', 'coust', 'label'),
     oils_i18n_gettext('credit.processor.authorizenet.server', 'Required if using a developer/test account with AuthorizeNet', 'coust', 'description'),
     'string'),
 
 ( 'credit.processor.authorizenet.testmode',
-    oils_i18n_gettext('credit.processor.authorizenet.testmode', 'Credit card processing: AuthorizeNet test mode', 'coust', 'label'),
+    oils_i18n_gettext('credit.processor.authorizenet.testmode', 'AuthorizeNet test mode', 'coust', 'label'),
     oils_i18n_gettext('credit.processor.authorizenet.testmode', 'AuthorizeNet test mode', 'coust', 'description'),
     'bool'),
 
 ( 'credit.processor.paypal.enabled',
-    oils_i18n_gettext('credit.processor.paypal.enabled', 'Credit card processing: Enable PayPal payments', 'coust', 'label'),
+    oils_i18n_gettext('credit.processor.paypal.enabled', 'Enable PayPal payments', 'coust', 'label'),
     oils_i18n_gettext('credit.processor.paypal.enabled', 'Enable PayPal payments', 'coust', 'description'),
     'bool'),
 ( 'credit.processor.paypal.login',
-    oils_i18n_gettext('credit.processor.paypal.login', 'Credit card processing: PayPal login', 'coust', 'label'),
+    oils_i18n_gettext('credit.processor.paypal.login', 'PayPal login', 'coust', 'label'),
     oils_i18n_gettext('credit.processor.paypal.login', 'PayPal login', 'coust', 'description'),
     'string'),
 ( 'credit.processor.paypal.password',
-    oils_i18n_gettext('credit.processor.paypal.password', 'Credit card processing: PayPal password', 'coust', 'label'),
+    oils_i18n_gettext('credit.processor.paypal.password', 'PayPal password', 'coust', 'label'),
     oils_i18n_gettext('credit.processor.paypal.password', 'PayPal password', 'coust', 'description'),
     'string'),
 ( 'credit.processor.paypal.signature',
-    oils_i18n_gettext('credit.processor.paypal.signature', 'Credit card processing: PayPal signature', 'coust', 'label'),
+    oils_i18n_gettext('credit.processor.paypal.signature', 'PayPal signature', 'coust', 'label'),
     oils_i18n_gettext('credit.processor.paypal.signature', 'PayPal signature', 'coust', 'description'),
     'string'),
 ( 'credit.processor.paypal.testmode',
-    oils_i18n_gettext('credit.processor.paypal.testmode', 'Credit card processing: PayPal test mode', 'coust', 'label'),
+    oils_i18n_gettext('credit.processor.paypal.testmode', 'PayPal test mode', 'coust', 'label'),
     oils_i18n_gettext('credit.processor.paypal.testmode', 'PayPal test mode', 'coust', 'description'),
     'bool'),
 ( 'credit.processor.payflowpro.enabled',
-    oils_i18n_gettext('credit.processor.payflowpro.enabled', 'Credit card processing: Enable PayflowPro payments', 'coust', 'label'),
+    oils_i18n_gettext('credit.processor.payflowpro.enabled', 'Enable PayflowPro payments', 'coust', 'label'),
     oils_i18n_gettext('credit.processor.payflowpro.enabled', 'This is NOT the same thing as the settings labeled with just "PayPal."', 'coust', 'description'),
     'bool'),
 ( 'credit.processor.payflowpro.login',
-    oils_i18n_gettext('credit.processor.payflowpro.login', 'Credit card processing: PayflowPro login/merchant ID', 'coust', 'label'),
+    oils_i18n_gettext('credit.processor.payflowpro.login', 'PayflowPro login/merchant ID', 'coust', 'label'),
     oils_i18n_gettext('credit.processor.payflowpro.login', 'Often the same thing as the PayPal manager login', 'coust', 'description'),
     'string'),
 ( 'credit.processor.payflowpro.password',
-    oils_i18n_gettext('credit.processor.payflowpro.password', 'Credit card processing: PayflowPro password', 'coust', 'label'),
+    oils_i18n_gettext('credit.processor.payflowpro.password', 'PayflowPro password', 'coust', 'label'),
     oils_i18n_gettext('credit.processor.payflowpro.password', 'PayflowPro password', 'coust', 'description'),
     'string'),
 ( 'credit.processor.payflowpro.testmode',
-    oils_i18n_gettext('credit.processor.payflowpro.testmode', 'Credit card processing: PayflowPro test mode', 'coust', 'label'),
+    oils_i18n_gettext('credit.processor.payflowpro.testmode', 'PayflowPro test mode', 'coust', 'label'),
     oils_i18n_gettext('credit.processor.payflowpro.testmode', 'Do not really process transactions, but stay in test mode - uses pilot-payflowpro.paypal.com instead of the usual host', 'coust', 'description'),
     'bool'),
 ( 'credit.processor.payflowpro.vendor',
-    oils_i18n_gettext('credit.processor.payflowpro.vendor', 'Credit card processing: PayflowPro vendor', 'coust', 'label'),
+    oils_i18n_gettext('credit.processor.payflowpro.vendor', 'PayflowPro vendor', 'coust', 'label'),
     oils_i18n_gettext('credit.processor.payflowpro.vendor', 'Often the same thing as the login', 'coust', 'description'),
     'string'),
 ( 'credit.processor.payflowpro.partner',
-    oils_i18n_gettext('credit.processor.payflowpro.partner', 'Credit card processing: PayflowPro partner', 'coust', 'label'),
+    oils_i18n_gettext('credit.processor.payflowpro.partner', 'PayflowPro partner', 'coust', 'label'),
     oils_i18n_gettext('credit.processor.payflowpro.partner', 'Often "PayPal" or "VeriSign", sometimes others', 'coust', 'description'),
     'string'),
 
 ( 'ui.admin.work_log.max_entries',
-    oils_i18n_gettext('ui.admin.work_log.max_entries', 'GUI: Work Log: Maximum Actions Logged', 'coust', 'label'),
+    oils_i18n_gettext('ui.admin.work_log.max_entries', 'Work Log: Maximum Actions Logged', 'coust', 'label'),
     oils_i18n_gettext('ui.admin.work_log.max_entries', 'Maximum entries for "Most Recent Staff Actions" section of the Work Log interface.', 'coust', 'description'),
     'interval'),
 
 ( 'ui.admin.patron_log.max_entries',
-    oils_i18n_gettext('ui.admin.patron_log.max_entries', 'GUI: Work Log: Maximum Patrons Logged', 'coust', 'label'),
+    oils_i18n_gettext('ui.admin.patron_log.max_entries', 'Work Log: Maximum Patrons Logged', 'coust', 'label'),
     oils_i18n_gettext('ui.admin.patron_log.max_entries', 'Maximum entries for "Most Recently Affected Patrons..." section of the Work Log interface.', 'coust', 'description'),
     'interval'),
 
@@ -2732,37 +2732,37 @@ INSERT into config.org_unit_setting_type
     'string'),
 
 ( 'circ.block_renews_for_holds',
-    oils_i18n_gettext('circ.block_renews_for_holds', 'Holds: Block Renewal of Items Needed for Holds', 'coust', 'label'),
+    oils_i18n_gettext('circ.block_renews_for_holds', 'Block Renewal of Items Needed for Holds', 'coust', 'label'),
     oils_i18n_gettext('circ.block_renews_for_holds', 'When an item could fulfill a hold, do not allow the current patron to renew', 'coust', 'description'),
     'bool'),
 
 ( 'circ.password_reset_request_per_user_limit',
-    oils_i18n_gettext('circ.password_reset_request_per_user_limit', 'Circulation: Maximum concurrently active self-serve password reset requests per user', 'coust', 'label'),
+    oils_i18n_gettext('circ.password_reset_request_per_user_limit', 'Maximum concurrently active self-serve password reset requests per user', 'coust', 'label'),
     oils_i18n_gettext('circ.password_reset_request_per_user_limit', 'When a user has more than this number of concurrently active self-serve password reset requests for their account, prevent the user from creating any new self-serve password reset requests until the number of active requests for the user drops back below this number.', 'coust', 'description'),
     'string'),
 
 ( 'circ.password_reset_request_time_to_live',
-    oils_i18n_gettext('circ.password_reset_request_time_to_live', 'Circulation: Self-serve password reset request time-to-live', 'coust', 'label'),
+    oils_i18n_gettext('circ.password_reset_request_time_to_live', 'Self-serve password reset request time-to-live', 'coust', 'label'),
     oils_i18n_gettext('circ.password_reset_request_time_to_live', 'Length of time (in seconds) a self-serve password reset request should remain active.', 'coust', 'description'),
     'string'),
 
 ( 'circ.password_reset_request_throttle',
-    oils_i18n_gettext('circ.password_reset_request_throttle', 'Circulation: Maximum concurrently active self-serve password reset requests', 'coust', 'label'),
+    oils_i18n_gettext('circ.password_reset_request_throttle', 'Maximum concurrently active self-serve password reset requests', 'coust', 'label'),
     oils_i18n_gettext('circ.password_reset_request_throttle', 'Prevent the creation of new self-serve password reset requests until the number of active requests drops back below this number.', 'coust', 'description'),
     'string'),
 
 ( 'opac.fully_compressed_serial_holdings',
-    oils_i18n_gettext('opac.fully_compressed_serial_holdings', 'OPAC: Use fully compressed serial holdings', 'coust', 'label'),
+    oils_i18n_gettext('opac.fully_compressed_serial_holdings', 'Use fully compressed serial holdings', 'coust', 'label'),
     oils_i18n_gettext('opac.fully_compressed_serial_holdings', 'Show fully compressed serial holdings for all libraries at and below the current context unit', 'coust', 'description'),
     'bool'),
 
 ( 'org.patron_opt_boundary',
-    oils_i18n_gettext( 'org.patron_opt_boundary', 'Circ: Patron Opt-In Boundary', 'coust', 'label'),
+    oils_i18n_gettext( 'org.patron_opt_boundary', 'Patron Opt-In Boundary', 'coust', 'label'),
     oils_i18n_gettext( 'org.patron_opt_boundary', 'This determines at which depth above which patrons must be opted in, and below which patrons will be assumed to be opted in.', 'coust', 'label'),
     'integer'),
 
 ( 'org.patron_opt_default',
-    oils_i18n_gettext( 'org.patron_opt_default', 'Circ: Patron Opt-In Default', 'coust', 'label'),
+    oils_i18n_gettext( 'org.patron_opt_default', 'Patron Opt-In Default', 'coust', 'label'),
     oils_i18n_gettext( 'org.patron_opt_default', 'This is the default depth at which a patron is opted in; it is calculated as an org unit relative to the current workstation.', 'coust', 'label'),
     'integer'),
 
@@ -2962,12 +2962,12 @@ INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
         'ui.circ.suppress_checkin_popups',
         oils_i18n_gettext(
             'ui.circ.suppress_checkin_popups', 
-            'Circ: Suppress popup-dialogs during check-in.', 
+            'Suppress popup-dialogs during check-in.', 
             'coust', 
             'label'),
         oils_i18n_gettext(
             'ui.circ.suppress_checkin_popups', 
-            'Circ: Suppress popup-dialogs during check-in.', 
+            'Suppress popup-dialogs during check-in.', 
             'coust', 
             'description'),
         'bool'
@@ -2978,12 +2978,12 @@ INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
         'format.date',
         oils_i18n_gettext(
             'format.date',
-            'GUI: Format Dates with this pattern.', 
+            'Format Dates with this pattern.', 
             'coust', 
             'label'),
         oils_i18n_gettext(
             'format.date',
-            'GUI: Format Dates with this pattern (examples: "yyyy-MM-dd" for "2010-04-26", "MMM d, yyyy" for "Apr 26, 2010")', 
+            'Format Dates with this pattern (examples: "yyyy-MM-dd" for "2010-04-26", "MMM d, yyyy" for "Apr 26, 2010")', 
             'coust', 
             'description'),
         'string'
@@ -2991,12 +2991,12 @@ INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
         'format.time',
         oils_i18n_gettext(
             'format.time',
-            'GUI: Format Times with this pattern.', 
+            'Format Times with this pattern.', 
             'coust', 
             'label'),
         oils_i18n_gettext(
             'format.time',
-            'GUI: Format Times with this pattern (examples: "h:m:s.SSS a z" for "2:07:20.666 PM Eastern Daylight Time", "HH:mm" for "14:07")', 
+            'Format Times with this pattern (examples: "h:m:s.SSS a z" for "2:07:20.666 PM Eastern Daylight Time", "HH:mm" for "14:07")', 
             'coust', 
             'description'),
         'string'
@@ -3007,12 +3007,12 @@ INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
         'cat.bib.delete_on_no_copy_via_acq_lineitem_cancel',
         oils_i18n_gettext(
             'cat.bib.delete_on_no_copy_via_acq_lineitem_cancel',
-            'CAT: Delete bib if all copies are deleted via Acquisitions lineitem cancellation.', 
+            'Delete bib if all copies are deleted via Acquisitions lineitem cancellation.', 
             'coust', 
             'label'),
         oils_i18n_gettext(
             'cat.bib.delete_on_no_copy_via_acq_lineitem_cancel',
-            'CAT: Delete bib if all copies are deleted via Acquisitions lineitem cancellation.', 
+            'Delete bib if all copies are deleted via Acquisitions lineitem cancellation.', 
             'coust', 
             'description'),
         'bool'
@@ -3023,12 +3023,12 @@ INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
         'url.remote_column_settings',
         oils_i18n_gettext(
             'url.remote_column_settings',
-            'GUI: URL for remote directory containing list column settings.', 
+            'URL for remote directory containing list column settings.', 
             'coust', 
             'label'),
         oils_i18n_gettext(
             'url.remote_column_settings',
-            'GUI: URL for remote directory containing list column settings.  The format and naming convention for the files found in this directory match those in the local settings directory for a given workstation.  An administrator could create the desired settings locally and then copy all the tree_columns_for_* files to the remote directory.', 
+            'URL for remote directory containing list column settings.  The format and naming convention for the files found in this directory match those in the local settings directory for a given workstation.  An administrator could create the desired settings locally and then copy all the tree_columns_for_* files to the remote directory.', 
             'coust', 
             'description'),
         'string'
@@ -3037,12 +3037,12 @@ INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
         'gui.disable_local_save_columns',
         oils_i18n_gettext(
             'gui.disable_local_save_columns',
-            'GUI: Disable the ability to save list column configurations locally.', 
+            'Disable the ability to save list column configurations locally.', 
             'coust', 
             'label'),
         oils_i18n_gettext(
             'gui.disable_local_save_columns',
-            'GUI: Disable the ability to save list column configurations locally.  If set, columns may still be manipulated, however, the changes do not persist.  Also, existing local configurations are ignored if this setting is true.', 
+            'Disable the ability to save list column configurations locally.  If set, columns may still be manipulated, however, the changes do not persist.  Also, existing local configurations are ignored if this setting is true.', 
             'coust', 
             'description'),
         'bool'
@@ -3053,12 +3053,12 @@ INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
         'circ.password_reset_request_requires_matching_email',
         oils_i18n_gettext(
             'circ.password_reset_request_requires_matching_email',
-            'Circulation: Require matching email address for password reset requests', 
+            'Require matching email address for password reset requests', 
             'coust', 
             'label'),
         oils_i18n_gettext(
             'circ.password_reset_request_requires_matching_email',
-            'Circulation: Require matching email address for password reset requests', 
+            'Require matching email address for password reset requests', 
             'coust', 
             'description'),
         'bool'
@@ -3069,12 +3069,12 @@ INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
         'circ.holds.expired_patron_block',
         oils_i18n_gettext(
             'circ.holds.expired_patron_block',
-            'Circulation: Block hold request if hold recipient privileges have expired', 
+            'Block hold request if hold recipient privileges have expired', 
             'coust', 
             'label'),
         oils_i18n_gettext(
             'circ.holds.expired_patron_block',
-            'Circulation: Block hold request if hold recipient privileges have expired', 
+            'Block hold request if hold recipient privileges have expired', 
             'coust', 
             'description'),
         'bool'
@@ -3086,7 +3086,7 @@ INSERT INTO config.org_unit_setting_type
         'circ.booking_reservation.default_elbow_room',
         oils_i18n_gettext(
             'circ.booking_reservation.default_elbow_room',
-            'Booking: Elbow room',
+            'Booking elbow room',
             'coust',
             'label'
         ),
@@ -3104,219 +3104,219 @@ INSERT into config.org_unit_setting_type
 ( name, label, description, datatype ) VALUES
 
 ( 'ui.patron.edit.au.active.show',
-    oils_i18n_gettext('ui.patron.edit.au.active.show', 'GUI: Show active field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.active.show', 'Show active field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.active.show', 'The active field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.active.suggest',
-    oils_i18n_gettext('ui.patron.edit.au.active.suggest', 'GUI: Suggest active field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.active.suggest', 'Suggest active field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.active.suggest', 'The active field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.alert_message.show',
-    oils_i18n_gettext('ui.patron.edit.au.alert_message.show', 'GUI: Show alert_message field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.alert_message.show', 'Show alert_message field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.alert_message.show', 'The alert_message field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.alert_message.suggest',
-    oils_i18n_gettext('ui.patron.edit.au.alert_message.suggest', 'GUI: Suggest alert_message field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.alert_message.suggest', 'Suggest alert_message field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.alert_message.suggest', 'The alert_message field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.alias.show',
-    oils_i18n_gettext('ui.patron.edit.au.alias.show', 'GUI: Show alias field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.alias.show', 'Show alias field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.alias.show', 'The alias field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.alias.suggest',
-    oils_i18n_gettext('ui.patron.edit.au.alias.suggest', 'GUI: Suggest alias field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.alias.suggest', 'Suggest alias field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.alias.suggest', 'The alias field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.barred.show',
-    oils_i18n_gettext('ui.patron.edit.au.barred.show', 'GUI: Show barred field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.barred.show', 'Show barred field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.barred.show', 'The barred field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.barred.suggest',
-    oils_i18n_gettext('ui.patron.edit.au.barred.suggest', 'GUI: Suggest barred field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.barred.suggest', 'Suggest barred field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.barred.suggest', 'The barred field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.claims_never_checked_out_count.show',
-    oils_i18n_gettext('ui.patron.edit.au.claims_never_checked_out_count.show', 'GUI: Show claims_never_checked_out_count field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.claims_never_checked_out_count.show', 'Show claims_never_checked_out_count field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.claims_never_checked_out_count.show', 'The claims_never_checked_out_count field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.claims_never_checked_out_count.suggest',
-    oils_i18n_gettext('ui.patron.edit.au.claims_never_checked_out_count.suggest', 'GUI: Suggest claims_never_checked_out_count field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.claims_never_checked_out_count.suggest', 'Suggest claims_never_checked_out_count field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.claims_never_checked_out_count.suggest', 'The claims_never_checked_out_count field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.claims_returned_count.show',
-    oils_i18n_gettext('ui.patron.edit.au.claims_returned_count.show', 'GUI: Show claims_returned_count field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.claims_returned_count.show', 'Show claims_returned_count field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.claims_returned_count.show', 'The claims_returned_count field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.claims_returned_count.suggest',
-    oils_i18n_gettext('ui.patron.edit.au.claims_returned_count.suggest', 'GUI: Suggest claims_returned_count field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.claims_returned_count.suggest', 'Suggest claims_returned_count field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.claims_returned_count.suggest', 'The claims_returned_count field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.day_phone.example',
-    oils_i18n_gettext('ui.patron.edit.au.day_phone.example', 'GUI: Example for day_phone field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.day_phone.example', 'Example for day_phone field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.day_phone.example', 'The Example for validation on the day_phone field in patron registration.', 'coust', 'description'),
     'string'),
 ( 'ui.patron.edit.au.day_phone.regex',
-    oils_i18n_gettext('ui.patron.edit.au.day_phone.regex', 'GUI: Regex for day_phone field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.day_phone.regex', 'Regex for day_phone field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.day_phone.regex', E'The Regular Expression for validation on the day_phone field in patron registration. Note: The first capture group will be used for the "last 4 digits of phone number" feature, if enabled. Ex: "[2-9]\\d{2}-\\d{3}-(\\d{4})( x\\d+)?" will ignore the extension on a NANP number.', 'coust', 'description'),
     'string'),
 ( 'ui.patron.edit.au.day_phone.require',
-    oils_i18n_gettext('ui.patron.edit.au.day_phone.require', 'GUI: Require day_phone field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.day_phone.require', 'Require day_phone field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.day_phone.require', 'The day_phone field will be required on the patron registration screen.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.day_phone.show',
-    oils_i18n_gettext('ui.patron.edit.au.day_phone.show', 'GUI: Show day_phone field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.day_phone.show', 'Show day_phone field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.day_phone.show', 'The day_phone field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.day_phone.suggest',
-    oils_i18n_gettext('ui.patron.edit.au.day_phone.suggest', 'GUI: Suggest day_phone field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.day_phone.suggest', 'Suggest day_phone field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.day_phone.suggest', 'The day_phone field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.dob.calendar',
-    oils_i18n_gettext('ui.patron.edit.au.dob.calendar', 'GUI: Show calendar widget for dob field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.dob.calendar', 'Show calendar widget for dob field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.dob.calendar', 'If set the calendar widget will appear when editing the dob field on the patron registration form.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.dob.require',
-    oils_i18n_gettext('ui.patron.edit.au.dob.require', 'GUI: Require dob field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.dob.require', 'Require dob field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.dob.require', 'The dob field will be required on the patron registration screen.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.dob.show',
-    oils_i18n_gettext('ui.patron.edit.au.dob.show', 'GUI: Show dob field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.dob.show', 'Show dob field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.dob.show', 'The dob field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.dob.suggest',
-    oils_i18n_gettext('ui.patron.edit.au.dob.suggest', 'GUI: Suggest dob field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.dob.suggest', 'Suggest dob field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.dob.suggest', 'The dob field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.email.example',
-    oils_i18n_gettext('ui.patron.edit.au.email.example', 'GUI: Example for email field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.email.example', 'Example for email field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.email.example', 'The Example for validation on the email field in patron registration.', 'coust', 'description'),
     'string'),
 ( 'ui.patron.edit.au.email.regex',
-    oils_i18n_gettext('ui.patron.edit.au.email.regex', 'GUI: Regex for email field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.email.regex', 'Regex for email field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.email.regex', 'The Regular Expression for validation on the email field in patron registration.', 'coust', 'description'),
     'string'),
 ( 'ui.patron.edit.au.email.require',
-    oils_i18n_gettext('ui.patron.edit.au.email.require', 'GUI: Require email field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.email.require', 'Require email field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.email.require', 'The email field will be required on the patron registration screen.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.email.show',
-    oils_i18n_gettext('ui.patron.edit.au.email.show', 'GUI: Show email field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.email.show', 'Show email field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.email.show', 'The email field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.email.suggest',
-    oils_i18n_gettext('ui.patron.edit.au.email.suggest', 'GUI: Suggest email field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.email.suggest', 'Suggest email field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.email.suggest', 'The email field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.evening_phone.example',
-    oils_i18n_gettext('ui.patron.edit.au.evening_phone.example', 'GUI: Example for evening_phone field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.evening_phone.example', 'Example for evening_phone field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.evening_phone.example', 'The Example for validation on the evening_phone field in patron registration.', 'coust', 'description'),
     'string'),
 ( 'ui.patron.edit.au.evening_phone.regex',
-    oils_i18n_gettext('ui.patron.edit.au.evening_phone.regex', 'GUI: Regex for evening_phone field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.evening_phone.regex', 'Regex for evening_phone field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.evening_phone.regex', 'The Regular Expression for validation on the evening_phone field in patron registration.', 'coust', 'description'),
     'string'),
 ( 'ui.patron.edit.au.evening_phone.require',
-    oils_i18n_gettext('ui.patron.edit.au.evening_phone.require', 'GUI: Require evening_phone field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.evening_phone.require', 'Require evening_phone field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.evening_phone.require', 'The evening_phone field will be required on the patron registration screen.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.evening_phone.show',
-    oils_i18n_gettext('ui.patron.edit.au.evening_phone.show', 'GUI: Show evening_phone field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.evening_phone.show', 'Show evening_phone field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.evening_phone.show', 'The evening_phone field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.evening_phone.suggest',
-    oils_i18n_gettext('ui.patron.edit.au.evening_phone.suggest', 'GUI: Suggest evening_phone field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.evening_phone.suggest', 'Suggest evening_phone field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.evening_phone.suggest', 'The evening_phone field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.ident_value.show',
-    oils_i18n_gettext('ui.patron.edit.au.ident_value.show', 'GUI: Show ident_value field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.ident_value.show', 'Show ident_value field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.ident_value.show', 'The ident_value field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.ident_value.suggest',
-    oils_i18n_gettext('ui.patron.edit.au.ident_value.suggest', 'GUI: Suggest ident_value field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.ident_value.suggest', 'Suggest ident_value field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.ident_value.suggest', 'The ident_value field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.ident_value2.show',
-    oils_i18n_gettext('ui.patron.edit.au.ident_value2.show', 'GUI: Show ident_value2 field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.ident_value2.show', 'Show ident_value2 field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.ident_value2.show', 'The ident_value2 field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.ident_value2.suggest',
-    oils_i18n_gettext('ui.patron.edit.au.ident_value2.suggest', 'GUI: Suggest ident_value2 field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.ident_value2.suggest', 'Suggest ident_value2 field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.ident_value2.suggest', 'The ident_value2 field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.juvenile.show',
-    oils_i18n_gettext('ui.patron.edit.au.juvenile.show', 'GUI: Show juvenile field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.juvenile.show', 'Show juvenile field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.juvenile.show', 'The juvenile field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.juvenile.suggest',
-    oils_i18n_gettext('ui.patron.edit.au.juvenile.suggest', 'GUI: Suggest juvenile field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.juvenile.suggest', 'Suggest juvenile field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.juvenile.suggest', 'The juvenile field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.master_account.show',
-    oils_i18n_gettext('ui.patron.edit.au.master_account.show', 'GUI: Show master_account field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.master_account.show', 'Show master_account field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.master_account.show', 'The master_account field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.master_account.suggest',
-    oils_i18n_gettext('ui.patron.edit.au.master_account.suggest', 'GUI: Suggest master_account field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.master_account.suggest', 'Suggest master_account field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.master_account.suggest', 'The master_account field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.other_phone.example',
-    oils_i18n_gettext('ui.patron.edit.au.other_phone.example', 'GUI: Example for other_phone field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.other_phone.example', 'Example for other_phone field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.other_phone.example', 'The Example for validation on the other_phone field in patron registration.', 'coust', 'description'),
     'string'),
 ( 'ui.patron.edit.au.other_phone.regex',
-    oils_i18n_gettext('ui.patron.edit.au.other_phone.regex', 'GUI: Regex for other_phone field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.other_phone.regex', 'Regex for other_phone field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.other_phone.regex', 'The Regular Expression for validation on the other_phone field in patron registration.', 'coust', 'description'),
     'string'),
 ( 'ui.patron.edit.au.other_phone.require',
-    oils_i18n_gettext('ui.patron.edit.au.other_phone.require', 'GUI: Require other_phone field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.other_phone.require', 'Require other_phone field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.other_phone.require', 'The other_phone field will be required on the patron registration screen.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.other_phone.show',
-    oils_i18n_gettext('ui.patron.edit.au.other_phone.show', 'GUI: Show other_phone field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.other_phone.show', 'Show other_phone field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.other_phone.show', 'The other_phone field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.other_phone.suggest',
-    oils_i18n_gettext('ui.patron.edit.au.other_phone.suggest', 'GUI: Suggest other_phone field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.other_phone.suggest', 'Suggest other_phone field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.other_phone.suggest', 'The other_phone field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.second_given_name.show',
-    oils_i18n_gettext('ui.patron.edit.au.second_given_name.show', 'GUI: Show second_given_name field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.second_given_name.show', 'Show second_given_name field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.second_given_name.show', 'The second_given_name field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.second_given_name.suggest',
-    oils_i18n_gettext('ui.patron.edit.au.second_given_name.suggest', 'GUI: Suggest second_given_name field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.second_given_name.suggest', 'Suggest second_given_name field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.second_given_name.suggest', 'The second_given_name field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.suffix.show',
-    oils_i18n_gettext('ui.patron.edit.au.suffix.show', 'GUI: Show suffix field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.suffix.show', 'Show suffix field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.suffix.show', 'The suffix field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.au.suffix.suggest',
-    oils_i18n_gettext('ui.patron.edit.au.suffix.suggest', 'GUI: Suggest suffix field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.au.suffix.suggest', 'Suggest suffix field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.au.suffix.suggest', 'The suffix field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.aua.county.require',
-    oils_i18n_gettext('ui.patron.edit.aua.county.require', 'GUI: Require county field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.aua.county.require', 'Require county field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.aua.county.require', 'The county field will be required on the patron registration screen.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.aua.post_code.example',
-    oils_i18n_gettext('ui.patron.edit.aua.post_code.example', 'GUI: Example for post_code field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.aua.post_code.example', 'Example for post_code field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.aua.post_code.example', 'The Example for validation on the post_code field in patron registration.', 'coust', 'description'),
     'string'),
 ( 'ui.patron.edit.aua.post_code.regex',
-    oils_i18n_gettext('ui.patron.edit.aua.post_code.regex', 'GUI: Regex for post_code field on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.aua.post_code.regex', 'Regex for post_code field on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.aua.post_code.regex', 'The Regular Expression for validation on the post_code field in patron registration.', 'coust', 'description'),
     'string'),
 ( 'ui.patron.edit.default_suggested',
-    oils_i18n_gettext('ui.patron.edit.default_suggested', 'GUI: Default showing suggested patron registration fields', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.default_suggested', 'Default showing suggested patron registration fields', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.default_suggested', 'Instead of All fields, show just suggested fields in patron registration by default.', 'coust', 'description'),
     'bool'),
 ( 'ui.patron.edit.phone.example',
-    oils_i18n_gettext('ui.patron.edit.phone.example', 'GUI: Example for phone fields on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.phone.example', 'Example for phone fields on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.phone.example', 'The Example for validation on phone fields in patron registration. Applies to all phone fields without their own setting.', 'coust', 'description'),
     'string'),
 ( 'ui.patron.edit.phone.regex',
-    oils_i18n_gettext('ui.patron.edit.phone.regex', 'GUI: Regex for phone fields on patron registration', 'coust', 'label'),
+    oils_i18n_gettext('ui.patron.edit.phone.regex', 'Regex for phone fields on patron registration', 'coust', 'label'),
     oils_i18n_gettext('ui.patron.edit.phone.regex', 'The Regular Expression for validation on phone fields in patron registration. Applies to all phone fields without their own setting. NOTE: See description of the day_phone regex for important information about capture groups with it.', 'coust', 'description'),
     'string');
 
@@ -5855,21 +5855,21 @@ SELECT SETVAL('action_trigger.event_definition_id_seq'::TEXT, 100);
 
 INSERT INTO config.org_unit_setting_type (name, label, description, datatype) VALUES (
     'circ.holds.org_unit_target_weight',
-    'Holds: Org Unit Target Weight',
+    'Org Unit Target Weight',
     'Org Units can be organized into hold target groups based on a weight.  Potential copies from org units with the same weight are chosen at random.',
     'integer'
 );
 
 INSERT INTO config.org_unit_setting_type (name, label, description, datatype) VALUES (
     'circ.holds.target_holds_by_org_unit_weight',
-    'Holds: Use weight-based hold targeting',
+    'Use weight-based hold targeting',
     'Use library weight based hold targeting',
     'bool'
 );
 
 INSERT INTO config.org_unit_setting_type (name, label, description, datatype) VALUES (
     'circ.holds.max_org_unit_target_loops',
-    'Holds: Maximum library target attempts',
+    'Maximum library target attempts',
     'When this value is set and greater than 0, the system will only attempt to find a copy at each possible branch the configured number of times',
     'integer'
 );
@@ -5894,7 +5894,7 @@ INSERT INTO config.org_unit_setting_type (name, label, description, datatype) VA
 -- Setting for behind the desk hold pickups
 INSERT INTO config.org_unit_setting_type (name, label, description, datatype) VALUES (
     'circ.holds.behind_desk_pickup_supported',
-    'Holds: Behind Desk Pickup Supported',
+    'Behind Desk Pickup Supported',
     'If a branch supports both a public holds shelf and behind-the-desk pickups, set this value to true.  This gives the patron the option to enable behind-the-desk pickups for their holds',
     'bool'
 );
@@ -6156,7 +6156,7 @@ INSERT INTO
 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
     VALUES (
         'circ.holds.canceled.display_count',
-        'Holds: Canceled holds display count',
+        'Canceled holds display count',
         'How many canceled holds to show in patron holds interfaces',
         'integer'
     );
@@ -6164,7 +6164,7 @@ INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
     VALUES (
         'circ.holds.canceled.display_age',
-        'Holds: Canceled holds display age',
+        'Canceled holds display age',
         'Show all canceled holds that were canceled within this amount of time',
         'interval'
     );
@@ -6251,7 +6251,7 @@ INSERT INTO config.org_unit_setting_type (name, label, description, datatype, fm
 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) 
     VALUES ( 
         'circ.max_fine.cap_at_price',
-        oils_i18n_gettext('circ.max_fine.cap_at_price', 'Circ: Cap Max Fine at Item Price', 'coust', 'label'),
+        oils_i18n_gettext('circ.max_fine.cap_at_price', 'Cap Max Fine at Item Price', 'coust', 'label'),
         oils_i18n_gettext('circ.max_fine.cap_at_price', 'This prevents the system from charging more than the item price in overdue fines', 'coust', 'description'),
         'bool' 
     );
@@ -6259,7 +6259,7 @@ INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype, fm_class ) 
     VALUES ( 
         'circ.holds.clear_shelf.copy_status',
-        oils_i18n_gettext('circ.holds.clear_shelf.copy_status', 'Holds: Clear shelf copy status', 'coust', 'label'),
+        oils_i18n_gettext('circ.holds.clear_shelf.copy_status', 'Clear shelf copy status', 'coust', 'label'),
         oils_i18n_gettext('circ.holds.clear_shelf.copy_status', 'Any copies that have not been put into reshelving, in-transit, or on-holds-shelf (for a new hold) during the clear shelf process will be put into this status.  This is basically a purgatory status for copies waiting to be pulled from the shelf and processed by hand', 'coust', 'description'),
         'link',
         'ccs'
@@ -6268,12 +6268,12 @@ INSERT INTO config.org_unit_setting_type ( name, label, description, datatype, f
 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
     VALUES ( 
         'circ.selfcheck.workstation_required',
-        oils_i18n_gettext('circ.selfcheck.workstation_required', 'Selfcheck: Workstation Required', 'coust', 'label'),
+        oils_i18n_gettext('circ.selfcheck.workstation_required', 'Workstation Required', 'coust', 'label'),
         oils_i18n_gettext('circ.selfcheck.workstation_required', 'All selfcheck stations must use a workstation', 'coust', 'description'),
         'bool'
     ), (
         'circ.selfcheck.patron_password_required',
-        oils_i18n_gettext('circ.selfcheck.patron_password_required', 'Selfcheck: Require Patron Password', 'coust', 'label'),
+        oils_i18n_gettext('circ.selfcheck.patron_password_required', 'Require Patron Password', 'coust', 'label'),
         oils_i18n_gettext('circ.selfcheck.patron_password_required', 'Patron must log in with barcode and password at selfcheck station', 'coust', 'description'),
         'bool'
     );
@@ -6281,7 +6281,7 @@ INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
     VALUES ( 
         'circ.selfcheck.alert.sound',
-        oils_i18n_gettext('circ.selfcheck.alert.sound', 'Selfcheck: Audio Alerts', 'coust', 'label'),
+        oils_i18n_gettext('circ.selfcheck.alert.sound', 'Audio Alerts', 'coust', 'label'),
         oils_i18n_gettext('circ.selfcheck.alert.sound', 'Use audio alerts for selfcheck events', 'coust', 'description'),
         'bool'
     );
@@ -8037,12 +8037,12 @@ INSERT INTO acq.cancel_reason (org_unit, keep_debits, id, label, description) VA
 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
     VALUES (
         'circ.holds.hold_has_copy_at.alert',
-        oils_i18n_gettext('circ.holds.hold_has_copy_at.alert', 'Holds: Has Local Copy Alert', 'coust', 'label'),
+        oils_i18n_gettext('circ.holds.hold_has_copy_at.alert', 'Has Local Copy Alert', 'coust', 'label'),
         oils_i18n_gettext('circ.holds.hold_has_copy_at.alert', 'If there is an available copy at the requesting library that could fulfill a hold during hold placement time, alert the patron', 'coust', 'description'),
         'bool'
     ),(
         'circ.holds.hold_has_copy_at.block',
-        oils_i18n_gettext('circ.holds.hold_has_copy_at.block', 'Holds: Has Local Copy Block', 'coust', 'label'),
+        oils_i18n_gettext('circ.holds.hold_has_copy_at.block', 'Has Local Copy Block', 'coust', 'label'),
         oils_i18n_gettext('circ.holds.hold_has_copy_at.block', 'If there is an available copy at the requesting library that could fulfill a hold during hold placement time, do not allow the hold to be placed', 'coust', 'description'),
         'bool'
     );
@@ -8297,7 +8297,7 @@ INSERT INTO config.org_unit_setting_type (name, label, description, datatype)
         'circ.selfcheck.block_checkout_on_copy_status',
         oils_i18n_gettext(
             'circ.selfcheck.block_checkout_on_copy_status',
-            'Selfcheck: Block copy checkout status',
+            'Block copy checkout status',
             'coust',
             'label'
         ),
@@ -8336,7 +8336,7 @@ VALUES (
     'cat.default_classification_scheme',
     oils_i18n_gettext(
         'cat.default_classification_scheme',
-        'Cataloging: Default Classification Scheme',
+        'Default Classification Scheme',
         'coust',
         'label'
     ),
@@ -8479,7 +8479,7 @@ INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
         'opac.org_unit_hiding.depth',
         oils_i18n_gettext(
             'opac.org_unit_hiding.depth',
-            'OPAC: Org Unit Hiding Depth', 
+            'Org Unit Hiding Depth', 
             'coust', 
             'label'),
         oils_i18n_gettext(
@@ -8494,7 +8494,7 @@ INSERT INTO config.org_unit_setting_type (name, label, description, datatype)
     VALUES
         ('circ.holds.clear_shelf.no_capture_holds',
         oils_i18n_gettext( 'circ.holds.clear_shelf.no_capture_holds',
-            'Holds: Bypass hold capture during clear shelf process', 'coust', 'label'),
+            'Bypass hold capture during clear shelf process', 'coust', 'label'),
         oils_i18n_gettext( 'circ.holds.clear_shelf.no_capture_holds',
             'During the clear shelf process, avoid capturing new holds on cleared items.', 'coust', 'description'),
         'bool')
@@ -8505,7 +8505,7 @@ INSERT INTO config.org_unit_setting_type ( name, label, description, datatype, f
         'circ.missing_pieces.copy_status',
         oils_i18n_gettext(
             'circ.missing_pieces.copy_status',
-            'Circulation: Item Status for Missing Pieces', 
+            'Item Status for Missing Pieces', 
             'coust', 
             'label'),
         oils_i18n_gettext(
@@ -8522,14 +8522,14 @@ INSERT INTO config.org_unit_setting_type (name, label, description, datatype)
     VALUES
         ('cat.label.font.size',
             oils_i18n_gettext('cat.label.font.size',
-                'Cataloging: Spine and pocket label font size', 'coust', 'label'),
+                'Spine and pocket label font size', 'coust', 'label'),
             oils_i18n_gettext('cat.label.font.size',
                 'Set the default font size for spine and pocket labels', 'coust', 'description'),
             'integer'
         )
         ,('cat.label.font.family',
             oils_i18n_gettext('cat.label.font.family',
-                'Cataloging: Spine and pocket label font family', 'coust', 'label'),
+                'Spine and pocket label font family', 'coust', 'label'),
             oils_i18n_gettext('cat.label.font.family',
                 'Set the preferred font family for spine and pocket labels. You can specify a list of fonts, separated by commas, in order of preference; the system will use the first font it finds with a matching name. For example, "Arial, Helvetica, serif".',
                 'coust', 'description'),
@@ -8584,7 +8584,7 @@ INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
         'circ.do_not_tally_claims_returned',
         oils_i18n_gettext(
             'circ.do_not_tally_claims_returned',
-            'Circulation: Do not include outstanding Claims Returned circulations in lump sum tallies in Patron Display.', 
+            'Do not include outstanding Claims Returned circulations in lump sum tallies in Patron Display.', 
             'coust', 
             'label'),
         oils_i18n_gettext(
@@ -8732,7 +8732,7 @@ INSERT INTO config.org_unit_setting_type ( name, label, description, datatype, f
         'ui.patron.default_ident_type',
         oils_i18n_gettext(
             'ui.patron.default_ident_type',
-            'GUI: Default Ident Type for Patron Registration', 
+            'Default Ident Type for Patron Registration', 
             'coust', 
             'label'),
         oils_i18n_gettext(
@@ -8748,7 +8748,7 @@ INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
         'ui.patron.default_country',
         oils_i18n_gettext(
             'ui.patron.default_country',
-            'GUI: Default Country for New Addresses in Patron Editor', 
+            'Default Country for New Addresses in Patron Editor', 
             'coust', 
             'label'),
         oils_i18n_gettext(
@@ -8765,7 +8765,7 @@ INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
         'ui.patron.registration.require_address',
         oils_i18n_gettext(
             'ui.patron.registration.require_address',
-            'GUI: Require at least one address for Patron Registration', 
+            'Require at least one address for Patron Registration', 
             'coust', 
             'label'),
         oils_i18n_gettext(
@@ -8921,7 +8921,7 @@ INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
     'ui.cat.volume_copy_editor.horizontal',
     oils_i18n_gettext(
         'ui.cat.volume_copy_editor.horizontal',
-        'GUI: Horizontal layout for Volume/Copy Creator/Editor.',
+        'Horizontal layout for Volume/Copy Creator/Editor.',
         'coust', 'label'),
     oils_i18n_gettext(
         'ui.cat.volume_copy_editor.horizontal',
@@ -8933,7 +8933,7 @@ INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
 INSERT into config.org_unit_setting_type
 ( name, label, description, datatype, fm_class ) VALUES
 ( 'cat.default_copy_status_fast',
-  oils_i18n_gettext( 'cat.default_copy_status_fast', 'Cataloging: Default copy status (fast add)', 'coust', 'label'),
+  oils_i18n_gettext( 'cat.default_copy_status_fast', 'Default copy status (fast add)', 'coust', 'label'),
   oils_i18n_gettext( 'cat.default_copy_status_fast', 'Default status when a copy is created using the "Fast Add" interface.', 'coust', 'description'),
   'link', 'ccs'
 );
@@ -8941,7 +8941,7 @@ INSERT into config.org_unit_setting_type
 INSERT into config.org_unit_setting_type
 ( name, label, description, datatype, fm_class ) VALUES
 ( 'cat.default_copy_status_normal',
-  oils_i18n_gettext( 'cat.default_copy_status_normal', 'Cataloging: Default copy status (normal)', 'coust', 'label'),
+  oils_i18n_gettext( 'cat.default_copy_status_normal', 'Default copy status (normal)', 'coust', 'label'),
   oils_i18n_gettext( 'cat.default_copy_status_normal', 'Default status when a copy is created using the normal volume/copy creator interface.', 'coust', 'description'),
   'link', 'ccs'
 );
@@ -8951,7 +8951,7 @@ INSERT into config.org_unit_setting_type
 INSERT into config.org_unit_setting_type
 ( name, label, description, datatype ) VALUES
 ( 'ui.unified_volume_copy_editor',
-  oils_i18n_gettext( 'ui.unified_volume_copy_editor', 'GUI: Unified Volume/Item Creator/Editor', 'coust', 'label'),
+  oils_i18n_gettext( 'ui.unified_volume_copy_editor', 'Unified Volume/Item Creator/Editor', 'coust', 'label'),
   oils_i18n_gettext( 'ui.unified_volume_copy_editor', 'If true combines the Volume/Copy Creator and Item Attribute Editor in some instances.', 'coust', 'description'),
   'bool'
 );
@@ -8961,7 +8961,7 @@ INSERT into config.org_unit_setting_type
 INSERT INTO config.org_unit_setting_type 
 ( name, label, description, datatype ) VALUES 
 ( 'circ.user_merge.delete_addresses', 
-  'Circ:  Patron Merge Address Delete', 
+  'Patron Merge Address Delete', 
   'Delete address(es) of subordinate user(s) in a patron merge', 
    'bool'
 );
@@ -8969,7 +8969,7 @@ INSERT INTO config.org_unit_setting_type
 INSERT INTO config.org_unit_setting_type 
 ( name, label, description, datatype ) VALUES 
 ( 'circ.user_merge.delete_cards', 
-  'Circ: Patron Merge Barcode Delete', 
+  'Patron Merge Barcode Delete', 
   'Delete barcode(s) of subordinate user(s) in a patron merge', 
   'bool'
 );
@@ -8977,7 +8977,7 @@ INSERT INTO config.org_unit_setting_type
 INSERT INTO config.org_unit_setting_type 
 ( name, label, description, datatype ) VALUES 
 ( 'circ.user_merge.deactivate_cards', 
-  'Circ:  Patron Merge Deactivate Card', 
+  'Patron Merge Deactivate Card', 
   'Mark barcode(s) of subordinate user(s) in a patron merge as inactive', 
   'bool'
 );
@@ -8995,7 +8995,7 @@ INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
     'circ.transit.min_checkin_interval',
     oils_i18n_gettext( 
         'circ.transit.min_checkin_interval', 
-        'Circ:  Minimum Transit Checkin Interval',
+        'Minimum Transit Checkin Interval',
         'coust',
         'label'
     ),
@@ -9821,3 +9821,218 @@ INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
     'Permit email notification when a reservation is ready for pickup.',
     'bool'
 );
+
+-- Add groups to config settings.
+
+-- config settings groups
+INSERT INTO config.settings_group (name, label) VALUES
+('sys', oils_i18n_gettext('config.settings_group.system', 'System', 'coust', 'label')),
+('gui', oils_i18n_gettext('config.settings_group.gui', 'GUI', 'coust', 'label')),
+('lib', oils_i18n_gettext('config.settings_group.lib', 'Library', 'coust', 'label')),
+('sec', oils_i18n_gettext('config.settings_group.sec', 'Security', 'coust', 'label')),
+('cat', oils_i18n_gettext('config.settings_group.cat', 'Cataloging', 'coust', 'label')),
+('holds', oils_i18n_gettext('config.settings_group.holds', 'Holds', 'coust', 'label')),
+('circ', oils_i18n_gettext('config.settings_group.circulation', 'Circulation', 'coust', 'label')),
+('self', oils_i18n_gettext('config.settings_group.self', 'Self Check', 'coust', 'label')),
+('opac', oils_i18n_gettext('config.settings_group.opac', 'OPAC', 'coust', 'label')),
+('prog', oils_i18n_gettext('config.settings_group.program', 'Program', 'coust', 'label')),
+('glob', oils_i18n_gettext('config.settings_group.global', 'Global', 'coust', 'label')),
+('finance', oils_i18n_gettext('config.settings_group.finances', 'Finanaces', 'coust', 'label')),
+('credit', oils_i18n_gettext('config.settings_group.ccp', 'Credit Card Processing', 'coust', 'label')),
+('serial', oils_i18n_gettext('config.settings_group.serial', 'Serials', 'coust', 'label')),
+('recall', oils_i18n_gettext('config.settings_group.recall', 'Recalls', 'coust', 'label'));
+
+-- Set up all of the config.org_unit_setting_type[s] with a proper group.
+UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.bib.delete_on_no_copy_via_acq_lineitem_cancel';
+UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.default_classification_scheme';
+UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.label.font.family';
+UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.label.font.size';
+UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.label.font.weight';
+UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.marc_control_number_identifier';
+UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.spine.line.height';
+UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.spine.line.margin';
+UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.spine.line.width';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.checkout_auto_renew_age';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.checkout_fills_related_hold';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.do_not_tally_claims_returned';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.holds.expired_patron_block';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.hold_shelf_status_delay';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.lost_immediately_available';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.max_accept_return_of_lost';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.max_fine.cap_at_price';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.max_patron_claim_return_count';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.missing_pieces.copy_status';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.password_reset_request_requires_matching_email';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.patron_edit.clone.copy_address';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.patron_invalid_address_apply_penalty';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.restore_overdue_on_lost_return';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.void_lost_on_checkin';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.void_lost_proc_fee_on_checkin';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'ui.circ.suppress_checkin_popups';
+UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.authorizenet.enabled';
+UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.authorizenet.login';
+UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.authorizenet.password';
+UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.authorizenet.server';
+UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.authorizenet.testmode';
+UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.default';
+UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.payflowpro.enabled';
+UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.payflowpro.login';
+UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.payflowpro.partner';
+UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.payflowpro.password';
+UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.payflowpro.testmode';
+UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.payflowpro.vendor';
+UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.paypal.enabled';
+UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.paypal.login';
+UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.paypal.password';
+UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.paypal.signature';
+UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.paypal.testmode';
+UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'acq.fund.balance_limit.block';
+UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'acq.fund.balance_limit.warn';
+UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'cat.default_item_price';
+UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'circ.charge_lost_on_zero';
+UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'circ.charge_on_damaged';
+UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'circ.damaged_item_processing_fee';
+UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'circ.lost_materials_processing_fee';
+UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'circ.void_overdue_on_lost';
+UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'credit.payments.allow';
+UPDATE config.org_unit_setting_type SET grp = 'glob' WHERE name = 'global.default_locale';
+UPDATE config.org_unit_setting_type SET grp = 'glob' WHERE name = 'global.password_regex';
+UPDATE config.org_unit_setting_type SET grp = 'glob' WHERE name = 'opac.barcode_regex';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'cat.bib.alert_on_empty';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'circ.auto_hide_patron_summary';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'circ.item_checkout_history.max';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'format.date';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'format.time';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'gui.disable_local_save_columns';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.admin.patron_log.max_entries';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.admin.work_log.max_entries';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.circ.in_house_use.entry_cap';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.circ.in_house_use.entry_warn';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.circ.patron_summary.horizontal';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.circ.show_billing_tab_on_bills';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.general.button_bar';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.general.idle_timeout';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.default_country';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.default_ident_type';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.aua.county.require';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.active.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.active.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.alert_message.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.alert_message.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.alias.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.alias.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.aua.post_code.example';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.aua.post_code.regex';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.barred.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.barred.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.claims_never_checked_out_count.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.claims_never_checked_out_count.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.claims_returned_count.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.claims_returned_count.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.day_phone.example';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.day_phone.regex';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.day_phone.require';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.day_phone.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.day_phone.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.dob.calendar';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.dob.require';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.dob.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.dob.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.email.example';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.email.regex';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.email.require';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.email.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.email.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.evening_phone.example';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.evening_phone.regex';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.evening_phone.require';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.evening_phone.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.evening_phone.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.ident_value2.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.ident_value2.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.ident_value.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.ident_value.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.juvenile.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.juvenile.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.master_account.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.master_account.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.other_phone.example';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.other_phone.regex';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.other_phone.require';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.other_phone.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.other_phone.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.second_given_name.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.second_given_name.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.suffix.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.suffix.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.default_suggested';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.phone.example';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.phone.regex';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.registration.require_address';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.staff.require_initials';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'url.remote_column_settings';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.block_renews_for_holds';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.hold_boundary.hard';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.hold_boundary.soft';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.hold_expire_alert_interval';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.hold_expire_interval';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.behind_desk_pickup_supported';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.canceled.display_age';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.canceled.display_count';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.clear_shelf.copy_status';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.clear_shelf.no_capture_holds';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.default_estimated_wait_interval';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.default_shelf_expire_interval';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds_fifo';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.hold_has_copy_at.alert';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.hold_has_copy_at.block';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.max_org_unit_target_loops';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.min_estimated_wait_interval';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.org_unit_target_weight';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.hold_stalling_hard';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.hold_stalling.soft';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.target_holds_by_org_unit_weight';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.target_skip_me';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.uncancel.reset_request_time';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'acq.default_circ_modifier';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'acq.default_copy_location';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'acq.holds.allow_holds_from_purchase_request';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'acq.tmp_barcode_prefix';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'acq.tmp_callnumber_prefix';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'circ.booking_reservation.default_elbow_room';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'circ.claim_never_checked_out.mark_missing';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'circ.claim_return.copy_status';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'circ.damaged.void_ovedue';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'circ.pre_cat_copy_circ_lib';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'circ.reshelving_complete.interval';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'global.juvenile_age_threshold';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'lib.courier_code';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'notice.telephony.callfile_lines';
+UPDATE config.org_unit_setting_type SET grp = 'opac' WHERE name = 'opac.allow_pending_address';
+UPDATE config.org_unit_setting_type SET grp = 'opac' WHERE name = 'opac.fully_compressed_serial_holdings';
+UPDATE config.org_unit_setting_type SET grp = 'opac' WHERE name = 'opac.org_unit_hiding.depth';
+UPDATE config.org_unit_setting_type SET grp = 'prog' WHERE name = 'cat.bib.keep_on_empty';
+UPDATE config.org_unit_setting_type SET grp = 'prog' WHERE name = 'circ.staff_client.do_not_auto_attempt_print';
+UPDATE config.org_unit_setting_type SET grp = 'prog' WHERE name = 'org.bounced_emails';
+UPDATE config.org_unit_setting_type SET grp = 'recall' WHERE name = 'circ.holds.recall_fine_rules';
+UPDATE config.org_unit_setting_type SET grp = 'recall' WHERE name = 'circ.holds.recall_return_interval';
+UPDATE config.org_unit_setting_type SET grp = 'recall' WHERE name = 'circ.holds.recall_threshold';
+UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'auth.opac_timeout';
+UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'auth.persistent_login_interval';
+UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'auth.staff_timeout';
+UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'circ.obscure_dob';
+UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'circ.offline.username_allowed';
+UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'circ.password_reset_request_per_user_limit';
+UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'circ.password_reset_request_throttle';
+UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'circ.password_reset_request_time_to_live';
+UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'patron.password.use_phone';
+UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'ui.patron.default_inet_access_level';
+UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.alert.popup';
+UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.alert.sound';
+UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.auto_override_checkout_events';
+UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.block_checkout_on_copy_status';
+UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.patron_login_timeout';
+UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.patron_password_required';
+UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.require_patron_password';
+UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.workstation_required';
+UPDATE config.org_unit_setting_type SET grp = 'serial' WHERE name = 'serial.prev_issuance_copy_location';
diff --git a/Open-ILS/src/sql/Pg/upgrade/0550.data.seed_values_ous_groups.sql b/Open-ILS/src/sql/Pg/upgrade/0550.data.seed_values_ous_groups.sql
deleted file mode 100644
index bbff1ef..0000000
--- a/Open-ILS/src/sql/Pg/upgrade/0550.data.seed_values_ous_groups.sql
+++ /dev/null
@@ -1,219 +0,0 @@
--- Add groups to config settings.
-BEGIN;
-
-INSERT INTO config.upgrade_log (version) VALUES ('0550'); --dbs
-
--- config settings group
-INSERT INTO config.settings_group (name, label) VALUES
-('sys', oils_i18n_gettext('config.settings_group.system', 'System', 'coust', 'label')),
-('gui', oils_i18n_gettext('config.settings_group.gui', 'GUI', 'coust', 'label')),
-('lib', oils_i18n_gettext('config.settings_group.lib', 'Library', 'coust', 'label')),
-('sec', oils_i18n_gettext('config.settings_group.sec', 'Security', 'coust', 'label')),
-('cat', oils_i18n_gettext('config.settings_group.cat', 'Cataloging', 'coust', 'label')),
-('holds', oils_i18n_gettext('config.settings_group.holds', 'Holds', 'coust', 'label')),
-('circ', oils_i18n_gettext('config.settings_group.circulation', 'Circulation', 'coust', 'label')),
-('self', oils_i18n_gettext('config.settings_group.self', 'Self Check', 'coust', 'label')),
-('opac', oils_i18n_gettext('config.settings_group.opac', 'OPAC', 'coust', 'label')),
-('prog', oils_i18n_gettext('config.settings_group.program', 'Program', 'coust', 'label')),
-('glob', oils_i18n_gettext('config.settings_group.global', 'Global', 'coust', 'label')),
-('finance', oils_i18n_gettext('config.settings_group.finances', 'Finanaces', 'coust', 'label')),
-('credit', oils_i18n_gettext('config.settings_group.ccp', 'Credit Card Processing', 'coust', 'label')),
-('serial', oils_i18n_gettext('config.settings_group.serial', 'Serials', 'coust', 'label')),
-('recall', oils_i18n_gettext('config.settings_group.recall', 'Recalls', 'coust', 'label'));
-
--- Set up all of the config.org_unit_setting_type[s] with a proper group.
-UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.bib.delete_on_no_copy_via_acq_lineitem_cancel';
-UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.default_classification_scheme';
-UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.label.font.family';
-UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.label.font.size';
-UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.label.font.weight';
-UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.marc_control_number_identifier';
-UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.spine.line.height';
-UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.spine.line.margin';
-UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.spine.line.width';
-UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.checkout_auto_renew_age';
-UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.checkout_fills_related_hold';
-UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.do_not_tally_claims_returned';
-UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.holds.expired_patron_block';
-UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.hold_shelf_status_delay';
-UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.lost_immediately_available';
-UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.max_accept_return_of_lost';
-UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.max_fine.cap_at_price';
-UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.max_patron_claim_return_count';
-UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.missing_pieces.copy_status';
-UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.password_reset_request_requires_matching_email';
-UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.patron_edit.clone.copy_address';
-UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.patron_invalid_address_apply_penalty';
-UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.restore_overdue_on_lost_return';
-UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.void_lost_on_checkin';
-UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.void_lost_proc_fee_on_checkin';
-UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'ui.circ.suppress_checkin_popups';
-UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.authorizenet.enabled';
-UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.authorizenet.login';
-UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.authorizenet.password';
-UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.authorizenet.server';
-UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.authorizenet.testmode';
-UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.default';
-UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.payflowpro.enabled';
-UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.payflowpro.login';
-UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.payflowpro.partner';
-UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.payflowpro.password';
-UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.payflowpro.testmode';
-UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.payflowpro.vendor';
-UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.paypal.enabled';
-UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.paypal.login';
-UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.paypal.password';
-UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.paypal.signature';
-UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.paypal.testmode';
-UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'acq.fund.balance_limit.block';
-UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'acq.fund.balance_limit.warn';
-UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'cat.default_item_price';
-UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'circ.charge_lost_on_zero';
-UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'circ.charge_on_damaged';
-UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'circ.damaged_item_processing_fee';
-UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'circ.lost_materials_processing_fee';
-UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'circ.void_overdue_on_lost';
-UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'credit.payments.allow';
-UPDATE config.org_unit_setting_type SET grp = 'glob' WHERE name = 'global.default_locale';
-UPDATE config.org_unit_setting_type SET grp = 'glob' WHERE name = 'global.password_regex';
-UPDATE config.org_unit_setting_type SET grp = 'glob' WHERE name = 'opac.barcode_regex';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'cat.bib.alert_on_empty';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'circ.auto_hide_patron_summary';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'circ.item_checkout_history.max';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'format.date';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'format.time';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'gui.disable_local_save_columns';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.admin.patron_log.max_entries';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.admin.work_log.max_entries';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.circ.in_house_use.entry_cap';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.circ.in_house_use.entry_warn';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.circ.patron_summary.horizontal';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.circ.show_billing_tab_on_bills';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.general.button_bar';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.general.idle_timeout';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.default_country';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.default_ident_type';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.aua.county.require';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.active.show';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.active.suggest';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.alert_message.show';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.alert_message.suggest';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.alias.show';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.alias.suggest';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.aua.post_code.example';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.aua.post_code.regex';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.barred.show';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.barred.suggest';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.claims_never_checked_out_count.show';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.claims_never_checked_out_count.suggest';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.claims_returned_count.show';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.claims_returned_count.suggest';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.day_phone.example';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.day_phone.regex';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.day_phone.require';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.day_phone.show';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.day_phone.suggest';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.dob.calendar';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.dob.require';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.dob.show';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.dob.suggest';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.email.example';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.email.regex';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.email.require';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.email.show';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.email.suggest';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.evening_phone.example';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.evening_phone.regex';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.evening_phone.require';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.evening_phone.show';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.evening_phone.suggest';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.ident_value2.show';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.ident_value2.suggest';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.ident_value.show';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.ident_value.suggest';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.juvenile.show';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.juvenile.suggest';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.master_account.show';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.master_account.suggest';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.other_phone.example';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.other_phone.regex';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.other_phone.require';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.other_phone.show';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.other_phone.suggest';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.second_given_name.show';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.second_given_name.suggest';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.suffix.show';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.suffix.suggest';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.default_suggested';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.phone.example';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.phone.regex';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.registration.require_address';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.staff.require_initials';
-UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'url.remote_column_settings';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.block_renews_for_holds';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.hold_boundary.hard';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.hold_boundary.soft';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.hold_expire_alert_interval';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.hold_expire_interval';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.behind_desk_pickup_supported';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.canceled.display_age';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.canceled.display_count';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.clear_shelf.copy_status';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.clear_shelf.no_capture_holds';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.default_estimated_wait_interval';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.default_shelf_expire_interval';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds_fifo';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.hold_has_copy_at.alert';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.hold_has_copy_at.block';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.max_org_unit_target_loops';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.min_estimated_wait_interval';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.org_unit_target_weight';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.hold_stalling_hard';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.hold_stalling.soft';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.target_holds_by_org_unit_weight';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.target_skip_me';
-UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.uncancel.reset_request_time';
-UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'acq.default_circ_modifier';
-UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'acq.default_copy_location';
-UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'acq.holds.allow_holds_from_purchase_request';
-UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'acq.tmp_barcode_prefix';
-UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'acq.tmp_callnumber_prefix';
-UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'circ.booking_reservation.default_elbow_room';
-UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'circ.claim_never_checked_out.mark_missing';
-UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'circ.claim_return.copy_status';
-UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'circ.damaged.void_ovedue';
-UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'circ.pre_cat_copy_circ_lib';
-UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'circ.reshelving_complete.interval';
-UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'global.juvenile_age_threshold';
-UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'lib.courier_code';
-UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'notice.telephony.callfile_lines';
-UPDATE config.org_unit_setting_type SET grp = 'opac' WHERE name = 'opac.allow_pending_address';
-UPDATE config.org_unit_setting_type SET grp = 'opac' WHERE name = 'opac.fully_compressed_serial_holdings';
-UPDATE config.org_unit_setting_type SET grp = 'opac' WHERE name = 'opac.org_unit_hiding.depth';
-UPDATE config.org_unit_setting_type SET grp = 'prog' WHERE name = 'cat.bib.keep_on_empty';
-UPDATE config.org_unit_setting_type SET grp = 'prog' WHERE name = 'circ.staff_client.do_not_auto_attempt_print';
-UPDATE config.org_unit_setting_type SET grp = 'prog' WHERE name = 'org.bounced_emails';
-UPDATE config.org_unit_setting_type SET grp = 'recall' WHERE name = 'circ.holds.recall_fine_rules';
-UPDATE config.org_unit_setting_type SET grp = 'recall' WHERE name = 'circ.holds.recall_return_interval';
-UPDATE config.org_unit_setting_type SET grp = 'recall' WHERE name = 'circ.holds.recall_threshold';
-UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'auth.opac_timeout';
-UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'auth.persistent_login_interval';
-UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'auth.staff_timeout';
-UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'circ.obscure_dob';
-UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'circ.offline.username_allowed';
-UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'circ.password_reset_request_per_user_limit';
-UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'circ.password_reset_request_throttle';
-UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'circ.password_reset_request_time_to_live';
-UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'patron.password.use_phone';
-UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'ui.patron.default_inet_access_level';
-UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.alert.popup';
-UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.alert.sound';
-UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.auto_override_checkout_events';
-UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.block_checkout_on_copy_status';
-UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.patron_login_timeout';
-UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.patron_password_required';
-UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.require_patron_password';
-UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.workstation_required';
-UPDATE config.org_unit_setting_type SET grp = 'serial' WHERE name = 'serial.prev_issuance_copy_location';
-
-COMMIT;

commit 53b70bf549b67038b79270611e29e0d6dee16fd2
Author: Joseph Lewis <joehms22 at gmail.com>
Date:   Tue Jun 14 15:46:59 2011 -0600

    Updated so that the history shows the org-unit shortname rather than the id.
    
    Signed-off-by: Joseph Lewis <joehms22 at gmail.com>
    Signed-off-by: Thomas Berezansky <tsbere at mvlc.org>
    Signed-off-by: Jason Etheridge <jason at esilibrary.com>

diff --git a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
index 60f0e48..cbfb8c2 100644
--- a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
+++ b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
@@ -20,11 +20,13 @@ dojo.require('openils.widget.ProgressDialog');
 dojo.require('dijit.Toolbar');
 
 var authtoken;
+var query;
 var contextOrg;
 var user;
 var osSettings = {};
 var ouSettingValues = {};
 var ouSettingNames = {};
+var ouNames = {};
 var osEditAutoWidget;
 var perm_codes = {};
 var osGroups = {};
@@ -35,6 +37,7 @@ function osInit(data) {
     showProcessingDialog(true);
     
     authtoken = new openils.CGI().param('ses') || dojo.cookie('ses');
+    query = new openils.CGI().param('filter');
     user = new openils.User({authtoken:authtoken});
     contextOrg = user.user.ws_ou();
     openils.User.authtoken = authtoken;
@@ -55,6 +58,7 @@ function osInit(data) {
                 dojo.removeClass('no-perms', 'hide_me');
             }
         });
+        
     };
 
     new openils.User().buildPermOrgSelector('VIEW_ORG_SETTINGS', osContextSelector, null, connect);
@@ -73,6 +77,9 @@ function osInit(data) {
         }
     );
     
+    var aous = pcrud.retrieveAll('aou');
+    dojo.forEach(aous, function(ou) { ouNames[ou.id()] = ou.shortname(); });
+    
     showProcessingDialog(false);
 }
 dojo.addOnLoad(osInit);
@@ -348,7 +355,7 @@ function osGetEditLink(rowIdx) {
 }
 
 function osFormatEditLink(name) {
-    return this.value.replace(/SETTING/, name);
+    return this.value.replace(/SETTING/g, name);
 }
 
 function osLaunchEditor(name) {
@@ -489,7 +496,7 @@ function osLaunchHistory(name) {
     var thisHist = pcrud.search('coustl', {'field_name':name});
     for(var i in thisHist) {
          data += "<tr><td>" + thisHist[i].date_applied() + "</td><td>" + 
-         thisHist[i].org() + "</td><td>" + thisHist[i].original_value() +
+         ouNames[thisHist[i].org()] + "</td><td>" + thisHist[i].original_value() +
          "</td><td>" + thisHist[i].new_value() + "</td></tr>";
     }
         
@@ -508,9 +515,7 @@ function showAlert(message, timeout) {
     
     dojo.byId('msgInner').innerHTML = message;
     
-    var fadeArgs = {
-        node: "msgCont"
-    };
+    var fadeArgs = { node: "msgCont" };
     dojo.fadeIn(fadeArgs).play();
     
     window.setTimeout('hideAlert()', timeout);
@@ -518,9 +523,7 @@ function showAlert(message, timeout) {
 }
 
 function hideAlert() {
-    var fadeArgs = {
-        node: "msgCont"
-    };
+    var fadeArgs = { node: "msgCont" };
     dojo.fadeOut(fadeArgs).play();
     dojo.addClass('msgCont', 'hidden');
 }
diff --git a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.xhtml b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.xhtml
index 58ba5cc..988ad21 100644
--- a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.xhtml
+++ b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.xhtml
@@ -29,7 +29,7 @@
         <script type="text/javascript" src='org_unit_settings.js' />
         <script type="text/javascript" src="/xul/server/util/clipboard.js" />
         <style type="text/css">
-            h1 {
+            h2 {
                 display:inline;
                 padding:5px;
             } 
@@ -77,7 +77,7 @@
         <div dojoType='dijit.layout.LayoutContainer' orientation='vertical' class='tall'>
             <div dojoType='dijit.layout.ContentPane' layoutAlign='top'>
                 <div id="toolbar1" dojoType="dijit.Toolbar">
-                    <strong>&staff.server.admin.org_unit_settings.title;</strong>
+                    <h2>&staff.server.admin.org_unit_settings.title;</h2>
                     
                     <span dojoType="dijit.ToolbarSeparator" />
                     
@@ -121,7 +121,7 @@
                             {name: '&staff.server.admin.org_unit_settings.group;', get: osGetGridData, field:'grp'},
                             {name: '&staff.server.admin.org_unit_settings.setting;', get: osGetGridData, field:'label', width:'auto', styles:'text-align:left;'},
                             {name: '&staff.server.admin.org_unit_settings.context;', get: osGetGridData, field:'context'},
-                            {name: '&staff.server.admin.org_unit_settings.value;', get: osGetGridData, field:'value', width:'auto'},
+                            {name: '&staff.server.admin.org_unit_settings.value;', get: osGetGridData, field:'value'},
                         ]]
                     }];
                 </script>

commit 96af8f5182acf5c04b6cc85d5ef0a3ff93aae6a3
Author: Joseph Lewis <joehms22 at gmail.com>
Date:   Tue Jun 14 13:35:33 2011 -0600

    Convert buttons to toobar cleaning up page a lot. Added new notification
    system.
    
    Signed-off-by: Joseph Lewis <joehms22 at gmail.com>
    Signed-off-by: Thomas Berezansky <tsbere at mvlc.org>
    Signed-off-by: Jason Etheridge <jason at esilibrary.com>

diff --git a/Open-ILS/web/opac/locale/en-US/lang.dtd b/Open-ILS/web/opac/locale/en-US/lang.dtd
index 84952d4..0af38c2 100644
--- a/Open-ILS/web/opac/locale/en-US/lang.dtd
+++ b/Open-ILS/web/opac/locale/en-US/lang.dtd
@@ -1817,6 +1817,11 @@
 <!ENTITY staff.server.admin.org_unit_settings.submit "Submit">
 <!ENTITY staff.server.admin.org_unit_settings.copy "Copy">
 <!ENTITY staff.server.admin.org_unit_settings.paste "Paste">
+<!ENTITY staff.server.admin.org_unit_settings.history "History">
+<!ENTITY staff.server.admin.org_unit_settings.history_unit "Location">
+<!ENTITY staff.server.admin.org_unit_settings.history_date "Date Changed">
+<!ENTITY staff.server.admin.org_unit_settings.history_orig "Original Value">
+<!ENTITY staff.server.admin.org_unit_settings.history_new "New Value">
 <!ENTITY staff.server.admin.offline.xacts.caption "Offline Sessions">
 <!ENTITY staff.server.admin.offline.xacts.refresh.accesskey "R">
 <!ENTITY staff.server.admin.offline.xacts.create.label "Create">
diff --git a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
index e743534..60f0e48 100644
--- a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
+++ b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
@@ -17,20 +17,23 @@ dojo.require('openils.widget.OrgUnitFilteringSelect');
 dojo.require('openils.PermaCrud');
 dojo.require('openils.widget.AutoFieldWidget');
 dojo.require('openils.widget.ProgressDialog');
+dojo.require('dijit.Toolbar');
 
 var authtoken;
 var contextOrg;
 var user;
 var osSettings = {};
 var ouSettingValues = {};
+var ouSettingNames = {};
 var osEditAutoWidget;
 var perm_codes = {};
 var osGroups = {};
 var searchAssist = [];
 var pcrud;
-var osHistory = {};
 
 function osInit(data) {
+    showProcessingDialog(true);
+    
     authtoken = new openils.CGI().param('ses') || dojo.cookie('ses');
     user = new openils.User({authtoken:authtoken});
     contextOrg = user.user.ws_ou();
@@ -41,8 +44,6 @@ function osInit(data) {
     var grps = pcrud.retrieveAll('csg');
     dojo.forEach(grps, function(grp) { osGroups[grp.name()] = grp.label(); });
     
-    //osHistory = pcrud.retrieveAll('coustl');
-        
     var connect = function() { 
         dojo.connect(contextOrg, 'onChange', osChangeContext); 
 
@@ -71,6 +72,8 @@ function osInit(data) {
             }
         }
     );
+    
+    showProcessingDialog(false);
 }
 dojo.addOnLoad(osInit);
 
@@ -148,27 +151,27 @@ function osLimitSeen(text) {
     //Don't update on an empty list as this causes bizarre errors.
     if(names.length == 0) {
         showProcessingDialog(false);
-        
-        var noresults = dojo.byId('noresults').innerHTML;
-        myDialog = new dijit.Dialog({ content: noresults});
-        myDialog.show();
+        showAlert(dojo.byId('noresults').innerHTML);
         return;
     }
     
     ouSettingValues = {}; // Clear the values.
-    osDrawNames(names);
+    osDrawNames(names); // Repopulate setting values with the ones we want.
 }
 
 function doSearch() {
-    var query = dojo.byId("searchBox").value;
+    var query = dojo.byId('searchBox').value;
+    
     osLimitSeen(query);
     
     return false; //Keep form from submitting
 }
 
 function clearSearch() {
-    dojo.byId("searchBox").value = "";
-    osDraw();
+    if(dojo.byId('searchBox').value != '') { // Don't refresh on blank.
+        dojo.byId('searchBox').value = '';
+        doSearch();
+    }
 }
 
 function osToJson() {
@@ -185,11 +188,13 @@ function osToJson() {
     osJSONOutDialog.show();
 }
 
+// Copies the text from the json output to the clipboard.
 function osJsonOutputCopy() {
     document.popupNode = dojo.byId('jsonOutput');
-    document.getElementById('jsonOutput').focus();
-    document.getElementById('jsonOutput').select();
+    dojo.byId('jsonOutput').focus();
+    dojo.byId('jsonOutput').select();
     util.clipboard.copy();
+    showAlert(dojo.byId('os-copy').innerHTML);
 }
 
 function osJsonInputPaste() {
@@ -451,8 +456,6 @@ function osEditSetting(deleteMe) {
 }
 
 function osUpdateSetting(obj, context, name) {
-    
-    
     fieldmapper.standardRequest(
         ['open-ils.actor', 'open-ils.actor.org_unit.settings.update'],
         {   async: true,
@@ -466,3 +469,58 @@ function osUpdateSetting(obj, context, name) {
         }
     );
 }
+
+function osGetHistoryLink(rowIdx) {
+    var data = this.grid.model.getRow(rowIdx);
+    if(!data) return '';
+    return data.name;
+}
+
+function osFormatHistoryLink(name) {
+    return this.value.replace(/SETTING/, name);
+}
+
+function osLaunchHistory(name) {
+    showProcessingDialog(true);
+    
+    dojo.byId('osHistName').innerHTML = osSettings[name].label;
+    
+    var data = dojo.byId('histTitle').innerHTML;
+    var thisHist = pcrud.search('coustl', {'field_name':name});
+    for(var i in thisHist) {
+         data += "<tr><td>" + thisHist[i].date_applied() + "</td><td>" + 
+         thisHist[i].org() + "</td><td>" + thisHist[i].original_value() +
+         "</td><td>" + thisHist[i].new_value() + "</td></tr>";
+    }
+        
+    dojo.byId('historyData').innerHTML = data;
+    
+    showProcessingDialog(false);
+    osHistDialog.show();
+
+}
+
+function showAlert(message, timeout) {
+     if(timeout == null)
+        timeout = 3000;
+        
+    dojo.removeClass('msgCont', 'hidden');
+    
+    dojo.byId('msgInner').innerHTML = message;
+    
+    var fadeArgs = {
+        node: "msgCont"
+    };
+    dojo.fadeIn(fadeArgs).play();
+    
+    window.setTimeout('hideAlert()', timeout);
+    
+}
+
+function hideAlert() {
+    var fadeArgs = {
+        node: "msgCont"
+    };
+    dojo.fadeOut(fadeArgs).play();
+    dojo.addClass('msgCont', 'hidden');
+}
diff --git a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.xhtml b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.xhtml
index 96a463a..58ba5cc 100644
--- a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.xhtml
+++ b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.xhtml
@@ -29,31 +29,76 @@
         <script type="text/javascript" src='org_unit_settings.js' />
         <script type="text/javascript" src="/xul/server/util/clipboard.js" />
         <style type="text/css">
+            h1 {
+                display:inline;
+                padding:5px;
+            } 
+            
             .form_table textarea {
                 width:500px;
                 height:15em;
             }
+            
+            #searchform {
+                display:inline;
+            }
+            
+            .message {
+                float:left;
+                left:-50%;
+                text-align:center;
+                
+                padding:5px;
+                
+                position:relative;
+                background-color:#D9E8F9;
+                
+                /*Standards compliant*/
+                border-bottom-left-radius:5px;
+                border-bottom-right-radius:5px;
+                
+                /*Old staff client compliant, It could be worse, we could be using IE!*/
+                -moz-border-radius-bottomleft:5px;
+                -moz-border-radius-bottomright:5px; 
+            }
+            
+            .message_container {
+                float:left;
+                left:50%;
+                top:0%;
+                position: absolute;
+                opacity:0;
+            }
+            
         </style>
     </head>
 
-    <body class="tundra tall">
-        <div dojoType="dijit.layout.LayoutContainer" orientation="vertical" class="tall">
-            <div dojoType="dijit.layout.ContentPane" layoutAlign='top'>
-                <h1>&staff.server.admin.org_unit_settings.title;</h1><br/>
-                <span>&staff.server.admin.org_unit_settings.context_loc;</span>
-                <span>
-                    <select dojoType="openils.widget.OrgUnitFilteringSelect" jsId='osContextSelector'
-                        searchAttr="shortname" autocomplete="true" labelAttr='shortname' onchange='osChangeContext();'> 
-                    </select>
-                </span>
-                <span>&staff.server.admin.org_unit_settings.uninherited;</span>
-                    <form onSubmit="return doSearch()">
-                        <input type="text" dojoType="dijit.form.TextBox" id="searchBox" />
-                        <button type="submit" dojoType='dijit.form.Button'>&staff.server.admin.org_unit_settings.filter;</button>
-                        <button dojoType='dijit.form.Button' onClick="clearSearch();">&staff.server.admin.org_unit_settings.clear_filter;</button>
+    <body class='tundra tall'>
+        <div dojoType='dijit.layout.LayoutContainer' orientation='vertical' class='tall'>
+            <div dojoType='dijit.layout.ContentPane' layoutAlign='top'>
+                <div id="toolbar1" dojoType="dijit.Toolbar">
+                    <strong>&staff.server.admin.org_unit_settings.title;</strong>
+                    
+                    <span dojoType="dijit.ToolbarSeparator" />
+                    
+                    <span>&staff.server.admin.org_unit_settings.context_loc;</span>
+                    <select dojoType='openils.widget.OrgUnitFilteringSelect' jsId='osContextSelector'
+                            searchAttr='shortname' autocomplete='true' labelAttr='shortname' onchange='osChangeContext();' />
+                    
+                    <span dojoType="dijit.ToolbarSeparator" />
+                    
+                    <form id='searchform' onSubmit='return doSearch()'>
+                            <input type='text' dojoType='dijit.form.TextBox' id='searchBox' />
+                            <button type='submit' dojoType='dijit.form.Button'>&staff.server.admin.org_unit_settings.filter;</button>
+                            <button dojoType='dijit.form.Button' onClick='clearSearch();'>&staff.server.admin.org_unit_settings.clear_filter;</button>
                     </form>
-                    <button dojoType='dijit.form.Button' onClick="osToJson();">&staff.server.admin.org_unit_settings.export;</button>
-                    <button dojoType='dijit.form.Button' onClick="osFromJson();">&staff.server.admin.org_unit_settings.import;</button>
+                    
+                    <span dojoType="dijit.ToolbarSeparator" />
+
+                    <button dojoType='dijit.form.Button' onClick='osToJson();'>&staff.server.admin.org_unit_settings.export;</button>
+                    <button dojoType='dijit.form.Button' onClick='osFromJson();'>&staff.server.admin.org_unit_settings.import;</button>
+                </div>
+                <span>&staff.server.admin.org_unit_settings.uninherited;</span>
             </div>
             <div dojoType="dijit.layout.ContentPane" layoutAlign='client'>
                 <div class='hide_me' id='no-perms'><b>&staff.server.admin.org_unit_settings.no_perms;</b></div>
@@ -68,6 +113,11 @@
                                 get: osGetEditLink, 
                                 formatter : osFormatEditLink
                             },
+                            {   name: '&staff.server.admin.org_unit_settings.history;', 
+                                value: '&lt;a href=&quot;javascript:void(0);&quot; onclick=&quot;osLaunchHistory(\'SETTING\');&quot;>&staff.server.admin.org_unit_settings.history;&lt;/a>',
+                                get: osGetHistoryLink, 
+                                formatter : osFormatHistoryLink
+                            },
                             {name: '&staff.server.admin.org_unit_settings.group;', get: osGetGridData, field:'grp'},
                             {name: '&staff.server.admin.org_unit_settings.setting;', get: osGetGridData, field:'label', width:'auto', styles:'text-align:left;'},
                             {name: '&staff.server.admin.org_unit_settings.context;', get: osGetGridData, field:'context'},
@@ -127,24 +177,46 @@
         <div id='noresults' class='hidden'>&staff.server.admin.org_unit_settings.no_results;</div>
         <span id='os-true' class='hidden'>&common.true;</span>
         <span id='os-false' class='hidden'>&common.false;</span>
+        <span id='os-copy' class='hidden'>&staff.server.admin.org_unit_settings.copy;</span>
         
         <!--Export Dialog-->
-        <div id="jsonOutputDialog" dojoType="dijit.Dialog" jsId='osJSONOutDialog' title="&staff.server.admin.org_unit_settings.export;">
-            <table class="form_table">
+        <div id='jsonOutputDialog' dojoType='dijit.Dialog' jsId='osJSONOutDialog' title='&staff.server.admin.org_unit_settings.export;'>
+            <table class='form_table'>
                 <tr><td>&staff.server.admin.org_unit_settings.export_copy_label;</td></tr>
-                <tr><td><textarea id="jsonOutput" /></td></tr>
+                <tr><td><textarea id='jsonOutput' /></td></tr>
                 <tr><td><button dojoType='dijit.form.Button' onclick='osJsonOutputCopy();'>&staff.server.admin.org_unit_settings.copy;</button></td></tr>
             </table>
         </div>
         
         <!--Import Dialog-->
-        <div id="jsonInputDialog" dojoType="dijit.Dialog" jsId='osJSONInDialog' title="&staff.server.admin.org_unit_settings.import;">
-            <table class="form_table">
+        <div id='jsonInputDialog' dojoType='dijit.Dialog' jsId='osJSONInDialog' title='&staff.server.admin.org_unit_settings.import;'>
+            <table class='form_table'>
                 <tr><td>&staff.server.admin.org_unit_settings.import_paste_label;</td></tr>
-                <tr><td><textarea id="jsonInput" /></td></tr>
-                <tr><td><button dojoType='dijit.form.Button' onclick='osJsonInputPaste();'>&staff.server.admin.org_unit_settings.paste;</button><button type="submit"  dojoType='dijit.form.Button' onclick='osFromJsonSubmit();'>&staff.server.admin.org_unit_settings.submit;</button></td></tr>
+                <tr><td><textarea id='jsonInput' /></td></tr>
+                <tr><td><button dojoType='dijit.form.Button' onclick='osJsonInputPaste();'>&staff.server.admin.org_unit_settings.paste;</button><button type='submit'  dojoType='dijit.form.Button' onclick='osFromJsonSubmit();'>&staff.server.admin.org_unit_settings.submit;</button></td></tr>
+            </table>
+        </div>
+        
+        <!--History Dialog-->
+        <div id="historyDialog" dojoType="dijit.Dialog" jsId="osHistDialog" title="&staff.server.admin.org_unit_settings.history;">
+            <span id='osHistName' />
+            
+            <!--Headers grabbed from this table are put in the next one by the js.-->
+            <table id="histTitle" class="hidden">
+                <tr>
+                    <td>&staff.server.admin.org_unit_settings.history_date;</td>
+                    <td>&staff.server.admin.org_unit_settings.history_unit;</td>
+                    <td>&staff.server.admin.org_unit_settings.history_orig;</td>
+                    <td>&staff.server.admin.org_unit_settings.history_new;</td>
+                </tr>
             </table>
+            
+            <table class="form_table" id="historyData" />
         </div>
         
+        <!--Displays alerts at the top of the screen, much nicer than alert() or dojo equiv.-->
+        <div class="message_container" id="msgCont">
+            <div class="message" id='msgInner' />
+        </div>
     </body>
 </html>
\ No newline at end of file

commit ddfdd0ce75aa04ec90d25785d671a5009d54d4b3
Author: Joseph Lewis <joehms22 at gmail.com>
Date:   Mon Jun 13 16:54:06 2011 -0600

    Added revision logging to oust, updated fm_IDL.xml to reflect that
    and changed org_unit_settings.js and org_unit_settings.xhtml to add some
    functionality of revisions.
    
    Signed-off-by: Joseph Lewis <joehms22 at gmail.com>
    Signed-off-by: Thomas Berezansky <tsbere at mvlc.org>
    Signed-off-by: Jason Etheridge <jason at esilibrary.com>

diff --git a/Open-ILS/examples/fm_IDL.xml b/Open-ILS/examples/fm_IDL.xml
index cbf09bd..2c1c186 100644
--- a/Open-ILS/examples/fm_IDL.xml
+++ b/Open-ILS/examples/fm_IDL.xml
@@ -9158,6 +9158,29 @@ SELECT  usr,
 		</permacrud>
 	</class>
 
+	<class id="coustl" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="config::org_unit_setting_type_log" oils_persist:tablename="config.org_unit_setting_type_log" reporter:label="Organizational Unit Setting Type Log">
+		<fields oils_persist:primary="date_applied">
+			<field name="date_applied" reporter:datatype="timestamp"/>
+			<field name="org" reporter:datatype="link"/>
+			<field name="original_value" reporter:datatype="text"/>
+			<field name="new_value" reporter:datatype="text"/>
+			<field name="field_name" reporter:datatype="link"/>
+		</fields>
+		<links>
+			<link field="field_name" reltype="has_a" key="name" map="" class="coust"/>
+			<link field="org" reltype="has_a" key="id" map="" class="aou"/>
+		</links>
+		<permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
+			<actions>
+				<create permission="ADMIN_ORG_UNIT_SETTING_TYPE" global_required="true"/>
+				<retrieve/>
+				<update permission="ADMIN_ORG_UNIT_SETTING_TYPE_LOG" global_required="true"/>
+				<delete permission="ADMIN_ORG_UNIT_SETTING_TYPE_LOG" global_required="true"/>
+			</actions>
+		</permacrud>
+	</class>
+
+
 	<!-- ********************************************************************************************************************* -->
 
 </IDL>
diff --git a/Open-ILS/src/sql/Pg/002.schema.config.sql b/Open-ILS/src/sql/Pg/002.schema.config.sql
index c29ae27..476cc2f 100644
--- a/Open-ILS/src/sql/Pg/002.schema.config.sql
+++ b/Open-ILS/src/sql/Pg/002.schema.config.sql
@@ -913,4 +913,53 @@ CREATE TABLE config.barcode_completion (
 
 CREATE TYPE evergreen.barcode_set AS (type TEXT, id BIGINT, barcode TEXT);
 
+-- Add support for logging, only keep the most recent five rows for each category. 
+
+
+CREATE TABLE config.org_unit_setting_type_log (
+    date_applied    TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW() PRIMARY KEY,
+    org             SERIAL    REFERENCES actor.org_unit (id),
+    original_value  TEXT,
+    new_value       TEXT,
+    field_name      TEXT      REFERENCES config.org_unit_setting_type (name)
+);
+
+CREATE OR REPLACE FUNCTION limit_oustl() RETURNS TRIGGER AS $oustl_limit$
+    BEGIN
+        -- Only keeps the most recent five settings changes.
+        DELETE FROM config.org_unit_setting_type_log WHERE field_name = NEW.field_name AND date_applied NOT IN 
+        (SELECT date_applied FROM config.org_unit_setting_type_log WHERE field_name = NEW.field_name ORDER BY date_applied DESC LIMIT 4);
+        
+        IF (TG_OP = 'UPDATE') THEN
+            RETURN NEW;
+        ELSIF (TG_OP = 'INSERT') THEN
+            RETURN NEW;
+        END IF;
+        RETURN NULL;
+    END;
+$oustl_limit$ LANGUAGE plpgsql;
+
+CREATE TRIGGER limit_logs_oust
+    BEFORE INSERT OR UPDATE ON config.org_unit_setting_type_log
+    FOR EACH ROW EXECUTE PROCEDURE limit_oustl();
+    
+
+-- Log each change in oust to oustl, so admins can see what they messed up if someting stops working.
+CREATE OR REPLACE FUNCTION ous_change_log() RETURNS TRIGGER AS $ous_change_log$
+    DECLARE
+    original TEXT;
+    BEGIN
+        -- Check for which setting is being updated, and log it.
+        SELECT INTO original value FROM actor.org_unit_setting WHERE name = NEW.name AND org_unit = NEW.org_unit;
+                
+        INSERT INTO config.org_unit_setting_type_log (org,original_value,new_value,field_name) VALUES (NEW.org_unit, original, NEW.value, NEW.name);
+        
+        RETURN NEW;
+    END;
+$ous_change_log$ LANGUAGE plpgsql;    
+
+CREATE TRIGGER log_ous_change
+    BEFORE INSERT OR UPDATE ON actor.org_unit_setting
+    FOR EACH ROW EXECUTE PROCEDURE ous_change_log();
+
 COMMIT;
diff --git a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
index daea519..e743534 100644
--- a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
+++ b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
@@ -27,6 +27,8 @@ var osEditAutoWidget;
 var perm_codes = {};
 var osGroups = {};
 var searchAssist = [];
+var pcrud;
+var osHistory = {};
 
 function osInit(data) {
     authtoken = new openils.CGI().param('ses') || dojo.cookie('ses');
@@ -34,10 +36,13 @@ function osInit(data) {
     contextOrg = user.user.ws_ou();
     openils.User.authtoken = authtoken;
     
-    var grps = new openils.PermaCrud({authtoken:authtoken}).retrieveAll('csg');
+    pcrud = new openils.PermaCrud({authtoken:authtoken});
+    
+    var grps = pcrud.retrieveAll('csg');
     dojo.forEach(grps, function(grp) { osGroups[grp.name()] = grp.label(); });
-
     
+    //osHistory = pcrud.retrieveAll('coustl');
+        
     var connect = function() { 
         dojo.connect(contextOrg, 'onChange', osChangeContext); 
 
@@ -442,10 +447,12 @@ function osEditSetting(deleteMe) {
             }
         }
     }
-    osUpdateSetting(obj, osEditContextSelector.getValue());
+    osUpdateSetting(obj, osEditContextSelector.getValue(), name);
 }
 
-function osUpdateSetting(obj, context) {
+function osUpdateSetting(obj, context, name) {
+    
+    
     fieldmapper.standardRequest(
         ['open-ils.actor', 'open-ils.actor.org_unit.settings.update'],
         {   async: true,
diff --git a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.xhtml b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.xhtml
index 4265fa7..96a463a 100644
--- a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.xhtml
+++ b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.xhtml
@@ -23,7 +23,7 @@
     <head>
         <title>&staff.server.admin.org_unit_settings.title;</title>
         <link type='text/css' rel='stylesheet' href='admin.css' />
-        <script type="text/javascript" src='/IDL2js?aou,aout,pgt,au,coust,aous,csg' />
+        <script type="text/javascript" src='/IDL2js?aou,aout,pgt,au,coust,aous,csg,coustl' />
         <script type="text/javascript" djConfig="parseOnLoad: true,isDebug:false" src="/js/dojo/dojo/dojo.js" />
         <script type="text/javascript" djConfig="parseOnLoad: true,isDebug:false" src="/js/dojo/dojo/openils_dojo.js" />
         <script type="text/javascript" src='org_unit_settings.js' />
@@ -35,6 +35,7 @@
             }
         </style>
     </head>
+
     <body class="tundra tall">
         <div dojoType="dijit.layout.LayoutContainer" orientation="vertical" class="tall">
             <div dojoType="dijit.layout.ContentPane" layoutAlign='top'>
@@ -51,9 +52,8 @@
                         <button type="submit" dojoType='dijit.form.Button'>&staff.server.admin.org_unit_settings.filter;</button>
                         <button dojoType='dijit.form.Button' onClick="clearSearch();">&staff.server.admin.org_unit_settings.clear_filter;</button>
                     </form>
-                        <button dojoType='dijit.form.Button' onClick="osToJson();">&staff.server.admin.org_unit_settings.export;</button>
-                        <button dojoType='dijit.form.Button' onClick="osFromJson();">&staff.server.admin.org_unit_settings.import;</button>
-
+                    <button dojoType='dijit.form.Button' onClick="osToJson();">&staff.server.admin.org_unit_settings.export;</button>
+                    <button dojoType='dijit.form.Button' onClick="osFromJson();">&staff.server.admin.org_unit_settings.import;</button>
             </div>
             <div dojoType="dijit.layout.ContentPane" layoutAlign='client'>
                 <div class='hide_me' id='no-perms'><b>&staff.server.admin.org_unit_settings.no_perms;</b></div>
@@ -75,7 +75,7 @@
                         ]]
                     }];
                 </script>
-                <div dojoType='dojox.Grid' jsId='osGrid'> </div>
+                <div dojoType='dojox.Grid' jsId='osGrid' />
             </div>
         </div>
 
@@ -118,12 +118,17 @@
                     </tr>
                 </tbody>
             </table>
-        </div> <!-- edit dialog -->
+        </div> <!-- /edit dialog -->
+        
+        <div dojoType="openils.widget.ProgressDialog" jsId="progressDialog" indeterminate="true" />
+        
+        <!--i18n, use the &translation; here, then grab innerHTML in JS later.-->
+        <div id='proci18n' class='hidden'>&staff.server.admin.org_unit_settings.processing;</div>
+        <div id='noresults' class='hidden'>&staff.server.admin.org_unit_settings.no_results;</div>
         <span id='os-true' class='hidden'>&common.true;</span>
         <span id='os-false' class='hidden'>&common.false;</span>
-        <div dojoType="openils.widget.ProgressDialog" jsId="progressDialog" indeterminate="true"></div>
-        <div id='proci18n' class="hidden">&staff.server.admin.org_unit_settings.processing;</div>
-        <div id="noresults" class="hidden">&staff.server.admin.org_unit_settings.no_results;</div>
+        
+        <!--Export Dialog-->
         <div id="jsonOutputDialog" dojoType="dijit.Dialog" jsId='osJSONOutDialog' title="&staff.server.admin.org_unit_settings.export;">
             <table class="form_table">
                 <tr><td>&staff.server.admin.org_unit_settings.export_copy_label;</td></tr>
@@ -131,6 +136,8 @@
                 <tr><td><button dojoType='dijit.form.Button' onclick='osJsonOutputCopy();'>&staff.server.admin.org_unit_settings.copy;</button></td></tr>
             </table>
         </div>
+        
+        <!--Import Dialog-->
         <div id="jsonInputDialog" dojoType="dijit.Dialog" jsId='osJSONInDialog' title="&staff.server.admin.org_unit_settings.import;">
             <table class="form_table">
                 <tr><td>&staff.server.admin.org_unit_settings.import_paste_label;</td></tr>
@@ -138,5 +145,6 @@
                 <tr><td><button dojoType='dijit.form.Button' onclick='osJsonInputPaste();'>&staff.server.admin.org_unit_settings.paste;</button><button type="submit"  dojoType='dijit.form.Button' onclick='osFromJsonSubmit();'>&staff.server.admin.org_unit_settings.submit;</button></td></tr>
             </table>
         </div>
+        
     </body>
 </html>
\ No newline at end of file

commit 0bba2e0c63ba4ed126bf6a77fb1e51ee73a28912
Author: Joseph Lewis <joehms22 at gmail.com>
Date:   Thu Jun 9 15:14:22 2011 -0600

    Updated the staff_client code to be much better at searching, renamed the sql upgrade script b/c 0549 was just snatched up!
    
    Signed-off-by: Joseph Lewis <joehms22 at gmail.com>
    Signed-off-by: Thomas Berezansky <tsbere at mvlc.org>
    Signed-off-by: Jason Etheridge <jason at esilibrary.com>

diff --git a/Open-ILS/src/sql/Pg/upgrade/0549.data.seed_values_admin_cleanup.sql b/Open-ILS/src/sql/Pg/upgrade/0550.data.seed_values_ous_groups.sql
similarity index 93%
rename from Open-ILS/src/sql/Pg/upgrade/0549.data.seed_values_admin_cleanup.sql
rename to Open-ILS/src/sql/Pg/upgrade/0550.data.seed_values_ous_groups.sql
index af87cdf..bbff1ef 100644
--- a/Open-ILS/src/sql/Pg/upgrade/0549.data.seed_values_admin_cleanup.sql
+++ b/Open-ILS/src/sql/Pg/upgrade/0550.data.seed_values_ous_groups.sql
@@ -1,24 +1,25 @@
+-- Add groups to config settings.
 BEGIN;
 
-INSERT INTO config.upgrade_log (version) VALUES ('0549'); --dbs
+INSERT INTO config.upgrade_log (version) VALUES ('0550'); --dbs
 
 -- config settings group
 INSERT INTO config.settings_group (name, label) VALUES
-('sys', 'System'),
-('finance','Finances'),
-('holds','Holds'),
-('circ','Circulation'),
-('self','Self Check'),
-('opac','OPAC'),
-('gui','GUI'),
-('lib','Library'),
-('sec','Security'),
-('prog','Program'),
-('glob','Global'),
-('credit','Credit Card Processing'),
-('cat','Cataloging'),
-('serial','Serials'),
-('recall','Recalls');
+('sys', oils_i18n_gettext('config.settings_group.system', 'System', 'coust', 'label')),
+('gui', oils_i18n_gettext('config.settings_group.gui', 'GUI', 'coust', 'label')),
+('lib', oils_i18n_gettext('config.settings_group.lib', 'Library', 'coust', 'label')),
+('sec', oils_i18n_gettext('config.settings_group.sec', 'Security', 'coust', 'label')),
+('cat', oils_i18n_gettext('config.settings_group.cat', 'Cataloging', 'coust', 'label')),
+('holds', oils_i18n_gettext('config.settings_group.holds', 'Holds', 'coust', 'label')),
+('circ', oils_i18n_gettext('config.settings_group.circulation', 'Circulation', 'coust', 'label')),
+('self', oils_i18n_gettext('config.settings_group.self', 'Self Check', 'coust', 'label')),
+('opac', oils_i18n_gettext('config.settings_group.opac', 'OPAC', 'coust', 'label')),
+('prog', oils_i18n_gettext('config.settings_group.program', 'Program', 'coust', 'label')),
+('glob', oils_i18n_gettext('config.settings_group.global', 'Global', 'coust', 'label')),
+('finance', oils_i18n_gettext('config.settings_group.finances', 'Finanaces', 'coust', 'label')),
+('credit', oils_i18n_gettext('config.settings_group.ccp', 'Credit Card Processing', 'coust', 'label')),
+('serial', oils_i18n_gettext('config.settings_group.serial', 'Serials', 'coust', 'label')),
+('recall', oils_i18n_gettext('config.settings_group.recall', 'Recalls', 'coust', 'label'));
 
 -- Set up all of the config.org_unit_setting_type[s] with a proper group.
 UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.bib.delete_on_no_copy_via_acq_lineitem_cancel';
diff --git a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
index d243c18..daea519 100644
--- a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
+++ b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
@@ -105,16 +105,15 @@ function osDraw(specific_setting) {
                 var tmp = "" + type.label() + "" + type.description() + "" + type.fm_class() + "" + 
                           osGroups[type.grp()] + "" + type.name();
                 
-                searchAssist[type.name()] = tmp.toLowerCase().replace(/[^a-z0-9]+/, '');
+                searchAssist[type.name()] = tmp.toLowerCase().replace(/[^a-z0-9]+/g, '');
             }
         );
         
         for(var key in osSettings)
             names.push(key);
     }
-
-    osDrawNames(names);
     
+    osDrawNames(names);
 }
 
 //Limits those functions seen to the ones that have similar text to 
@@ -122,14 +121,24 @@ function osDraw(specific_setting) {
 function osLimitSeen(text) {
     showProcessingDialog(true);
     
-    text = text.toLowerCase().replace(/[^a-z0-9]+/, '');
+    text = text.split(' ');
+    
+    for(t in text)
+        text[t] = text[t].toLowerCase().replace(/[^a-z0-9]+/g, '');
     
-    console.log(text);
+    numTerms = text.length;
     
     var names = [];
-    for(var n in searchAssist)
-        if(searchAssist[n].indexOf(text) != -1)
+    for(var n in searchAssist) {
+        var numFound = 0;
+        
+        for(var t in text) 
+            if(searchAssist[n].indexOf(text[t]) != -1)
+                numFound++;
+                
+        if(numFound == numTerms)
             names.push(n);
+    }
     
     //Don't update on an empty list as this causes bizarre errors.
     if(names.length == 0) {

commit e997eb021386bbce171a5b8fafa3d509b8bf9e54
Author: Joseph Lewis <joehms22 at gmail.com>
Date:   Thu Jun 9 13:17:16 2011 -0600

    Finished import/export of settings.
    
    Signed-off-by: Joseph Lewis <joehms22 at gmail.com>
    Signed-off-by: Thomas Berezansky <tsbere at mvlc.org>
    Signed-off-by: Jason Etheridge <jason at esilibrary.com>

diff --git a/Open-ILS/web/opac/locale/en-US/lang.dtd b/Open-ILS/web/opac/locale/en-US/lang.dtd
index 3c56d5d..84952d4 100644
--- a/Open-ILS/web/opac/locale/en-US/lang.dtd
+++ b/Open-ILS/web/opac/locale/en-US/lang.dtd
@@ -1810,6 +1810,13 @@
 <!ENTITY staff.server.admin.org_unit_settings.context "Context">
 <!ENTITY staff.server.admin.org_unit_settings.value "Value">
 <!ENTITY staff.server.admin.org_unit_settings.edit "Edit">
+<!ENTITY staff.server.admin.org_unit_settings.export "Export">
+<!ENTITY staff.server.admin.org_unit_settings.import "Import">
+<!ENTITY staff.server.admin.org_unit_settings.export_copy_label "Copy this to your clipboard and save it to a file to export the settings.">
+<!ENTITY staff.server.admin.org_unit_settings.import_paste_label "Paste in your exported settings.">
+<!ENTITY staff.server.admin.org_unit_settings.submit "Submit">
+<!ENTITY staff.server.admin.org_unit_settings.copy "Copy">
+<!ENTITY staff.server.admin.org_unit_settings.paste "Paste">
 <!ENTITY staff.server.admin.offline.xacts.caption "Offline Sessions">
 <!ENTITY staff.server.admin.offline.xacts.refresh.accesskey "R">
 <!ENTITY staff.server.admin.offline.xacts.create.label "Create">
diff --git a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
index a1a5c6a..d243c18 100644
--- a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
+++ b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
@@ -3,6 +3,8 @@ dojo.require('dijit.layout.LayoutContainer');
 dojo.require('dijit.layout.ContentPane');
 dojo.require('dijit.form.FilteringSelect');
 dojo.require('dijit.Dialog');
+dojo.require('dijit.form.Textarea');
+dojo.require('dijit.form.ComboBox');
 dojo.require('dojox.grid.Grid');
 dojo.require('fieldmapper.Fieldmapper');
 dojo.require('fieldmapper.dojoData');
@@ -156,11 +158,71 @@ function clearSearch() {
 }
 
 function osToJson() {
-    //console.log(dojo.toJson(ouSettingValues));
-    dojo.byId('jsonOutput').value = dojo.toJson(ouSettingValues);
+    var out = dojo.fromJson(dojo.toJson(ouSettingValues)); // Easy deep copy
+    var context = osContextSelector.getValue();
+    
+    // Set all of the nulls in the outputs to be part of the current org
+    // this keeps from overwriting later if this file is transfered to another lib.
+    for(key in out)
+        if(out[key] == null)
+            out[key] = {'org':context, 'value':null};
+    
+    dojo.byId('jsonOutput').value = dojo.toJson(out);
     osJSONOutDialog.show();
 }
 
+function osJsonOutputCopy() {
+    document.popupNode = dojo.byId('jsonOutput');
+    document.getElementById('jsonOutput').focus();
+    document.getElementById('jsonOutput').select();
+    util.clipboard.copy();
+}
+
+function osJsonInputPaste() {
+    document.popupNode = dojo.byId('jsonInput');
+    document.popupNode.focus();
+    document.popupNode.select();
+    util.clipboard.paste();
+}
+
+function osFromJson() {
+     dojo.byId('jsonInput').value = '';
+     osJSONInDialog.show();
+}
+
+function osFromJsonSubmit() {
+    var input = dojo.byId('jsonInput').value;
+    var from = dojo.fromJson(input);
+    
+    osJSONInDialog.hide();
+
+    showProcessingDialog(true);
+    for(key in from) {
+        
+        //Check that there isn't already set to the same value (speed increase);
+        if( ouSettingValues[key] == null && 
+            from[key]['value'] == null &&
+            osContextSelector.getValue() == from[key]['org'])
+            continue;
+                
+        if( ouSettingValues[key] != null && 
+            ouSettingValues[key]['value'] == from[key]['value'] &&
+            ouSettingValues[key]['org'] == from[key]['org'])
+            continue;
+        
+        var obj = {};
+        var context;
+        
+        if(from[key] != null) { 
+            obj[key] = from[key]['value'];
+            context  = from[key]['org'];
+        }
+        
+        osUpdateSetting(obj, context);
+    }
+    showProcessingDialog(false);
+}
+
 //Draws the grid based upon a given array of items to draw.
 function osDrawNames(names) {
     fieldmapper.standardRequest(
@@ -371,11 +433,14 @@ function osEditSetting(deleteMe) {
             }
         }
     }
+    osUpdateSetting(obj, osEditContextSelector.getValue());
+}
 
+function osUpdateSetting(obj, context) {
     fieldmapper.standardRequest(
         ['open-ils.actor', 'open-ils.actor.org_unit.settings.update'],
         {   async: true,
-            params: [authtoken, osEditContextSelector.getValue(), obj],
+            params: [authtoken, context, obj],
             oncomplete: function(r) {
                 var res = r.recv().content();
                 if(e = openils.Event.parse(res))
diff --git a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.xhtml b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.xhtml
index 5a3c396..4265fa7 100644
--- a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.xhtml
+++ b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.xhtml
@@ -22,11 +22,18 @@
 <html xmlns='http://www.w3.org/1999/xhtml'>
     <head>
         <title>&staff.server.admin.org_unit_settings.title;</title>
-        <link type='text/css' rel='stylesheet' href='admin.css'/>
-        <script type="text/javascript" src='/IDL2js?aou,aout,pgt,au,coust,aous,csg'></script>
-        <script type="text/javascript" djConfig="parseOnLoad: true,isDebug:false" src="/js/dojo/dojo/dojo.js"></script>
-        <script type="text/javascript" djConfig="parseOnLoad: true,isDebug:false" src="/js/dojo/dojo/openils_dojo.js"></script>
-        <script type="text/javascript" src='org_unit_settings.js'></script>
+        <link type='text/css' rel='stylesheet' href='admin.css' />
+        <script type="text/javascript" src='/IDL2js?aou,aout,pgt,au,coust,aous,csg' />
+        <script type="text/javascript" djConfig="parseOnLoad: true,isDebug:false" src="/js/dojo/dojo/dojo.js" />
+        <script type="text/javascript" djConfig="parseOnLoad: true,isDebug:false" src="/js/dojo/dojo/openils_dojo.js" />
+        <script type="text/javascript" src='org_unit_settings.js' />
+        <script type="text/javascript" src="/xul/server/util/clipboard.js" />
+        <style type="text/css">
+            .form_table textarea {
+                width:500px;
+                height:15em;
+            }
+        </style>
     </head>
     <body class="tundra tall">
         <div dojoType="dijit.layout.LayoutContainer" orientation="vertical" class="tall">
@@ -44,7 +51,9 @@
                         <button type="submit" dojoType='dijit.form.Button'>&staff.server.admin.org_unit_settings.filter;</button>
                         <button dojoType='dijit.form.Button' onClick="clearSearch();">&staff.server.admin.org_unit_settings.clear_filter;</button>
                     </form>
-                        <button dojoType='dijit.form.Button' onClick="osToJson();">Output</button>
+                        <button dojoType='dijit.form.Button' onClick="osToJson();">&staff.server.admin.org_unit_settings.export;</button>
+                        <button dojoType='dijit.form.Button' onClick="osFromJson();">&staff.server.admin.org_unit_settings.import;</button>
+
             </div>
             <div dojoType="dijit.layout.ContentPane" layoutAlign='client'>
                 <div class='hide_me' id='no-perms'><b>&staff.server.admin.org_unit_settings.no_perms;</b></div>
@@ -115,10 +124,18 @@
         <div dojoType="openils.widget.ProgressDialog" jsId="progressDialog" indeterminate="true"></div>
         <div id='proci18n' class="hidden">&staff.server.admin.org_unit_settings.processing;</div>
         <div id="noresults" class="hidden">&staff.server.admin.org_unit_settings.no_results;</div>
-        <div id="jsonoutput" class='hidden'  dojoType="dijit.Dialog" jsId='osJSONOutDialog'>
-            <table>
-            <tr><td>Copy this to your clipboard and save it to a file to export the settings.</td></tr>
-            <tr><td><textarea id="jsonOutput"></textarea></td></tr>
+        <div id="jsonOutputDialog" dojoType="dijit.Dialog" jsId='osJSONOutDialog' title="&staff.server.admin.org_unit_settings.export;">
+            <table class="form_table">
+                <tr><td>&staff.server.admin.org_unit_settings.export_copy_label;</td></tr>
+                <tr><td><textarea id="jsonOutput" /></td></tr>
+                <tr><td><button dojoType='dijit.form.Button' onclick='osJsonOutputCopy();'>&staff.server.admin.org_unit_settings.copy;</button></td></tr>
+            </table>
+        </div>
+        <div id="jsonInputDialog" dojoType="dijit.Dialog" jsId='osJSONInDialog' title="&staff.server.admin.org_unit_settings.import;">
+            <table class="form_table">
+                <tr><td>&staff.server.admin.org_unit_settings.import_paste_label;</td></tr>
+                <tr><td><textarea id="jsonInput" /></td></tr>
+                <tr><td><button dojoType='dijit.form.Button' onclick='osJsonInputPaste();'>&staff.server.admin.org_unit_settings.paste;</button><button type="submit"  dojoType='dijit.form.Button' onclick='osFromJsonSubmit();'>&staff.server.admin.org_unit_settings.submit;</button></td></tr>
             </table>
         </div>
     </body>

commit d94433ac4283c8caf481424612e25aa9ac01e833
Author: Joseph Lewis <joehms22 at gmail.com>
Date:   Wed Jun 8 14:07:27 2011 -0600

    Updated to include search.
    
    Signed-off-by: Joseph Lewis <joehms22 at gmail.com>
    Signed-off-by: Thomas Berezansky <tsbere at mvlc.org>
    Signed-off-by: Jason Etheridge <jason at esilibrary.com>

diff --git a/Open-ILS/web/opac/locale/en-US/lang.dtd b/Open-ILS/web/opac/locale/en-US/lang.dtd
index 4003508..3c56d5d 100644
--- a/Open-ILS/web/opac/locale/en-US/lang.dtd
+++ b/Open-ILS/web/opac/locale/en-US/lang.dtd
@@ -1795,12 +1795,21 @@
 <!ENTITY staff.server.admin.do_not_auto_attempt_print_setting.transit_slip "Transit Slip">
 <!ENTITY staff.server.admin.do_not_auto_attempt_print_setting.hold_transit_slip "Hold/Transit Slip">
 <!ENTITY staff.server.admin.org_unit_settings.title "Organization Unit Settings">
-<!ENTITY staff.server.admin.org_unit_settings.context "Context Location">
+<!ENTITY staff.server.admin.org_unit_settings.context_loc "Context Location">
 <!ENTITY staff.server.admin.org_unit_settings.uninherited " * Indicates the setting is not inherited from the parent org unit at run time">
 <!ENTITY staff.server.admin.org_unit_settings.no_perms "You do not have permission to view org unit settings">
 <!ENTITY staff.server.admin.org_unit_settings.edit_setting "Edit Setting">
 <!ENTITY staff.server.admin.org_unit_settings.delete_setting "Delete Setting">
 <!ENTITY staff.server.admin.org_unit_settings.update_setting "Update Setting">
+<!ENTITY staff.server.admin.org_unit_settings.processing "Processing...">
+<!ENTITY staff.server.admin.org_unit_settings.filter "Filter">
+<!ENTITY staff.server.admin.org_unit_settings.clear_filter "Clear Filter">
+<!ENTITY staff.server.admin.org_unit_settings.no_results "There are no results for your filter.">
+<!ENTITY staff.server.admin.org_unit_settings.group "Group">
+<!ENTITY staff.server.admin.org_unit_settings.setting "Setting">
+<!ENTITY staff.server.admin.org_unit_settings.context "Context">
+<!ENTITY staff.server.admin.org_unit_settings.value "Value">
+<!ENTITY staff.server.admin.org_unit_settings.edit "Edit">
 <!ENTITY staff.server.admin.offline.xacts.caption "Offline Sessions">
 <!ENTITY staff.server.admin.offline.xacts.refresh.accesskey "R">
 <!ENTITY staff.server.admin.offline.xacts.create.label "Create">
diff --git a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
index 696c8e7..a1a5c6a 100644
--- a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
+++ b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
@@ -1,12 +1,12 @@
 dojo.require('fieldmapper.AutoIDL');
-dojo.require("dijit.layout.LayoutContainer");
-dojo.require("dijit.layout.ContentPane");
+dojo.require('dijit.layout.LayoutContainer');
+dojo.require('dijit.layout.ContentPane');
 dojo.require('dijit.form.FilteringSelect');
 dojo.require('dijit.Dialog');
-dojo.require("dojox.grid.Grid");
-dojo.require("fieldmapper.Fieldmapper");
-dojo.require("fieldmapper.dojoData");
-dojo.require("fieldmapper.OrgUtils");
+dojo.require('dojox.grid.Grid');
+dojo.require('fieldmapper.Fieldmapper');
+dojo.require('fieldmapper.dojoData');
+dojo.require('fieldmapper.OrgUtils');
 dojo.require('dojo.cookie');
 dojo.require('openils.CGI');
 dojo.require('openils.User');
@@ -24,6 +24,7 @@ var ouSettingValues = {};
 var osEditAutoWidget;
 var perm_codes = {};
 var osGroups = {};
+var searchAssist = [];
 
 function osInit(data) {
     authtoken = new openils.CGI().param('ses') || dojo.cookie('ses');
@@ -66,8 +67,16 @@ function osInit(data) {
 }
 dojo.addOnLoad(osInit);
 
+function showProcessingDialog(toggle) {
+    var proc = dojo.byId('proci18n').innerHTML;
+    if(toggle)
+        progressDialog.show(true, proc);
+    else
+        progressDialog.hide();
+}
+
 function osDraw(specific_setting) {
-    progressDialog.show(true, "Processing..."); /* FIXME: I18N */
+    showProcessingDialog(true);
 
     var names = [];
     if (specific_setting) {
@@ -78,6 +87,8 @@ function osDraw(specific_setting) {
     } else {
         var types = new openils.PermaCrud({authtoken:authtoken}).retrieveAll('coust');
 
+        searchAssist =  [];
+        
         dojo.forEach(types, 
             function(type) {
                 osSettings[type.name()] = {
@@ -88,6 +99,11 @@ function osDraw(specific_setting) {
                     update_perm : type.update_perm(),
                     grp : osGroups[type.grp()]
                 }
+                
+                var tmp = "" + type.label() + "" + type.description() + "" + type.fm_class() + "" + 
+                          osGroups[type.grp()] + "" + type.name();
+                
+                searchAssist[type.name()] = tmp.toLowerCase().replace(/[^a-z0-9]+/, '');
             }
         );
         
@@ -95,6 +111,58 @@ function osDraw(specific_setting) {
             names.push(key);
     }
 
+    osDrawNames(names);
+    
+}
+
+//Limits those functions seen to the ones that have similar text to 
+//that which is provided. Not case sensitive.
+function osLimitSeen(text) {
+    showProcessingDialog(true);
+    
+    text = text.toLowerCase().replace(/[^a-z0-9]+/, '');
+    
+    console.log(text);
+    
+    var names = [];
+    for(var n in searchAssist)
+        if(searchAssist[n].indexOf(text) != -1)
+            names.push(n);
+    
+    //Don't update on an empty list as this causes bizarre errors.
+    if(names.length == 0) {
+        showProcessingDialog(false);
+        
+        var noresults = dojo.byId('noresults').innerHTML;
+        myDialog = new dijit.Dialog({ content: noresults});
+        myDialog.show();
+        return;
+    }
+    
+    ouSettingValues = {}; // Clear the values.
+    osDrawNames(names);
+}
+
+function doSearch() {
+    var query = dojo.byId("searchBox").value;
+    osLimitSeen(query);
+    
+    return false; //Keep form from submitting
+}
+
+function clearSearch() {
+    dojo.byId("searchBox").value = "";
+    osDraw();
+}
+
+function osToJson() {
+    //console.log(dojo.toJson(ouSettingValues));
+    dojo.byId('jsonOutput').value = dojo.toJson(ouSettingValues);
+    osJSONOutDialog.show();
+}
+
+//Draws the grid based upon a given array of items to draw.
+function osDrawNames(names) {
     fieldmapper.standardRequest(
         [   'open-ils.actor', 
             'open-ils.actor.ou_setting.ancestor_default.batch'],
@@ -107,7 +175,8 @@ function osDraw(specific_setting) {
                 for(var key in data)
                     ouSettingValues[key] = data[key];
                 osLoadGrid(ouSettingValues);
-                progressDialog.hide();
+                
+                showProcessingDialog(false);
             }
         }
     );
@@ -316,4 +385,3 @@ function osEditSetting(deleteMe) {
         }
     );
 }
-
diff --git a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.xhtml b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.xhtml
index 16cdabf..5a3c396 100644
--- a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.xhtml
+++ b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.xhtml
@@ -32,13 +32,19 @@
         <div dojoType="dijit.layout.LayoutContainer" orientation="vertical" class="tall">
             <div dojoType="dijit.layout.ContentPane" layoutAlign='top'>
                 <h1>&staff.server.admin.org_unit_settings.title;</h1><br/>
-                <span>&staff.server.admin.org_unit_settings.context;</span>
+                <span>&staff.server.admin.org_unit_settings.context_loc;</span>
                 <span>
                     <select dojoType="openils.widget.OrgUnitFilteringSelect" jsId='osContextSelector'
                         searchAttr="shortname" autocomplete="true" labelAttr='shortname' onchange='osChangeContext();'> 
                     </select>
                 </span>
                 <span>&staff.server.admin.org_unit_settings.uninherited;</span>
+                    <form onSubmit="return doSearch()">
+                        <input type="text" dojoType="dijit.form.TextBox" id="searchBox" />
+                        <button type="submit" dojoType='dijit.form.Button'>&staff.server.admin.org_unit_settings.filter;</button>
+                        <button dojoType='dijit.form.Button' onClick="clearSearch();">&staff.server.admin.org_unit_settings.clear_filter;</button>
+                    </form>
+                        <button dojoType='dijit.form.Button' onClick="osToJson();">Output</button>
             </div>
             <div dojoType="dijit.layout.ContentPane" layoutAlign='client'>
                 <div class='hide_me' id='no-perms'><b>&staff.server.admin.org_unit_settings.no_perms;</b></div>
@@ -48,15 +54,15 @@
                     var osGridLayout = [{
                         defaultCell: {styles: 'text-align: center;'},
                         cells : [[
-                            {   name: 'Edit', 
-                                value: '&lt;a href=&quot;javascript:void(0);&quot; onclick=&quot;osLaunchEditor(\'SETTING\');&quot;>Edit&lt;/a>',
+                            {   name: '&staff.server.admin.org_unit_settings.edit;', 
+                                value: '&lt;a href=&quot;javascript:void(0);&quot; onclick=&quot;osLaunchEditor(\'SETTING\');&quot;>&staff.server.admin.org_unit_settings.edit;&lt;/a>',
                                 get: osGetEditLink, 
                                 formatter : osFormatEditLink
                             },
-                            {name: 'Group', get: osGetGridData, field:'grp'},
-                            {name: 'Setting', get: osGetGridData, field:'label', width:'auto', styles:'text-align:left;'},
-                            {name: 'Context', get: osGetGridData, field:'context'},
-                            {name: 'Value', get: osGetGridData, field:'value', width:'auto'},
+                            {name: '&staff.server.admin.org_unit_settings.group;', get: osGetGridData, field:'grp'},
+                            {name: '&staff.server.admin.org_unit_settings.setting;', get: osGetGridData, field:'label', width:'auto', styles:'text-align:left;'},
+                            {name: '&staff.server.admin.org_unit_settings.context;', get: osGetGridData, field:'context'},
+                            {name: '&staff.server.admin.org_unit_settings.value;', get: osGetGridData, field:'value', width:'auto'},
                         ]]
                     }];
                 </script>
@@ -73,7 +79,7 @@
                 </thead>
                 <tbody>
                     <tr>
-                        <td>Context</td>
+                        <td>&staff.server.admin.org_unit_settings.context;</td>
                         <td> 
                             <select dojoType="openils.widget.OrgUnitFilteringSelect" jsId='osEditContextSelector'
                                 searchAttr="shortname" autocomplete="true" labelAttr='shortname'> 
@@ -81,7 +87,7 @@
                         </td>
                     </tr>
                     <tr>
-                        <td>Value</td>
+                        <td>&staff.server.admin.org_unit_settings.value;</td>
                         <td>
                             <input dojoType='dijit.form.TextBox' jsId='osEditTextBox'/>
                             <input dojoType='dijit.form.CurrencyTextBox' jsId='osEditCurrencyTextBox'/>
@@ -107,7 +113,13 @@
         <span id='os-true' class='hidden'>&common.true;</span>
         <span id='os-false' class='hidden'>&common.false;</span>
         <div dojoType="openils.widget.ProgressDialog" jsId="progressDialog" indeterminate="true"></div>
-        <div class="hidden"></div>
+        <div id='proci18n' class="hidden">&staff.server.admin.org_unit_settings.processing;</div>
+        <div id="noresults" class="hidden">&staff.server.admin.org_unit_settings.no_results;</div>
+        <div id="jsonoutput" class='hidden'  dojoType="dijit.Dialog" jsId='osJSONOutDialog'>
+            <table>
+            <tr><td>Copy this to your clipboard and save it to a file to export the settings.</td></tr>
+            <tr><td><textarea id="jsonOutput"></textarea></td></tr>
+            </table>
+        </div>
     </body>
-</html>
-
+</html>
\ No newline at end of file
diff --git a/Open-ILS/xul/staff_client/server/locale/en-US/common.properties b/Open-ILS/xul/staff_client/server/locale/en-US/common.properties
index 3968a6f..f73ab08 100644
--- a/Open-ILS/xul/staff_client/server/locale/en-US/common.properties
+++ b/Open-ILS/xul/staff_client/server/locale/en-US/common.properties
@@ -20,6 +20,7 @@ common.unimplemented=Not yet implemented
 common.yes=Yes
 common.no=No
 common.check_to_confirm=Check here to confirm this message
+common.processing=Processing
 lang.version=remote v1
 openils.global_util.clear_cache.error=Problem clearing the cache: %1$s
 openils.global_util.clipboard.error=Clipboard action failed: %1$s

commit 9bc32a7f257fc68f79bc3fd6004fda799f8697d7
Author: Joseph Lewis <joehms22 at gmail.com>
Date:   Tue Jun 7 11:34:20 2011 -0600

    Added Tags support in the org_unit_settings display page.
    
    Signed-off-by: Joseph Lewis <joehms22 at gmail.com>
    Signed-off-by: Thomas Berezansky <tsbere at mvlc.org>
    Signed-off-by: Jason Etheridge <jason at esilibrary.com>

diff --git a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
index 31a6a4a..696c8e7 100644
--- a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
+++ b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
@@ -23,13 +23,18 @@ var osSettings = {};
 var ouSettingValues = {};
 var osEditAutoWidget;
 var perm_codes = {};
+var osGroups = {};
 
 function osInit(data) {
     authtoken = new openils.CGI().param('ses') || dojo.cookie('ses');
     user = new openils.User({authtoken:authtoken});
     contextOrg = user.user.ws_ou();
     openils.User.authtoken = authtoken;
+    
+    var grps = new openils.PermaCrud({authtoken:authtoken}).retrieveAll('csg');
+    dojo.forEach(grps, function(grp) { osGroups[grp.name()] = grp.label(); });
 
+    
     var connect = function() { 
         dojo.connect(contextOrg, 'onChange', osChangeContext); 
 
@@ -71,7 +76,6 @@ function osDraw(specific_setting) {
             names.push(key);
 
     } else {
-
         var types = new openils.PermaCrud({authtoken:authtoken}).retrieveAll('coust');
 
         dojo.forEach(types, 
@@ -81,7 +85,8 @@ function osDraw(specific_setting) {
                     desc : type.description(),
                     type : type.datatype(),
                     fm_class : type.fm_class(),
-                    update_perm : type.update_perm()
+                    update_perm : type.update_perm(),
+                    grp : osGroups[type.grp()]
                 }
             }
         );
diff --git a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.xhtml b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.xhtml
index 017ab39..16cdabf 100644
--- a/Open-ILS/xul/staff_client/server/admin/org_unit_settings.xhtml
+++ b/Open-ILS/xul/staff_client/server/admin/org_unit_settings.xhtml
@@ -23,7 +23,7 @@
     <head>
         <title>&staff.server.admin.org_unit_settings.title;</title>
         <link type='text/css' rel='stylesheet' href='admin.css'/>
-        <script type="text/javascript" src='/IDL2js?aou,aout,pgt,au,coust,aous'></script>
+        <script type="text/javascript" src='/IDL2js?aou,aout,pgt,au,coust,aous,csg'></script>
         <script type="text/javascript" djConfig="parseOnLoad: true,isDebug:false" src="/js/dojo/dojo/dojo.js"></script>
         <script type="text/javascript" djConfig="parseOnLoad: true,isDebug:false" src="/js/dojo/dojo/openils_dojo.js"></script>
         <script type="text/javascript" src='org_unit_settings.js'></script>
@@ -53,6 +53,7 @@
                                 get: osGetEditLink, 
                                 formatter : osFormatEditLink
                             },
+                            {name: 'Group', get: osGetGridData, field:'grp'},
                             {name: 'Setting', get: osGetGridData, field:'label', width:'auto', styles:'text-align:left;'},
                             {name: 'Context', get: osGetGridData, field:'context'},
                             {name: 'Value', get: osGetGridData, field:'value', width:'auto'},
@@ -106,6 +107,7 @@
         <span id='os-true' class='hidden'>&common.true;</span>
         <span id='os-false' class='hidden'>&common.false;</span>
         <div dojoType="openils.widget.ProgressDialog" jsId="progressDialog" indeterminate="true"></div>
+        <div class="hidden"></div>
     </body>
 </html>
 

commit 35b7724eb625f077beec10a26ed2c0669925ca86
Author: Joseph Lewis <joehms22 at gmail.com>
Date:   Mon Jun 6 16:06:25 2011 -0600

    Whoops, typed in the wrong number.
    
    Signed-off-by: Joseph Lewis <joehms22 at gmail.com>
    Signed-off-by: Thomas Berezansky <tsbere at mvlc.org>
    Signed-off-by: Jason Etheridge <jason at esilibrary.com>

diff --git a/Open-ILS/src/sql/Pg/upgrade/0549.data.seed_values_admin_cleanup.sql b/Open-ILS/src/sql/Pg/upgrade/0549.data.seed_values_admin_cleanup.sql
index b21a28e..af87cdf 100644
--- a/Open-ILS/src/sql/Pg/upgrade/0549.data.seed_values_admin_cleanup.sql
+++ b/Open-ILS/src/sql/Pg/upgrade/0549.data.seed_values_admin_cleanup.sql
@@ -1,6 +1,6 @@
 BEGIN;
 
-INSERT INTO config.upgrade_log (version) VALUES ('0536'); --dbs
+INSERT INTO config.upgrade_log (version) VALUES ('0549'); --dbs
 
 -- config settings group
 INSERT INTO config.settings_group (name, label) VALUES

commit 6842714bf0226c85c71bf79d7d0c6166363f1153
Author: Joseph Lewis <joehms22 at gmail.com>
Date:   Mon Jun 6 15:59:37 2011 -0600

    Forgot to put in the logging information :)
    
    Signed-off-by: Joseph Lewis <joehms22 at gmail.com>
    Signed-off-by: Thomas Berezansky <tsbere at mvlc.org>
    Signed-off-by: Jason Etheridge <jason at esilibrary.com>

diff --git a/Open-ILS/src/sql/Pg/upgrade/0549.data.seed_values_admin_cleanup.sql b/Open-ILS/src/sql/Pg/upgrade/0549.data.seed_values_admin_cleanup.sql
index 20cbfcd..b21a28e 100644
--- a/Open-ILS/src/sql/Pg/upgrade/0549.data.seed_values_admin_cleanup.sql
+++ b/Open-ILS/src/sql/Pg/upgrade/0549.data.seed_values_admin_cleanup.sql
@@ -1,3 +1,7 @@
+BEGIN;
+
+INSERT INTO config.upgrade_log (version) VALUES ('0536'); --dbs
+
 -- config settings group
 INSERT INTO config.settings_group (name, label) VALUES
 ('sys', 'System'),
@@ -210,3 +214,5 @@ UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfchec
 UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.require_patron_password';
 UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.workstation_required';
 UPDATE config.org_unit_setting_type SET grp = 'serial' WHERE name = 'serial.prev_issuance_copy_location';
+
+COMMIT;

commit c109dc2adb8019307256061419e287a3ea31a031
Author: Joseph Lewis <joehms22 at gmail.com>
Date:   Mon Jun 6 15:03:27 2011 -0600

    Added seed values for the "tags" of the settings in org unit settings.
    
    Signed-off-by: Joseph Lewis <joehms22 at gmail.com>
    Signed-off-by: Thomas Berezansky <tsbere at mvlc.org>
    Signed-off-by: Jason Etheridge <jason at esilibrary.com>

diff --git a/Open-ILS/src/sql/Pg/upgrade/0549.data.seed_values_admin_cleanup.sql b/Open-ILS/src/sql/Pg/upgrade/0549.data.seed_values_admin_cleanup.sql
new file mode 100644
index 0000000..20cbfcd
--- /dev/null
+++ b/Open-ILS/src/sql/Pg/upgrade/0549.data.seed_values_admin_cleanup.sql
@@ -0,0 +1,212 @@
+-- config settings group
+INSERT INTO config.settings_group (name, label) VALUES
+('sys', 'System'),
+('finance','Finances'),
+('holds','Holds'),
+('circ','Circulation'),
+('self','Self Check'),
+('opac','OPAC'),
+('gui','GUI'),
+('lib','Library'),
+('sec','Security'),
+('prog','Program'),
+('glob','Global'),
+('credit','Credit Card Processing'),
+('cat','Cataloging'),
+('serial','Serials'),
+('recall','Recalls');
+
+-- Set up all of the config.org_unit_setting_type[s] with a proper group.
+UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.bib.delete_on_no_copy_via_acq_lineitem_cancel';
+UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.default_classification_scheme';
+UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.label.font.family';
+UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.label.font.size';
+UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.label.font.weight';
+UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.marc_control_number_identifier';
+UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.spine.line.height';
+UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.spine.line.margin';
+UPDATE config.org_unit_setting_type SET grp = 'cat' WHERE name = 'cat.spine.line.width';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.checkout_auto_renew_age';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.checkout_fills_related_hold';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.do_not_tally_claims_returned';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.holds.expired_patron_block';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.hold_shelf_status_delay';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.lost_immediately_available';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.max_accept_return_of_lost';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.max_fine.cap_at_price';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.max_patron_claim_return_count';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.missing_pieces.copy_status';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.password_reset_request_requires_matching_email';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.patron_edit.clone.copy_address';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.patron_invalid_address_apply_penalty';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.restore_overdue_on_lost_return';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.void_lost_on_checkin';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'circ.void_lost_proc_fee_on_checkin';
+UPDATE config.org_unit_setting_type SET grp = 'circ' WHERE name = 'ui.circ.suppress_checkin_popups';
+UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.authorizenet.enabled';
+UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.authorizenet.login';
+UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.authorizenet.password';
+UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.authorizenet.server';
+UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.authorizenet.testmode';
+UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.default';
+UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.payflowpro.enabled';
+UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.payflowpro.login';
+UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.payflowpro.partner';
+UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.payflowpro.password';
+UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.payflowpro.testmode';
+UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.payflowpro.vendor';
+UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.paypal.enabled';
+UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.paypal.login';
+UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.paypal.password';
+UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.paypal.signature';
+UPDATE config.org_unit_setting_type SET grp = 'credit' WHERE name = 'credit.processor.paypal.testmode';
+UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'acq.fund.balance_limit.block';
+UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'acq.fund.balance_limit.warn';
+UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'cat.default_item_price';
+UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'circ.charge_lost_on_zero';
+UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'circ.charge_on_damaged';
+UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'circ.damaged_item_processing_fee';
+UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'circ.lost_materials_processing_fee';
+UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'circ.void_overdue_on_lost';
+UPDATE config.org_unit_setting_type SET grp = 'finance' WHERE name = 'credit.payments.allow';
+UPDATE config.org_unit_setting_type SET grp = 'glob' WHERE name = 'global.default_locale';
+UPDATE config.org_unit_setting_type SET grp = 'glob' WHERE name = 'global.password_regex';
+UPDATE config.org_unit_setting_type SET grp = 'glob' WHERE name = 'opac.barcode_regex';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'cat.bib.alert_on_empty';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'circ.auto_hide_patron_summary';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'circ.item_checkout_history.max';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'format.date';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'format.time';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'gui.disable_local_save_columns';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.admin.patron_log.max_entries';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.admin.work_log.max_entries';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.circ.in_house_use.entry_cap';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.circ.in_house_use.entry_warn';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.circ.patron_summary.horizontal';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.circ.show_billing_tab_on_bills';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.general.button_bar';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.general.idle_timeout';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.default_country';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.default_ident_type';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.aua.county.require';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.active.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.active.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.alert_message.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.alert_message.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.alias.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.alias.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.aua.post_code.example';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.aua.post_code.regex';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.barred.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.barred.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.claims_never_checked_out_count.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.claims_never_checked_out_count.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.claims_returned_count.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.claims_returned_count.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.day_phone.example';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.day_phone.regex';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.day_phone.require';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.day_phone.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.day_phone.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.dob.calendar';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.dob.require';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.dob.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.dob.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.email.example';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.email.regex';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.email.require';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.email.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.email.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.evening_phone.example';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.evening_phone.regex';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.evening_phone.require';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.evening_phone.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.evening_phone.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.ident_value2.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.ident_value2.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.ident_value.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.ident_value.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.juvenile.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.juvenile.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.master_account.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.master_account.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.other_phone.example';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.other_phone.regex';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.other_phone.require';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.other_phone.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.other_phone.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.second_given_name.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.second_given_name.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.suffix.show';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.au.suffix.suggest';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.default_suggested';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.phone.example';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.edit.phone.regex';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.patron.registration.require_address';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'ui.staff.require_initials';
+UPDATE config.org_unit_setting_type SET grp = 'gui' WHERE name = 'url.remote_column_settings';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.block_renews_for_holds';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.hold_boundary.hard';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.hold_boundary.soft';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.hold_expire_alert_interval';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.hold_expire_interval';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.behind_desk_pickup_supported';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.canceled.display_age';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.canceled.display_count';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.clear_shelf.copy_status';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.clear_shelf.no_capture_holds';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.default_estimated_wait_interval';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.default_shelf_expire_interval';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds_fifo';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.hold_has_copy_at.alert';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.hold_has_copy_at.block';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.max_org_unit_target_loops';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.min_estimated_wait_interval';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.org_unit_target_weight';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.hold_stalling_hard';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.hold_stalling.soft';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.target_holds_by_org_unit_weight';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.target_skip_me';
+UPDATE config.org_unit_setting_type SET grp = 'holds' WHERE name = 'circ.holds.uncancel.reset_request_time';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'acq.default_circ_modifier';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'acq.default_copy_location';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'acq.holds.allow_holds_from_purchase_request';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'acq.tmp_barcode_prefix';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'acq.tmp_callnumber_prefix';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'circ.booking_reservation.default_elbow_room';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'circ.claim_never_checked_out.mark_missing';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'circ.claim_return.copy_status';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'circ.damaged.void_ovedue';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'circ.pre_cat_copy_circ_lib';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'circ.reshelving_complete.interval';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'global.juvenile_age_threshold';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'lib.courier_code';
+UPDATE config.org_unit_setting_type SET grp = 'lib' WHERE name = 'notice.telephony.callfile_lines';
+UPDATE config.org_unit_setting_type SET grp = 'opac' WHERE name = 'opac.allow_pending_address';
+UPDATE config.org_unit_setting_type SET grp = 'opac' WHERE name = 'opac.fully_compressed_serial_holdings';
+UPDATE config.org_unit_setting_type SET grp = 'opac' WHERE name = 'opac.org_unit_hiding.depth';
+UPDATE config.org_unit_setting_type SET grp = 'prog' WHERE name = 'cat.bib.keep_on_empty';
+UPDATE config.org_unit_setting_type SET grp = 'prog' WHERE name = 'circ.staff_client.do_not_auto_attempt_print';
+UPDATE config.org_unit_setting_type SET grp = 'prog' WHERE name = 'org.bounced_emails';
+UPDATE config.org_unit_setting_type SET grp = 'recall' WHERE name = 'circ.holds.recall_fine_rules';
+UPDATE config.org_unit_setting_type SET grp = 'recall' WHERE name = 'circ.holds.recall_return_interval';
+UPDATE config.org_unit_setting_type SET grp = 'recall' WHERE name = 'circ.holds.recall_threshold';
+UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'auth.opac_timeout';
+UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'auth.persistent_login_interval';
+UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'auth.staff_timeout';
+UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'circ.obscure_dob';
+UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'circ.offline.username_allowed';
+UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'circ.password_reset_request_per_user_limit';
+UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'circ.password_reset_request_throttle';
+UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'circ.password_reset_request_time_to_live';
+UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'patron.password.use_phone';
+UPDATE config.org_unit_setting_type SET grp = 'sec' WHERE name = 'ui.patron.default_inet_access_level';
+UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.alert.popup';
+UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.alert.sound';
+UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.auto_override_checkout_events';
+UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.block_checkout_on_copy_status';
+UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.patron_login_timeout';
+UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.patron_password_required';
+UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.require_patron_password';
+UPDATE config.org_unit_setting_type SET grp = 'self' WHERE name = 'circ.selfcheck.workstation_required';
+UPDATE config.org_unit_setting_type SET grp = 'serial' WHERE name = 'serial.prev_issuance_copy_location';

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

Summary of changes:
 Open-ILS/examples/fm_IDL.xml                       |   24 +
 Open-ILS/src/sql/Pg/002.schema.config.sql          |   41 +-
 Open-ILS/src/sql/Pg/005.schema.actors.sql          |   37 +
 Open-ILS/src/sql/Pg/800.fkeys.sql                  |    2 +
 Open-ILS/src/sql/Pg/950.data.seed-values.sql       | 3685 +++++++++++---------
 .../sql/Pg/upgrade/0622.data.YAOUS-i18n-update.sql |  253 ++
 .../sql/Pg/upgrade/0623.schema.YAOUS-log-table.sql |   50 +
 Open-ILS/web/opac/locale/en-US/lang.dtd            |   25 +-
 .../staff_client/server/admin/org_unit_settings.js |  293 ++-
 .../server/admin/org_unit_settings.xhtml           |  170 +-
 .../server/locale/en-US/common.properties          |    1 +
 11 files changed, 2880 insertions(+), 1701 deletions(-)
 create mode 100644 Open-ILS/src/sql/Pg/upgrade/0622.data.YAOUS-i18n-update.sql
 create mode 100644 Open-ILS/src/sql/Pg/upgrade/0623.schema.YAOUS-log-table.sql


hooks/post-receive
-- 
Evergreen ILS


More information about the open-ils-commits mailing list