From: Kathy Lussier Date: Fri, 3 Aug 2018 17:29:14 +0000 (-0400) Subject: LP#1750894: Stamping upgrade script for workstation settings on server X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=beee20c5b0a63bf8248a630686f2fb262d4789ac;p=contrib%2FConifer.git LP#1750894: Stamping upgrade script for workstation settings on server Signed-off-by: Kathy Lussier --- diff --git a/Open-ILS/src/sql/Pg/002.schema.config.sql b/Open-ILS/src/sql/Pg/002.schema.config.sql index 31cd398275..08763f66f6 100644 --- a/Open-ILS/src/sql/Pg/002.schema.config.sql +++ b/Open-ILS/src/sql/Pg/002.schema.config.sql @@ -92,7 +92,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 ('1115', :eg_version); -- miker/berick +INSERT INTO config.upgrade_log (version, applied_to) VALUES ('1117', :eg_version); -- berick/kmlussier CREATE TABLE config.bib_source ( id SERIAL PRIMARY KEY, diff --git a/Open-ILS/src/sql/Pg/upgrade/1116.schema.workstation-settings.sql b/Open-ILS/src/sql/Pg/upgrade/1116.schema.workstation-settings.sql new file mode 100644 index 0000000000..fd2e16a162 --- /dev/null +++ b/Open-ILS/src/sql/Pg/upgrade/1116.schema.workstation-settings.sql @@ -0,0 +1,227 @@ +BEGIN; + +CREATE TYPE actor.cascade_setting_summary AS ( + name TEXT, + value JSON, + has_org_setting BOOLEAN, + has_user_setting BOOLEAN, + has_workstation_setting BOOLEAN +); + +SELECT evergreen.upgrade_deps_block_check('1116', :eg_version); + +CREATE TABLE config.workstation_setting_type ( + name TEXT PRIMARY KEY, + label TEXT UNIQUE NOT NULL, + grp TEXT REFERENCES config.settings_group (name), + description TEXT, + datatype TEXT NOT NULL DEFAULT 'string', + fm_class TEXT, + -- + -- define valid datatypes + -- + CONSTRAINT cwst_valid_datatype CHECK ( datatype IN + ( 'bool', 'integer', 'float', 'currency', 'interval', + 'date', 'string', 'object', 'array', 'link' ) ), + -- + -- fm_class is meaningful only for 'link' datatype + -- + CONSTRAINT cwst_no_empty_link CHECK + ( ( datatype = 'link' AND fm_class IS NOT NULL ) OR + ( datatype <> 'link' AND fm_class IS NULL ) ) +); + +CREATE TABLE actor.workstation_setting ( + id SERIAL PRIMARY KEY, + workstation INT NOT NULL REFERENCES actor.workstation (id) + ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, + name TEXT NOT NULL REFERENCES config.workstation_setting_type (name) + ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE INITIALLY DEFERRED, + value JSON NOT NULL +); + + +CREATE INDEX actor_workstation_setting_workstation_idx + ON actor.workstation_setting (workstation); + +CREATE OR REPLACE FUNCTION config.setting_is_user_or_ws() +RETURNS TRIGGER AS $FUNC$ +BEGIN + + IF TG_TABLE_NAME = 'usr_setting_type' THEN + PERFORM TRUE FROM config.workstation_setting_type cwst + WHERE cwst.name = NEW.name; + IF NOT FOUND THEN + RETURN NULL; + END IF; + END IF; + + IF TG_TABLE_NAME = 'workstation_setting_type' THEN + PERFORM TRUE FROM config.usr_setting_type cust + WHERE cust.name = NEW.name; + IF NOT FOUND THEN + RETURN NULL; + END IF; + END IF; + + RAISE EXCEPTION + '% Cannot be used as both a user setting and a workstation setting.', + NEW.name; +END; +$FUNC$ LANGUAGE PLPGSQL STABLE; + +CREATE CONSTRAINT TRIGGER check_setting_is_usr_or_ws + AFTER INSERT OR UPDATE ON config.usr_setting_type + FOR EACH ROW EXECUTE PROCEDURE config.setting_is_user_or_ws(); + +CREATE CONSTRAINT TRIGGER check_setting_is_usr_or_ws + AFTER INSERT OR UPDATE ON config.workstation_setting_type + FOR EACH ROW EXECUTE PROCEDURE config.setting_is_user_or_ws(); + +CREATE OR REPLACE FUNCTION actor.get_cascade_setting( + setting_name TEXT, org_id INT, user_id INT, workstation_id INT) + RETURNS actor.cascade_setting_summary AS +$FUNC$ +DECLARE + setting_value JSON; + summary actor.cascade_setting_summary; + org_setting_type config.org_unit_setting_type%ROWTYPE; +BEGIN + + summary.name := setting_name; + + -- Collect the org setting type status first in case we exit early. + -- The existance of an org setting type is not considered + -- privileged information. + SELECT INTO org_setting_type * + FROM config.org_unit_setting_type WHERE name = setting_name; + IF FOUND THEN + summary.has_org_setting := TRUE; + ELSE + summary.has_org_setting := FALSE; + END IF; + + -- User and workstation settings have the same priority. + -- Start with user settings since that's the simplest code path. + -- The workstation_id is ignored if no user_id is provided. + IF user_id IS NOT NULL THEN + + SELECT INTO summary.value value FROM actor.usr_setting + WHERE usr = user_id AND name = setting_name; + + IF FOUND THEN + -- if we have a value, we have a setting type + summary.has_user_setting := TRUE; + + IF workstation_id IS NOT NULL THEN + -- Only inform the caller about the workstation + -- setting type disposition when a workstation id is + -- provided. Otherwise, it's NULL to indicate UNKNOWN. + summary.has_workstation_setting := FALSE; + END IF; + + RETURN summary; + END IF; + + -- no user setting value, but a setting type may exist + SELECT INTO summary.has_user_setting EXISTS ( + SELECT TRUE FROM config.usr_setting_type + WHERE name = setting_name + ); + + IF workstation_id IS NOT NULL THEN + + IF NOT summary.has_user_setting THEN + -- A workstation setting type may only exist when a user + -- setting type does not. + + SELECT INTO summary.value value + FROM actor.workstation_setting + WHERE workstation = workstation_id AND name = setting_name; + + IF FOUND THEN + -- if we have a value, we have a setting type + summary.has_workstation_setting := TRUE; + RETURN summary; + END IF; + + -- no value, but a setting type may exist + SELECT INTO summary.has_workstation_setting EXISTS ( + SELECT TRUE FROM config.workstation_setting_type + WHERE name = setting_name + ); + END IF; + + -- Finally make use of the workstation to determine the org + -- unit if none is provided. + IF org_id IS NULL AND summary.has_org_setting THEN + SELECT INTO org_id owning_lib + FROM actor.workstation WHERE id = workstation_id; + END IF; + END IF; + END IF; + + -- Some org unit settings are protected by a view permission. + -- First see if we have any data that needs protecting, then + -- check the permission if needed. + + IF NOT summary.has_org_setting THEN + RETURN summary; + END IF; + + -- avoid putting the value into the summary until we confirm + -- the value should be visible to the caller. + SELECT INTO setting_value value + FROM actor.org_unit_ancestor_setting(setting_name, org_id); + + IF NOT FOUND THEN + -- No value found -- perm check is irrelevant. + RETURN summary; + END IF; + + IF org_setting_type.view_perm IS NOT NULL THEN + + IF user_id IS NULL THEN + RAISE NOTICE 'Perm check required but no user_id provided'; + RETURN summary; + END IF; + + IF NOT permission.usr_has_perm( + user_id, (SELECT code FROM permission.perm_list + WHERE id = org_setting_type.view_perm), org_id) + THEN + RAISE NOTICE 'Perm check failed for user % on %', + user_id, org_setting_type.view_perm; + RETURN summary; + END IF; + END IF; + + -- Perm check succeeded or was not necessary. + summary.value := setting_value; + RETURN summary; +END; +$FUNC$ LANGUAGE PLPGSQL; + + +CREATE OR REPLACE FUNCTION actor.get_cascade_setting_batch( + setting_names TEXT[], org_id INT, user_id INT, workstation_id INT) + RETURNS SETOF actor.cascade_setting_summary AS +$FUNC$ +-- Returns a row per setting matching the setting name order. If no +-- value is applied, NULL is returned to retain name-response ordering. +DECLARE + setting_name TEXT; + summary actor.cascade_setting_summary; +BEGIN + FOREACH setting_name IN ARRAY setting_names LOOP + SELECT INTO summary * FROM actor.get_cascade_setting( + setting_Name, org_id, user_id, workstation_id); + RETURN NEXT summary; + END LOOP; +END; +$FUNC$ LANGUAGE PLPGSQL; + +COMMIT; + + + diff --git a/Open-ILS/src/sql/Pg/upgrade/1117.data.workstation-settings.sql b/Open-ILS/src/sql/Pg/upgrade/1117.data.workstation-settings.sql new file mode 100644 index 0000000000..1b99f9da5c --- /dev/null +++ b/Open-ILS/src/sql/Pg/upgrade/1117.data.workstation-settings.sql @@ -0,0 +1,930 @@ +BEGIN; + +SELECT evergreen.upgrade_deps_block_check('1117', :eg_version); + +INSERT INTO permission.perm_list (id, code, description) VALUES + (608, 'APPLY_WORKSTATION_SETTING', + oils_i18n_gettext(608, 'APPLY_WORKSTATION_SETTING', 'ppl', 'description')); + +INSERT INTO config.workstation_setting_type (name, grp, datatype, label) +VALUES ( + 'eg.circ.checkin.no_precat_alert', 'circ', 'bool', + oils_i18n_gettext( + 'eg.circ.checkin.no_precat_alert', + 'Checkin: Ignore Precataloged Items', + 'cwst', 'label' + ) +), ( + 'eg.circ.checkin.noop', 'circ', 'bool', + oils_i18n_gettext( + 'eg.circ.checkin.noop', + 'Checkin: Suppress Holds and Transits', + 'cwst', 'label' + ) +), ( + 'eg.circ.checkin.void_overdues', 'circ', 'bool', + oils_i18n_gettext( + 'eg.circ.checkin.void_overdues', + 'Checkin: Amnesty Mode', + 'cwst', 'label' + ) +), ( + 'eg.circ.checkin.auto_print_holds_transits', 'circ', 'bool', + oils_i18n_gettext( + 'eg.circ.checkin.auto_print_holds_transits', + 'Checkin: Auto-Print Holds and Transits', + 'cwst', 'label' + ) +), ( + 'eg.circ.checkin.clear_expired', 'circ', 'bool', + oils_i18n_gettext( + 'eg.circ.checkin.clear_expired', + 'Checkin: Clear Holds Shelf', + 'cwst', 'label' + ) +), ( + 'eg.circ.checkin.retarget_holds', 'circ', 'bool', + oils_i18n_gettext( + 'eg.circ.checkin.retarget_holds', + 'Checkin: Retarget Local Holds', + 'cwst', 'label' + ) +), ( + 'eg.circ.checkin.retarget_holds_all', 'circ', 'bool', + oils_i18n_gettext( + 'eg.circ.checkin.retarget_holds_all', + 'Checkin: Retarget All Statuses', + 'cwst', 'label' + ) +), ( + 'eg.circ.checkin.hold_as_transit', 'circ', 'bool', + oils_i18n_gettext( + 'eg.circ.checkin.hold_as_transit', + 'Checkin: Capture Local Holds as Transits', + 'cwst', 'label' + ) +), ( + 'eg.circ.checkin.manual_float', 'circ', 'bool', + oils_i18n_gettext( + 'eg.circ.checkin.manual_float', + 'Checkin: Manual Floating Active', + 'cwst', 'label' + ) +), ( + 'eg.circ.patron.summary.collapse', 'circ', 'bool', + oils_i18n_gettext( + 'eg.circ.patron.summary.collapse', + 'Collaps Patron Summary Display', + 'cwst', 'label' + ) +), ( + 'circ.bills.receiptonpay', 'circ', 'bool', + oils_i18n_gettext( + 'circ.bills.receiptonpay', + 'Print Receipt On Payment', + 'cwst', 'label' + ) +), ( + 'circ.renew.strict_barcode', 'circ', 'bool', + oils_i18n_gettext( + 'circ.renew.strict_barcode', + 'Renew: Strict Barcode', + 'cwst', 'label' + ) +), ( + 'circ.checkin.strict_barcode', 'circ', 'bool', + oils_i18n_gettext( + 'circ.checkin.strict_barcode', + 'Checkin: Strict Barcode', + 'cwst', 'label' + ) +), ( + 'circ.checkout.strict_barcode', 'circ', 'bool', + oils_i18n_gettext( + 'circ.checkout.strict_barcode', + 'Checkout: Strict Barcode', + 'cwst', 'label' + ) +), ( + 'cat.holdings_show_copies', 'cat', 'bool', + oils_i18n_gettext( + 'cat.holdings_show_copies', + 'Holdings View Show Copies', + 'cwst', 'label' + ) +), ( + 'cat.holdings_show_empty', 'cat', 'bool', + oils_i18n_gettext( + 'cat.holdings_show_empty', + 'Holdings View Show Empty Volumes', + 'cwst', 'label' + ) +), ( + 'cat.holdings_show_empty_org', 'cat', 'bool', + oils_i18n_gettext( + 'cat.holdings_show_empty_org', + 'Holdings View Show Empty Orgs', + 'cwst', 'label' + ) +), ( + 'cat.holdings_show_vols', 'cat', 'bool', + oils_i18n_gettext( + 'cat.holdings_show_vols', + 'Holdings View Show Volumes', + 'cwst', 'label' + ) +), ( + 'cat.copy.defaults', 'cat', 'object', + oils_i18n_gettext( + 'cat.copy.defaults', + 'Copy Edit Default Values', + 'cwst', 'label' + ) +), ( + 'cat.printlabels.default_template', 'cat', 'string', + oils_i18n_gettext( + 'cat.printlabels.default_template', + 'Print Label Default Template', + 'cwst', 'label' + ) +), ( + 'cat.printlabels.templates', 'cat', 'object', + oils_i18n_gettext( + 'cat.printlabels.templates', + 'Print Label Templates', + 'cwst', 'label' + ) +), ( + 'eg.circ.patron.search.include_inactive', 'circ', 'bool', + oils_i18n_gettext( + 'eg.circ.patron.search.include_inactive', + 'Patron Search Include Inactive', + 'cwst', 'label' + ) +), ( + 'eg.circ.patron.search.show_extras', 'circ', 'bool', + oils_i18n_gettext( + 'eg.circ.patron.search.show_extras', + 'Patron Search Show Extra Search Options', + 'cwst', 'label' + ) +), ( + 'eg.grid.circ.checkin.checkin', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.circ.checkin.checkin', + 'Grid Config: circ.checkin.checkin', + 'cwst', 'label' + ) +), ( + 'eg.grid.circ.checkin.capture', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.circ.checkin.capture', + 'Grid Config: circ.checkin.capture', + 'cwst', 'label' + ) +), ( + 'eg.grid.admin.server.config.copy_tag_type', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.admin.server.config.copy_tag_type', + 'Grid Config: admin.server.config.copy_tag_type', + 'cwst', 'label' + ) +), ( + 'eg.grid.admin.server.config.metabib_field_virtual_map.grid', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.admin.server.config.metabib_field_virtual_map.grid', + 'Grid Config: admin.server.config.metabib_field_virtual_map.grid', + 'cwst', 'label' + ) +), ( + 'eg.grid.admin.server.config.metabib_field.grid', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.admin.server.config.metabib_field.grid', + 'Grid Config: admin.server.config.metabib_field.grid', + 'cwst', 'label' + ) +), ( + 'eg.grid.admin.server.config.marc_field', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.admin.server.config.marc_field', + 'Grid Config: admin.server.config.marc_field', + 'cwst', 'label' + ) +), ( + 'eg.grid.admin.server.asset.copy_tag', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.admin.server.asset.copy_tag', + 'Grid Config: admin.server.asset.copy_tag', + 'cwst', 'label' + ) +), ( + 'eg.grid.admin.local.circ.neg_balance_users', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.admin.local.circ.neg_balance_users', + 'Grid Config: admin.local.circ.neg_balance_users', + 'cwst', 'label' + ) +), ( + 'eg.grid.admin.local.rating.badge', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.admin.local.rating.badge', + 'Grid Config: admin.local.rating.badge', + 'cwst', 'label' + ) +), ( + 'eg.grid.admin.workstation.work_log', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.admin.workstation.work_log', + 'Grid Config: admin.workstation.work_log', + 'cwst', 'label' + ) +), ( + 'eg.grid.admin.workstation.patron_log', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.admin.workstation.patron_log', + 'Grid Config: admin.workstation.patron_log', + 'cwst', 'label' + ) +), ( + 'eg.grid.admin.serials.pattern_template', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.admin.serials.pattern_template', + 'Grid Config: admin.serials.pattern_template', + 'cwst', 'label' + ) +), ( + 'eg.grid.serials.copy_templates', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.serials.copy_templates', + 'Grid Config: serials.copy_templates', + 'cwst', 'label' + ) +), ( + 'eg.grid.cat.record_overlay.holdings', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.cat.record_overlay.holdings', + 'Grid Config: cat.record_overlay.holdings', + 'cwst', 'label' + ) +), ( + 'eg.grid.cat.bucket.record.search', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.cat.bucket.record.search', + 'Grid Config: cat.bucket.record.search', + 'cwst', 'label' + ) +), ( + 'eg.grid.cat.bucket.record.view', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.cat.bucket.record.view', + 'Grid Config: cat.bucket.record.view', + 'cwst', 'label' + ) +), ( + 'eg.grid.cat.bucket.record.pending', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.cat.bucket.record.pending', + 'Grid Config: cat.bucket.record.pending', + 'cwst', 'label' + ) +), ( + 'eg.grid.cat.bucket.copy.view', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.cat.bucket.copy.view', + 'Grid Config: cat.bucket.copy.view', + 'cwst', 'label' + ) +), ( + 'eg.grid.cat.bucket.copy.pending', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.cat.bucket.copy.pending', + 'Grid Config: cat.bucket.copy.pending', + 'cwst', 'label' + ) +), ( + 'eg.grid.cat.items', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.cat.items', + 'Grid Config: cat.items', + 'cwst', 'label' + ) +), ( + 'eg.grid.cat.volcopy.copies', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.cat.volcopy.copies', + 'Grid Config: cat.volcopy.copies', + 'cwst', 'label' + ) +), ( + 'eg.grid.cat.volcopy.copies.complete', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.cat.volcopy.copies.complete', + 'Grid Config: cat.volcopy.copies.complete', + 'cwst', 'label' + ) +), ( + 'eg.grid.cat.peer_bibs', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.cat.peer_bibs', + 'Grid Config: cat.peer_bibs', + 'cwst', 'label' + ) +), ( + 'eg.grid.cat.catalog.holds', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.cat.catalog.holds', + 'Grid Config: cat.catalog.holds', + 'cwst', 'label' + ) +), ( + 'eg.grid.cat.holdings', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.cat.holdings', + 'Grid Config: cat.holdings', + 'cwst', 'label' + ) +), ( + 'eg.grid.cat.z3950_results', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.cat.z3950_results', + 'Grid Config: cat.z3950_results', + 'cwst', 'label' + ) +), ( + 'eg.grid.circ.holds.shelf', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.circ.holds.shelf', + 'Grid Config: circ.holds.shelf', + 'cwst', 'label' + ) +), ( + 'eg.grid.circ.holds.pull', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.circ.holds.pull', + 'Grid Config: circ.holds.pull', + 'cwst', 'label' + ) +), ( + 'eg.grid.circ.in_house_use', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.circ.in_house_use', + 'Grid Config: circ.in_house_use', + 'cwst', 'label' + ) +), ( + 'eg.grid.circ.renew', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.circ.renew', + 'Grid Config: circ.renew', + 'cwst', 'label' + ) +), ( + 'eg.grid.circ.transits.list', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.circ.transits.list', + 'Grid Config: circ.transits.list', + 'cwst', 'label' + ) +), ( + 'eg.grid.circ.patron.holds', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.circ.patron.holds', + 'Grid Config: circ.patron.holds', + 'cwst', 'label' + ) +), ( + 'eg.grid.circ.pending_patrons.list', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.circ.pending_patrons.list', + 'Grid Config: circ.pending_patrons.list', + 'cwst', 'label' + ) +), ( + 'eg.grid.circ.patron.items_out.noncat', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.circ.patron.items_out.noncat', + 'Grid Config: circ.patron.items_out.noncat', + 'cwst', 'label' + ) +), ( + 'eg.grid.circ.patron.items_out', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.circ.patron.items_out', + 'Grid Config: circ.patron.items_out', + 'cwst', 'label' + ) +), ( + 'eg.grid.circ.patron.billhistory_payments', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.circ.patron.billhistory_payments', + 'Grid Config: circ.patron.billhistory_payments', + 'cwst', 'label' + ) +), ( + 'eg.grid.user.bucket.view', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.user.bucket.view', + 'Grid Config: user.bucket.view', + 'cwst', 'label' + ) +), ( + 'eg.grid.user.bucket.pending', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.user.bucket.pending', + 'Grid Config: user.bucket.pending', + 'cwst', 'label' + ) +), ( + 'eg.grid.circ.patron.staff_messages', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.circ.patron.staff_messages', + 'Grid Config: circ.patron.staff_messages', + 'cwst', 'label' + ) +), ( + 'eg.grid.circ.patron.archived_messages', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.circ.patron.archived_messages', + 'Grid Config: circ.patron.archived_messages', + 'cwst', 'label' + ) +), ( + 'eg.grid.circ.patron.bills', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.circ.patron.bills', + 'Grid Config: circ.patron.bills', + 'cwst', 'label' + ) +), ( + 'eg.grid.circ.patron.checkout', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.circ.patron.checkout', + 'Grid Config: circ.patron.checkout', + 'cwst', 'label' + ) +), ( + 'eg.grid.serials.mfhd_grid', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.serials.mfhd_grid', + 'Grid Config: serials.mfhd_grid', + 'cwst', 'label' + ) +), ( + 'eg.grid.serials.view_item_grid', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.serials.view_item_grid', + 'Grid Config: serials.view_item_grid', + 'cwst', 'label' + ) +), ( + 'eg.grid.serials.dist_stream_grid', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.serials.dist_stream_grid', + 'Grid Config: serials.dist_stream_grid', + 'cwst', 'label' + ) +), ( + 'eg.grid.circ.patron.search', 'gui', 'object', + oils_i18n_gettext( + 'eg.grid.circ.patron.search', + 'Grid Config: circ.patron.search', + 'cwst', 'label' + ) +), ( + 'eg.cat.record.summary.collapse', 'gui', 'bool', + oils_i18n_gettext( + 'eg.cat.record.summary.collapse', + 'Collapse Bib Record Summary', + 'cwst', 'label' + ) +), ( + 'cat.marcedit.flateditor', 'gui', 'bool', + oils_i18n_gettext( + 'cat.marcedit.flateditor', + 'Use Flat MARC Editor', + 'cwst', 'label' + ) +), ( + 'cat.marcedit.stack_subfields', 'gui', 'bool', + oils_i18n_gettext( + 'cat.marcedit.stack_subfields', + 'MARC Editor Stack Subfields', + 'cwst', 'label' + ) +), ( + 'eg.offline.print_receipt', 'gui', 'bool', + oils_i18n_gettext( + 'eg.offline.print_receipt', + 'Offline Print Receipt', + 'cwst', 'label' + ) +), ( + 'eg.offline.strict_barcode', 'gui', 'bool', + oils_i18n_gettext( + 'eg.offline.strict_barcode', + 'Offline Use Strict Barcode', + 'cwst', 'label' + ) +), ( + 'cat.default_bib_marc_template', 'gui', 'string', + oils_i18n_gettext( + 'cat.default_bib_marc_template', + 'Default MARC Template', + 'cwst', 'label' + ) +), ( + 'eg.audio.disable', 'gui', 'bool', + oils_i18n_gettext( + 'eg.audio.disable', + 'Disable Staff Client Notification Audio', + 'cwst', 'label' + ) +), ( + 'eg.search.adv_pane', 'gui', 'string', + oils_i18n_gettext( + 'eg.search.adv_pane', + 'Catalog Advanced Search Default Pane', + 'cwst', 'label' + ) +), ( + 'eg.print.template_context.bills_current', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template_context.bills_current', + 'Print Template Context: bills_current', + 'cwst', 'label' + ) +), ( + 'eg.print.template.bills_current', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template.bills_current', + 'Print Template: bills_current', + 'cwst', 'label' + ) +), ( + 'eg.print.template_context.bills_historical', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template_context.bills_historical', + 'Print Template Context: bills_historical', + 'cwst', 'label' + ) +), ( + 'eg.print.template.bills_historical', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template.bills_historical', + 'Print Template: bills_historical', + 'cwst', 'label' + ) +), ( + 'eg.print.template_context.bill_payment', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template_context.bill_payment', + 'Print Template Context: bill_payment', + 'cwst', 'label' + ) +), ( + 'eg.print.template.bill_payment', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template.bill_payment', + 'Print Template: bill_payment', + 'cwst', 'label' + ) +), ( + 'eg.print.template_context.checkin', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template_context.checkin', + 'Print Template Context: checkin', + 'cwst', 'label' + ) +), ( + 'eg.print.template.checkin', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template.checkin', + 'Print Template: checkin', + 'cwst', 'label' + ) +), ( + 'eg.print.template_context.checkout', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template_context.checkout', + 'Print Template Context: checkout', + 'cwst', 'label' + ) +), ( + 'eg.print.template.checkout', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template.checkout', + 'Print Template: checkout', + 'cwst', 'label' + ) +), ( + 'eg.print.template_context.hold_transit_slip', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template_context.hold_transit_slip', + 'Print Template Context: hold_transit_slip', + 'cwst', 'label' + ) +), ( + 'eg.print.template.hold_transit_slip', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template.hold_transit_slip', + 'Print Template: hold_transit_slip', + 'cwst', 'label' + ) +), ( + 'eg.print.template_context.hold_shelf_slip', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template_context.hold_shelf_slip', + 'Print Template Context: hold_shelf_slip', + 'cwst', 'label' + ) +), ( + 'eg.print.template.hold_shelf_slip', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template.hold_shelf_slip', + 'Print Template: hold_shelf_slip', + 'cwst', 'label' + ) +), ( + 'eg.print.template_context.holds_for_bib', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template_context.holds_for_bib', + 'Print Template Context: holds_for_bib', + 'cwst', 'label' + ) +), ( + 'eg.print.template.holds_for_bib', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template.holds_for_bib', + 'Print Template: holds_for_bib', + 'cwst', 'label' + ) +), ( + 'eg.print.template_context.holds_for_patron', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template_context.holds_for_patron', + 'Print Template Context: holds_for_patron', + 'cwst', 'label' + ) +), ( + 'eg.print.template.holds_for_patron', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template.holds_for_patron', + 'Print Template: holds_for_patron', + 'cwst', 'label' + ) +), ( + 'eg.print.template_context.hold_pull_list', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template_context.hold_pull_list', + 'Print Template Context: hold_pull_list', + 'cwst', 'label' + ) +), ( + 'eg.print.template.hold_pull_list', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template.hold_pull_list', + 'Print Template: hold_pull_list', + 'cwst', 'label' + ) +), ( + 'eg.print.template_context.hold_shelf_list', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template_context.hold_shelf_list', + 'Print Template Context: hold_shelf_list', + 'cwst', 'label' + ) +), ( + 'eg.print.template.hold_shelf_list', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template.hold_shelf_list', + 'Print Template: hold_shelf_list', + 'cwst', 'label' + ) +), ( + 'eg.print.template_context.in_house_use_list', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template_context.in_house_use_list', + 'Print Template Context: in_house_use_list', + 'cwst', 'label' + ) +), ( + 'eg.print.template.in_house_use_list', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template.in_house_use_list', + 'Print Template: in_house_use_list', + 'cwst', 'label' + ) +), ( + 'eg.print.template_context.item_status', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template_context.item_status', + 'Print Template Context: item_status', + 'cwst', 'label' + ) +), ( + 'eg.print.template.item_status', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template.item_status', + 'Print Template: item_status', + 'cwst', 'label' + ) +), ( + 'eg.print.template_context.items_out', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template_context.items_out', + 'Print Template Context: items_out', + 'cwst', 'label' + ) +), ( + 'eg.print.template.items_out', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template.items_out', + 'Print Template: items_out', + 'cwst', 'label' + ) +), ( + 'eg.print.template_context.patron_address', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template_context.patron_address', + 'Print Template Context: patron_address', + 'cwst', 'label' + ) +), ( + 'eg.print.template.patron_address', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template.patron_address', + 'Print Template: patron_address', + 'cwst', 'label' + ) +), ( + 'eg.print.template_context.patron_data', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template_context.patron_data', + 'Print Template Context: patron_data', + 'cwst', 'label' + ) +), ( + 'eg.print.template.patron_data', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template.patron_data', + 'Print Template: patron_data', + 'cwst', 'label' + ) +), ( + 'eg.print.template_context.patron_note', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template_context.patron_note', + 'Print Template Context: patron_note', + 'cwst', 'label' + ) +), ( + 'eg.print.template.patron_note', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template.patron_note', + 'Print Template: patron_note', + 'cwst', 'label' + ) +), ( + 'eg.print.template_context.renew', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template_context.renew', + 'Print Template Context: renew', + 'cwst', 'label' + ) +), ( + 'eg.print.template.renew', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template.renew', + 'Print Template: renew', + 'cwst', 'label' + ) +), ( + 'eg.print.template_context.transit_list', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template_context.transit_list', + 'Print Template Context: transit_list', + 'cwst', 'label' + ) +), ( + 'eg.print.template.transit_list', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template.transit_list', + 'Print Template: transit_list', + 'cwst', 'label' + ) +), ( + 'eg.print.template_context.transit_slip', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template_context.transit_slip', + 'Print Template Context: transit_slip', + 'cwst', 'label' + ) +), ( + 'eg.print.template.transit_slip', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template.transit_slip', + 'Print Template: transit_slip', + 'cwst', 'label' + ) +), ( + 'eg.print.template_context.offline_checkout', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template_context.offline_checkout', + 'Print Template Context: offline_checkout', + 'cwst', 'label' + ) +), ( + 'eg.print.template.offline_checkout', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template.offline_checkout', + 'Print Template: offline_checkout', + 'cwst', 'label' + ) +), ( + 'eg.print.template_context.offline_renew', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template_context.offline_renew', + 'Print Template Context: offline_renew', + 'cwst', 'label' + ) +), ( + 'eg.print.template.offline_renew', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template.offline_renew', + 'Print Template: offline_renew', + 'cwst', 'label' + ) +), ( + 'eg.print.template_context.offline_checkin', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template_context.offline_checkin', + 'Print Template Context: offline_checkin', + 'cwst', 'label' + ) +), ( + 'eg.print.template.offline_checkin', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template.offline_checkin', + 'Print Template: offline_checkin', + 'cwst', 'label' + ) +), ( + 'eg.print.template_context.offline_in_house_use', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template_context.offline_in_house_use', + 'Print Template Context: offline_in_house_use', + 'cwst', 'label' + ) +), ( + 'eg.print.template.offline_in_house_use', 'gui', 'string', + oils_i18n_gettext( + 'eg.print.template.offline_in_house_use', + 'Print Template: offline_in_house_use', + 'cwst', 'label' + ) +), ( + 'eg.serials.stream_names', 'gui', 'array', + oils_i18n_gettext( + 'eg.serials.stream_names', + 'Serials Local Stream Names', + 'cwst', 'label' + ) +), ( + 'eg.serials.items.do_print_routing_lists', 'gui', 'bool', + oils_i18n_gettext( + 'eg.serials.items.do_print_routing_lists', + 'Serials Print Routing Lists', + 'cwst', 'label' + ) +), ( + 'eg.serials.items.receive_and_barcode', 'gui', 'bool', + oils_i18n_gettext( + 'eg.serials.items.receive_and_barcode', + 'Serials Barcode On Receive', + 'cwst', 'label' + ) +); + + +-- More values with fm_class'es +INSERT INTO config.workstation_setting_type (name, grp, datatype, fm_class, label) +VALUES ( + 'eg.search.search_lib', 'gui', 'link', 'aou', + oils_i18n_gettext( + 'eg.search.search_lib', + 'Staff Catalog Default Search Library', + 'cwst', 'label' + ) +), ( + 'eg.search.pref_lib', 'gui', 'link', 'aou', + oils_i18n_gettext( + 'eg.search.pref_lib', + 'Staff Catalog Preferred Library', + 'cwst', 'label' + ) +); + + +COMMIT; + + diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.workstation-settings.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.workstation-settings.sql deleted file mode 100644 index 11ff097c3c..0000000000 --- a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.workstation-settings.sql +++ /dev/null @@ -1,227 +0,0 @@ -BEGIN; - -CREATE TYPE actor.cascade_setting_summary AS ( - name TEXT, - value JSON, - has_org_setting BOOLEAN, - has_user_setting BOOLEAN, - has_workstation_setting BOOLEAN -); - --- SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version); - -CREATE TABLE config.workstation_setting_type ( - name TEXT PRIMARY KEY, - label TEXT UNIQUE NOT NULL, - grp TEXT REFERENCES config.settings_group (name), - description TEXT, - datatype TEXT NOT NULL DEFAULT 'string', - fm_class TEXT, - -- - -- define valid datatypes - -- - CONSTRAINT cwst_valid_datatype CHECK ( datatype IN - ( 'bool', 'integer', 'float', 'currency', 'interval', - 'date', 'string', 'object', 'array', 'link' ) ), - -- - -- fm_class is meaningful only for 'link' datatype - -- - CONSTRAINT cwst_no_empty_link CHECK - ( ( datatype = 'link' AND fm_class IS NOT NULL ) OR - ( datatype <> 'link' AND fm_class IS NULL ) ) -); - -CREATE TABLE actor.workstation_setting ( - id SERIAL PRIMARY KEY, - workstation INT NOT NULL REFERENCES actor.workstation (id) - ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, - name TEXT NOT NULL REFERENCES config.workstation_setting_type (name) - ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE INITIALLY DEFERRED, - value JSON NOT NULL -); - - -CREATE INDEX actor_workstation_setting_workstation_idx - ON actor.workstation_setting (workstation); - -CREATE OR REPLACE FUNCTION config.setting_is_user_or_ws() -RETURNS TRIGGER AS $FUNC$ -BEGIN - - IF TG_TABLE_NAME = 'usr_setting_type' THEN - PERFORM TRUE FROM config.workstation_setting_type cwst - WHERE cwst.name = NEW.name; - IF NOT FOUND THEN - RETURN NULL; - END IF; - END IF; - - IF TG_TABLE_NAME = 'workstation_setting_type' THEN - PERFORM TRUE FROM config.usr_setting_type cust - WHERE cust.name = NEW.name; - IF NOT FOUND THEN - RETURN NULL; - END IF; - END IF; - - RAISE EXCEPTION - '% Cannot be used as both a user setting and a workstation setting.', - NEW.name; -END; -$FUNC$ LANGUAGE PLPGSQL STABLE; - -CREATE CONSTRAINT TRIGGER check_setting_is_usr_or_ws - AFTER INSERT OR UPDATE ON config.usr_setting_type - FOR EACH ROW EXECUTE PROCEDURE config.setting_is_user_or_ws(); - -CREATE CONSTRAINT TRIGGER check_setting_is_usr_or_ws - AFTER INSERT OR UPDATE ON config.workstation_setting_type - FOR EACH ROW EXECUTE PROCEDURE config.setting_is_user_or_ws(); - -CREATE OR REPLACE FUNCTION actor.get_cascade_setting( - setting_name TEXT, org_id INT, user_id INT, workstation_id INT) - RETURNS actor.cascade_setting_summary AS -$FUNC$ -DECLARE - setting_value JSON; - summary actor.cascade_setting_summary; - org_setting_type config.org_unit_setting_type%ROWTYPE; -BEGIN - - summary.name := setting_name; - - -- Collect the org setting type status first in case we exit early. - -- The existance of an org setting type is not considered - -- privileged information. - SELECT INTO org_setting_type * - FROM config.org_unit_setting_type WHERE name = setting_name; - IF FOUND THEN - summary.has_org_setting := TRUE; - ELSE - summary.has_org_setting := FALSE; - END IF; - - -- User and workstation settings have the same priority. - -- Start with user settings since that's the simplest code path. - -- The workstation_id is ignored if no user_id is provided. - IF user_id IS NOT NULL THEN - - SELECT INTO summary.value value FROM actor.usr_setting - WHERE usr = user_id AND name = setting_name; - - IF FOUND THEN - -- if we have a value, we have a setting type - summary.has_user_setting := TRUE; - - IF workstation_id IS NOT NULL THEN - -- Only inform the caller about the workstation - -- setting type disposition when a workstation id is - -- provided. Otherwise, it's NULL to indicate UNKNOWN. - summary.has_workstation_setting := FALSE; - END IF; - - RETURN summary; - END IF; - - -- no user setting value, but a setting type may exist - SELECT INTO summary.has_user_setting EXISTS ( - SELECT TRUE FROM config.usr_setting_type - WHERE name = setting_name - ); - - IF workstation_id IS NOT NULL THEN - - IF NOT summary.has_user_setting THEN - -- A workstation setting type may only exist when a user - -- setting type does not. - - SELECT INTO summary.value value - FROM actor.workstation_setting - WHERE workstation = workstation_id AND name = setting_name; - - IF FOUND THEN - -- if we have a value, we have a setting type - summary.has_workstation_setting := TRUE; - RETURN summary; - END IF; - - -- no value, but a setting type may exist - SELECT INTO summary.has_workstation_setting EXISTS ( - SELECT TRUE FROM config.workstation_setting_type - WHERE name = setting_name - ); - END IF; - - -- Finally make use of the workstation to determine the org - -- unit if none is provided. - IF org_id IS NULL AND summary.has_org_setting THEN - SELECT INTO org_id owning_lib - FROM actor.workstation WHERE id = workstation_id; - END IF; - END IF; - END IF; - - -- Some org unit settings are protected by a view permission. - -- First see if we have any data that needs protecting, then - -- check the permission if needed. - - IF NOT summary.has_org_setting THEN - RETURN summary; - END IF; - - -- avoid putting the value into the summary until we confirm - -- the value should be visible to the caller. - SELECT INTO setting_value value - FROM actor.org_unit_ancestor_setting(setting_name, org_id); - - IF NOT FOUND THEN - -- No value found -- perm check is irrelevant. - RETURN summary; - END IF; - - IF org_setting_type.view_perm IS NOT NULL THEN - - IF user_id IS NULL THEN - RAISE NOTICE 'Perm check required but no user_id provided'; - RETURN summary; - END IF; - - IF NOT permission.usr_has_perm( - user_id, (SELECT code FROM permission.perm_list - WHERE id = org_setting_type.view_perm), org_id) - THEN - RAISE NOTICE 'Perm check failed for user % on %', - user_id, org_setting_type.view_perm; - RETURN summary; - END IF; - END IF; - - -- Perm check succeeded or was not necessary. - summary.value := setting_value; - RETURN summary; -END; -$FUNC$ LANGUAGE PLPGSQL; - - -CREATE OR REPLACE FUNCTION actor.get_cascade_setting_batch( - setting_names TEXT[], org_id INT, user_id INT, workstation_id INT) - RETURNS SETOF actor.cascade_setting_summary AS -$FUNC$ --- Returns a row per setting matching the setting name order. If no --- value is applied, NULL is returned to retain name-response ordering. -DECLARE - setting_name TEXT; - summary actor.cascade_setting_summary; -BEGIN - FOREACH setting_name IN ARRAY setting_names LOOP - SELECT INTO summary * FROM actor.get_cascade_setting( - setting_Name, org_id, user_id, workstation_id); - RETURN NEXT summary; - END LOOP; -END; -$FUNC$ LANGUAGE PLPGSQL; - -COMMIT; - - - diff --git a/Open-ILS/src/sql/Pg/upgrade/YYYY.data.workstation-settings.sql b/Open-ILS/src/sql/Pg/upgrade/YYYY.data.workstation-settings.sql deleted file mode 100644 index ba841cd516..0000000000 --- a/Open-ILS/src/sql/Pg/upgrade/YYYY.data.workstation-settings.sql +++ /dev/null @@ -1,928 +0,0 @@ -BEGIN; - -INSERT INTO permission.perm_list (id, code, description) VALUES - (608, 'APPLY_WORKSTATION_SETTING', - oils_i18n_gettext(608, 'APPLY_WORKSTATION_SETTING', 'ppl', 'description')); - -INSERT INTO config.workstation_setting_type (name, grp, datatype, label) -VALUES ( - 'eg.circ.checkin.no_precat_alert', 'circ', 'bool', - oils_i18n_gettext( - 'eg.circ.checkin.no_precat_alert', - 'Checkin: Ignore Precataloged Items', - 'cwst', 'label' - ) -), ( - 'eg.circ.checkin.noop', 'circ', 'bool', - oils_i18n_gettext( - 'eg.circ.checkin.noop', - 'Checkin: Suppress Holds and Transits', - 'cwst', 'label' - ) -), ( - 'eg.circ.checkin.void_overdues', 'circ', 'bool', - oils_i18n_gettext( - 'eg.circ.checkin.void_overdues', - 'Checkin: Amnesty Mode', - 'cwst', 'label' - ) -), ( - 'eg.circ.checkin.auto_print_holds_transits', 'circ', 'bool', - oils_i18n_gettext( - 'eg.circ.checkin.auto_print_holds_transits', - 'Checkin: Auto-Print Holds and Transits', - 'cwst', 'label' - ) -), ( - 'eg.circ.checkin.clear_expired', 'circ', 'bool', - oils_i18n_gettext( - 'eg.circ.checkin.clear_expired', - 'Checkin: Clear Holds Shelf', - 'cwst', 'label' - ) -), ( - 'eg.circ.checkin.retarget_holds', 'circ', 'bool', - oils_i18n_gettext( - 'eg.circ.checkin.retarget_holds', - 'Checkin: Retarget Local Holds', - 'cwst', 'label' - ) -), ( - 'eg.circ.checkin.retarget_holds_all', 'circ', 'bool', - oils_i18n_gettext( - 'eg.circ.checkin.retarget_holds_all', - 'Checkin: Retarget All Statuses', - 'cwst', 'label' - ) -), ( - 'eg.circ.checkin.hold_as_transit', 'circ', 'bool', - oils_i18n_gettext( - 'eg.circ.checkin.hold_as_transit', - 'Checkin: Capture Local Holds as Transits', - 'cwst', 'label' - ) -), ( - 'eg.circ.checkin.manual_float', 'circ', 'bool', - oils_i18n_gettext( - 'eg.circ.checkin.manual_float', - 'Checkin: Manual Floating Active', - 'cwst', 'label' - ) -), ( - 'eg.circ.patron.summary.collapse', 'circ', 'bool', - oils_i18n_gettext( - 'eg.circ.patron.summary.collapse', - 'Collaps Patron Summary Display', - 'cwst', 'label' - ) -), ( - 'circ.bills.receiptonpay', 'circ', 'bool', - oils_i18n_gettext( - 'circ.bills.receiptonpay', - 'Print Receipt On Payment', - 'cwst', 'label' - ) -), ( - 'circ.renew.strict_barcode', 'circ', 'bool', - oils_i18n_gettext( - 'circ.renew.strict_barcode', - 'Renew: Strict Barcode', - 'cwst', 'label' - ) -), ( - 'circ.checkin.strict_barcode', 'circ', 'bool', - oils_i18n_gettext( - 'circ.checkin.strict_barcode', - 'Checkin: Strict Barcode', - 'cwst', 'label' - ) -), ( - 'circ.checkout.strict_barcode', 'circ', 'bool', - oils_i18n_gettext( - 'circ.checkout.strict_barcode', - 'Checkout: Strict Barcode', - 'cwst', 'label' - ) -), ( - 'cat.holdings_show_copies', 'cat', 'bool', - oils_i18n_gettext( - 'cat.holdings_show_copies', - 'Holdings View Show Copies', - 'cwst', 'label' - ) -), ( - 'cat.holdings_show_empty', 'cat', 'bool', - oils_i18n_gettext( - 'cat.holdings_show_empty', - 'Holdings View Show Empty Volumes', - 'cwst', 'label' - ) -), ( - 'cat.holdings_show_empty_org', 'cat', 'bool', - oils_i18n_gettext( - 'cat.holdings_show_empty_org', - 'Holdings View Show Empty Orgs', - 'cwst', 'label' - ) -), ( - 'cat.holdings_show_vols', 'cat', 'bool', - oils_i18n_gettext( - 'cat.holdings_show_vols', - 'Holdings View Show Volumes', - 'cwst', 'label' - ) -), ( - 'cat.copy.defaults', 'cat', 'object', - oils_i18n_gettext( - 'cat.copy.defaults', - 'Copy Edit Default Values', - 'cwst', 'label' - ) -), ( - 'cat.printlabels.default_template', 'cat', 'string', - oils_i18n_gettext( - 'cat.printlabels.default_template', - 'Print Label Default Template', - 'cwst', 'label' - ) -), ( - 'cat.printlabels.templates', 'cat', 'object', - oils_i18n_gettext( - 'cat.printlabels.templates', - 'Print Label Templates', - 'cwst', 'label' - ) -), ( - 'eg.circ.patron.search.include_inactive', 'circ', 'bool', - oils_i18n_gettext( - 'eg.circ.patron.search.include_inactive', - 'Patron Search Include Inactive', - 'cwst', 'label' - ) -), ( - 'eg.circ.patron.search.show_extras', 'circ', 'bool', - oils_i18n_gettext( - 'eg.circ.patron.search.show_extras', - 'Patron Search Show Extra Search Options', - 'cwst', 'label' - ) -), ( - 'eg.grid.circ.checkin.checkin', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.circ.checkin.checkin', - 'Grid Config: circ.checkin.checkin', - 'cwst', 'label' - ) -), ( - 'eg.grid.circ.checkin.capture', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.circ.checkin.capture', - 'Grid Config: circ.checkin.capture', - 'cwst', 'label' - ) -), ( - 'eg.grid.admin.server.config.copy_tag_type', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.admin.server.config.copy_tag_type', - 'Grid Config: admin.server.config.copy_tag_type', - 'cwst', 'label' - ) -), ( - 'eg.grid.admin.server.config.metabib_field_virtual_map.grid', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.admin.server.config.metabib_field_virtual_map.grid', - 'Grid Config: admin.server.config.metabib_field_virtual_map.grid', - 'cwst', 'label' - ) -), ( - 'eg.grid.admin.server.config.metabib_field.grid', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.admin.server.config.metabib_field.grid', - 'Grid Config: admin.server.config.metabib_field.grid', - 'cwst', 'label' - ) -), ( - 'eg.grid.admin.server.config.marc_field', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.admin.server.config.marc_field', - 'Grid Config: admin.server.config.marc_field', - 'cwst', 'label' - ) -), ( - 'eg.grid.admin.server.asset.copy_tag', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.admin.server.asset.copy_tag', - 'Grid Config: admin.server.asset.copy_tag', - 'cwst', 'label' - ) -), ( - 'eg.grid.admin.local.circ.neg_balance_users', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.admin.local.circ.neg_balance_users', - 'Grid Config: admin.local.circ.neg_balance_users', - 'cwst', 'label' - ) -), ( - 'eg.grid.admin.local.rating.badge', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.admin.local.rating.badge', - 'Grid Config: admin.local.rating.badge', - 'cwst', 'label' - ) -), ( - 'eg.grid.admin.workstation.work_log', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.admin.workstation.work_log', - 'Grid Config: admin.workstation.work_log', - 'cwst', 'label' - ) -), ( - 'eg.grid.admin.workstation.patron_log', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.admin.workstation.patron_log', - 'Grid Config: admin.workstation.patron_log', - 'cwst', 'label' - ) -), ( - 'eg.grid.admin.serials.pattern_template', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.admin.serials.pattern_template', - 'Grid Config: admin.serials.pattern_template', - 'cwst', 'label' - ) -), ( - 'eg.grid.serials.copy_templates', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.serials.copy_templates', - 'Grid Config: serials.copy_templates', - 'cwst', 'label' - ) -), ( - 'eg.grid.cat.record_overlay.holdings', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.cat.record_overlay.holdings', - 'Grid Config: cat.record_overlay.holdings', - 'cwst', 'label' - ) -), ( - 'eg.grid.cat.bucket.record.search', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.cat.bucket.record.search', - 'Grid Config: cat.bucket.record.search', - 'cwst', 'label' - ) -), ( - 'eg.grid.cat.bucket.record.view', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.cat.bucket.record.view', - 'Grid Config: cat.bucket.record.view', - 'cwst', 'label' - ) -), ( - 'eg.grid.cat.bucket.record.pending', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.cat.bucket.record.pending', - 'Grid Config: cat.bucket.record.pending', - 'cwst', 'label' - ) -), ( - 'eg.grid.cat.bucket.copy.view', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.cat.bucket.copy.view', - 'Grid Config: cat.bucket.copy.view', - 'cwst', 'label' - ) -), ( - 'eg.grid.cat.bucket.copy.pending', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.cat.bucket.copy.pending', - 'Grid Config: cat.bucket.copy.pending', - 'cwst', 'label' - ) -), ( - 'eg.grid.cat.items', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.cat.items', - 'Grid Config: cat.items', - 'cwst', 'label' - ) -), ( - 'eg.grid.cat.volcopy.copies', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.cat.volcopy.copies', - 'Grid Config: cat.volcopy.copies', - 'cwst', 'label' - ) -), ( - 'eg.grid.cat.volcopy.copies.complete', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.cat.volcopy.copies.complete', - 'Grid Config: cat.volcopy.copies.complete', - 'cwst', 'label' - ) -), ( - 'eg.grid.cat.peer_bibs', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.cat.peer_bibs', - 'Grid Config: cat.peer_bibs', - 'cwst', 'label' - ) -), ( - 'eg.grid.cat.catalog.holds', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.cat.catalog.holds', - 'Grid Config: cat.catalog.holds', - 'cwst', 'label' - ) -), ( - 'eg.grid.cat.holdings', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.cat.holdings', - 'Grid Config: cat.holdings', - 'cwst', 'label' - ) -), ( - 'eg.grid.cat.z3950_results', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.cat.z3950_results', - 'Grid Config: cat.z3950_results', - 'cwst', 'label' - ) -), ( - 'eg.grid.circ.holds.shelf', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.circ.holds.shelf', - 'Grid Config: circ.holds.shelf', - 'cwst', 'label' - ) -), ( - 'eg.grid.circ.holds.pull', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.circ.holds.pull', - 'Grid Config: circ.holds.pull', - 'cwst', 'label' - ) -), ( - 'eg.grid.circ.in_house_use', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.circ.in_house_use', - 'Grid Config: circ.in_house_use', - 'cwst', 'label' - ) -), ( - 'eg.grid.circ.renew', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.circ.renew', - 'Grid Config: circ.renew', - 'cwst', 'label' - ) -), ( - 'eg.grid.circ.transits.list', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.circ.transits.list', - 'Grid Config: circ.transits.list', - 'cwst', 'label' - ) -), ( - 'eg.grid.circ.patron.holds', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.circ.patron.holds', - 'Grid Config: circ.patron.holds', - 'cwst', 'label' - ) -), ( - 'eg.grid.circ.pending_patrons.list', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.circ.pending_patrons.list', - 'Grid Config: circ.pending_patrons.list', - 'cwst', 'label' - ) -), ( - 'eg.grid.circ.patron.items_out.noncat', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.circ.patron.items_out.noncat', - 'Grid Config: circ.patron.items_out.noncat', - 'cwst', 'label' - ) -), ( - 'eg.grid.circ.patron.items_out', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.circ.patron.items_out', - 'Grid Config: circ.patron.items_out', - 'cwst', 'label' - ) -), ( - 'eg.grid.circ.patron.billhistory_payments', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.circ.patron.billhistory_payments', - 'Grid Config: circ.patron.billhistory_payments', - 'cwst', 'label' - ) -), ( - 'eg.grid.user.bucket.view', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.user.bucket.view', - 'Grid Config: user.bucket.view', - 'cwst', 'label' - ) -), ( - 'eg.grid.user.bucket.pending', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.user.bucket.pending', - 'Grid Config: user.bucket.pending', - 'cwst', 'label' - ) -), ( - 'eg.grid.circ.patron.staff_messages', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.circ.patron.staff_messages', - 'Grid Config: circ.patron.staff_messages', - 'cwst', 'label' - ) -), ( - 'eg.grid.circ.patron.archived_messages', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.circ.patron.archived_messages', - 'Grid Config: circ.patron.archived_messages', - 'cwst', 'label' - ) -), ( - 'eg.grid.circ.patron.bills', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.circ.patron.bills', - 'Grid Config: circ.patron.bills', - 'cwst', 'label' - ) -), ( - 'eg.grid.circ.patron.checkout', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.circ.patron.checkout', - 'Grid Config: circ.patron.checkout', - 'cwst', 'label' - ) -), ( - 'eg.grid.serials.mfhd_grid', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.serials.mfhd_grid', - 'Grid Config: serials.mfhd_grid', - 'cwst', 'label' - ) -), ( - 'eg.grid.serials.view_item_grid', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.serials.view_item_grid', - 'Grid Config: serials.view_item_grid', - 'cwst', 'label' - ) -), ( - 'eg.grid.serials.dist_stream_grid', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.serials.dist_stream_grid', - 'Grid Config: serials.dist_stream_grid', - 'cwst', 'label' - ) -), ( - 'eg.grid.circ.patron.search', 'gui', 'object', - oils_i18n_gettext( - 'eg.grid.circ.patron.search', - 'Grid Config: circ.patron.search', - 'cwst', 'label' - ) -), ( - 'eg.cat.record.summary.collapse', 'gui', 'bool', - oils_i18n_gettext( - 'eg.cat.record.summary.collapse', - 'Collapse Bib Record Summary', - 'cwst', 'label' - ) -), ( - 'cat.marcedit.flateditor', 'gui', 'bool', - oils_i18n_gettext( - 'cat.marcedit.flateditor', - 'Use Flat MARC Editor', - 'cwst', 'label' - ) -), ( - 'cat.marcedit.stack_subfields', 'gui', 'bool', - oils_i18n_gettext( - 'cat.marcedit.stack_subfields', - 'MARC Editor Stack Subfields', - 'cwst', 'label' - ) -), ( - 'eg.offline.print_receipt', 'gui', 'bool', - oils_i18n_gettext( - 'eg.offline.print_receipt', - 'Offline Print Receipt', - 'cwst', 'label' - ) -), ( - 'eg.offline.strict_barcode', 'gui', 'bool', - oils_i18n_gettext( - 'eg.offline.strict_barcode', - 'Offline Use Strict Barcode', - 'cwst', 'label' - ) -), ( - 'cat.default_bib_marc_template', 'gui', 'string', - oils_i18n_gettext( - 'cat.default_bib_marc_template', - 'Default MARC Template', - 'cwst', 'label' - ) -), ( - 'eg.audio.disable', 'gui', 'bool', - oils_i18n_gettext( - 'eg.audio.disable', - 'Disable Staff Client Notification Audio', - 'cwst', 'label' - ) -), ( - 'eg.search.adv_pane', 'gui', 'string', - oils_i18n_gettext( - 'eg.search.adv_pane', - 'Catalog Advanced Search Default Pane', - 'cwst', 'label' - ) -), ( - 'eg.print.template_context.bills_current', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template_context.bills_current', - 'Print Template Context: bills_current', - 'cwst', 'label' - ) -), ( - 'eg.print.template.bills_current', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template.bills_current', - 'Print Template: bills_current', - 'cwst', 'label' - ) -), ( - 'eg.print.template_context.bills_historical', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template_context.bills_historical', - 'Print Template Context: bills_historical', - 'cwst', 'label' - ) -), ( - 'eg.print.template.bills_historical', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template.bills_historical', - 'Print Template: bills_historical', - 'cwst', 'label' - ) -), ( - 'eg.print.template_context.bill_payment', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template_context.bill_payment', - 'Print Template Context: bill_payment', - 'cwst', 'label' - ) -), ( - 'eg.print.template.bill_payment', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template.bill_payment', - 'Print Template: bill_payment', - 'cwst', 'label' - ) -), ( - 'eg.print.template_context.checkin', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template_context.checkin', - 'Print Template Context: checkin', - 'cwst', 'label' - ) -), ( - 'eg.print.template.checkin', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template.checkin', - 'Print Template: checkin', - 'cwst', 'label' - ) -), ( - 'eg.print.template_context.checkout', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template_context.checkout', - 'Print Template Context: checkout', - 'cwst', 'label' - ) -), ( - 'eg.print.template.checkout', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template.checkout', - 'Print Template: checkout', - 'cwst', 'label' - ) -), ( - 'eg.print.template_context.hold_transit_slip', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template_context.hold_transit_slip', - 'Print Template Context: hold_transit_slip', - 'cwst', 'label' - ) -), ( - 'eg.print.template.hold_transit_slip', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template.hold_transit_slip', - 'Print Template: hold_transit_slip', - 'cwst', 'label' - ) -), ( - 'eg.print.template_context.hold_shelf_slip', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template_context.hold_shelf_slip', - 'Print Template Context: hold_shelf_slip', - 'cwst', 'label' - ) -), ( - 'eg.print.template.hold_shelf_slip', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template.hold_shelf_slip', - 'Print Template: hold_shelf_slip', - 'cwst', 'label' - ) -), ( - 'eg.print.template_context.holds_for_bib', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template_context.holds_for_bib', - 'Print Template Context: holds_for_bib', - 'cwst', 'label' - ) -), ( - 'eg.print.template.holds_for_bib', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template.holds_for_bib', - 'Print Template: holds_for_bib', - 'cwst', 'label' - ) -), ( - 'eg.print.template_context.holds_for_patron', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template_context.holds_for_patron', - 'Print Template Context: holds_for_patron', - 'cwst', 'label' - ) -), ( - 'eg.print.template.holds_for_patron', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template.holds_for_patron', - 'Print Template: holds_for_patron', - 'cwst', 'label' - ) -), ( - 'eg.print.template_context.hold_pull_list', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template_context.hold_pull_list', - 'Print Template Context: hold_pull_list', - 'cwst', 'label' - ) -), ( - 'eg.print.template.hold_pull_list', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template.hold_pull_list', - 'Print Template: hold_pull_list', - 'cwst', 'label' - ) -), ( - 'eg.print.template_context.hold_shelf_list', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template_context.hold_shelf_list', - 'Print Template Context: hold_shelf_list', - 'cwst', 'label' - ) -), ( - 'eg.print.template.hold_shelf_list', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template.hold_shelf_list', - 'Print Template: hold_shelf_list', - 'cwst', 'label' - ) -), ( - 'eg.print.template_context.in_house_use_list', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template_context.in_house_use_list', - 'Print Template Context: in_house_use_list', - 'cwst', 'label' - ) -), ( - 'eg.print.template.in_house_use_list', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template.in_house_use_list', - 'Print Template: in_house_use_list', - 'cwst', 'label' - ) -), ( - 'eg.print.template_context.item_status', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template_context.item_status', - 'Print Template Context: item_status', - 'cwst', 'label' - ) -), ( - 'eg.print.template.item_status', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template.item_status', - 'Print Template: item_status', - 'cwst', 'label' - ) -), ( - 'eg.print.template_context.items_out', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template_context.items_out', - 'Print Template Context: items_out', - 'cwst', 'label' - ) -), ( - 'eg.print.template.items_out', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template.items_out', - 'Print Template: items_out', - 'cwst', 'label' - ) -), ( - 'eg.print.template_context.patron_address', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template_context.patron_address', - 'Print Template Context: patron_address', - 'cwst', 'label' - ) -), ( - 'eg.print.template.patron_address', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template.patron_address', - 'Print Template: patron_address', - 'cwst', 'label' - ) -), ( - 'eg.print.template_context.patron_data', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template_context.patron_data', - 'Print Template Context: patron_data', - 'cwst', 'label' - ) -), ( - 'eg.print.template.patron_data', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template.patron_data', - 'Print Template: patron_data', - 'cwst', 'label' - ) -), ( - 'eg.print.template_context.patron_note', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template_context.patron_note', - 'Print Template Context: patron_note', - 'cwst', 'label' - ) -), ( - 'eg.print.template.patron_note', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template.patron_note', - 'Print Template: patron_note', - 'cwst', 'label' - ) -), ( - 'eg.print.template_context.renew', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template_context.renew', - 'Print Template Context: renew', - 'cwst', 'label' - ) -), ( - 'eg.print.template.renew', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template.renew', - 'Print Template: renew', - 'cwst', 'label' - ) -), ( - 'eg.print.template_context.transit_list', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template_context.transit_list', - 'Print Template Context: transit_list', - 'cwst', 'label' - ) -), ( - 'eg.print.template.transit_list', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template.transit_list', - 'Print Template: transit_list', - 'cwst', 'label' - ) -), ( - 'eg.print.template_context.transit_slip', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template_context.transit_slip', - 'Print Template Context: transit_slip', - 'cwst', 'label' - ) -), ( - 'eg.print.template.transit_slip', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template.transit_slip', - 'Print Template: transit_slip', - 'cwst', 'label' - ) -), ( - 'eg.print.template_context.offline_checkout', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template_context.offline_checkout', - 'Print Template Context: offline_checkout', - 'cwst', 'label' - ) -), ( - 'eg.print.template.offline_checkout', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template.offline_checkout', - 'Print Template: offline_checkout', - 'cwst', 'label' - ) -), ( - 'eg.print.template_context.offline_renew', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template_context.offline_renew', - 'Print Template Context: offline_renew', - 'cwst', 'label' - ) -), ( - 'eg.print.template.offline_renew', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template.offline_renew', - 'Print Template: offline_renew', - 'cwst', 'label' - ) -), ( - 'eg.print.template_context.offline_checkin', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template_context.offline_checkin', - 'Print Template Context: offline_checkin', - 'cwst', 'label' - ) -), ( - 'eg.print.template.offline_checkin', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template.offline_checkin', - 'Print Template: offline_checkin', - 'cwst', 'label' - ) -), ( - 'eg.print.template_context.offline_in_house_use', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template_context.offline_in_house_use', - 'Print Template Context: offline_in_house_use', - 'cwst', 'label' - ) -), ( - 'eg.print.template.offline_in_house_use', 'gui', 'string', - oils_i18n_gettext( - 'eg.print.template.offline_in_house_use', - 'Print Template: offline_in_house_use', - 'cwst', 'label' - ) -), ( - 'eg.serials.stream_names', 'gui', 'array', - oils_i18n_gettext( - 'eg.serials.stream_names', - 'Serials Local Stream Names', - 'cwst', 'label' - ) -), ( - 'eg.serials.items.do_print_routing_lists', 'gui', 'bool', - oils_i18n_gettext( - 'eg.serials.items.do_print_routing_lists', - 'Serials Print Routing Lists', - 'cwst', 'label' - ) -), ( - 'eg.serials.items.receive_and_barcode', 'gui', 'bool', - oils_i18n_gettext( - 'eg.serials.items.receive_and_barcode', - 'Serials Barcode On Receive', - 'cwst', 'label' - ) -); - - --- More values with fm_class'es -INSERT INTO config.workstation_setting_type (name, grp, datatype, fm_class, label) -VALUES ( - 'eg.search.search_lib', 'gui', 'link', 'aou', - oils_i18n_gettext( - 'eg.search.search_lib', - 'Staff Catalog Default Search Library', - 'cwst', 'label' - ) -), ( - 'eg.search.pref_lib', 'gui', 'link', 'aou', - oils_i18n_gettext( - 'eg.search.pref_lib', - 'Staff Catalog Preferred Library', - 'cwst', 'label' - ) -); - - -COMMIT; - -