lp1645862 Default Grid Width OU Settings user/khuckins/lp1645862-grid-default-width-ou-settings
authorKyle Huckins <khuckins@catalyte.io>
Mon, 21 Mar 2022 23:38:09 +0000 (23:38 +0000)
committerKyle Huckins <khuckins@catalyte.io>
Mon, 21 Mar 2022 23:38:09 +0000 (23:38 +0000)
- Create eg.grid Library setting types for existing grids, mirroring workstation setting types
- Add Grid action to save Grid configuration as an Org Unit Setting.
- Ensure grids prefer Workstation grid config settings before OU-based grid configs.

Signed-off-by: Kyle Huckins <khuckins@catalyte.io>
 Changes to be committed:
new file:   Open-ILS/src/eg2/src/app/share/grid/grid-toolbar-save-config-dialog.component.html
new file:   Open-ILS/src/eg2/src/app/share/grid/grid-toolbar-save-config-dialog.component.ts
modified:   Open-ILS/src/eg2/src/app/share/grid/grid-toolbar.component.html
modified:   Open-ILS/src/eg2/src/app/share/grid/grid-toolbar.component.ts
modified:   Open-ILS/src/eg2/src/app/share/grid/grid.component.ts
modified:   Open-ILS/src/eg2/src/app/share/grid/grid.module.ts
modified:   Open-ILS/src/eg2/src/app/share/grid/grid.ts
modified:   Open-ILS/src/sql/Pg/950.data.seed-values.sql
new file:   Open-ILS/src/sql/Pg/upgrade/xxxx.data.lp1645862-default-widths-for-grid-columns.sql

Open-ILS/src/eg2/src/app/share/grid/grid-toolbar-save-config-dialog.component.html [new file with mode: 0644]
Open-ILS/src/eg2/src/app/share/grid/grid-toolbar-save-config-dialog.component.ts [new file with mode: 0644]
Open-ILS/src/eg2/src/app/share/grid/grid-toolbar.component.html
Open-ILS/src/eg2/src/app/share/grid/grid-toolbar.component.ts
Open-ILS/src/eg2/src/app/share/grid/grid.component.ts
Open-ILS/src/eg2/src/app/share/grid/grid.module.ts
Open-ILS/src/eg2/src/app/share/grid/grid.ts
Open-ILS/src/sql/Pg/950.data.seed-values.sql
Open-ILS/src/sql/Pg/upgrade/xxxx.data.lp1645862-default-widths-for-grid-columns.sql [new file with mode: 0644]

diff --git a/Open-ILS/src/eg2/src/app/share/grid/grid-toolbar-save-config-dialog.component.html b/Open-ILS/src/eg2/src/app/share/grid/grid-toolbar-save-config-dialog.component.html
new file mode 100644 (file)
index 0000000..31c6e32
--- /dev/null
@@ -0,0 +1,22 @@
+<ng-template #dialogContent>\r
+  <div class="modal-header bg-info">\r
+    <h4 class="modal-title" i18n>Save Grid Configuration</h4>\r
+    <button type="button" class="close" \r
+      i18n-aria-label aria-label="Close" (click)="close()">\r
+      <span aria-hidden="true">&times;</span>\r
+    </button>\r
+  </div>\r
+  <div class="modal-body">\r
+    <p i18n>Save Configuration for Grid at...</p>\r
+    <div class="text-center">\r
+      <eg-org-select [initialOrgId]="getInitialOrg()" (onChange)="setConfigSaveOrg($event)">\r
+      </eg-org-select>\r
+    </div>\r
+  </div>\r
+  <div class="modal-footer">\r
+    <button type="button" class="btn btn-success" \r
+      (click)="close(configOrg)" i18n>Confirm</button>\r
+    <button type="button" class="btn btn-warning" \r
+      (click)="close()" i18n>Cancel</button>\r
+  </div>\r
+</ng-template>
\ No newline at end of file
diff --git a/Open-ILS/src/eg2/src/app/share/grid/grid-toolbar-save-config-dialog.component.ts b/Open-ILS/src/eg2/src/app/share/grid/grid-toolbar-save-config-dialog.component.ts
new file mode 100644 (file)
index 0000000..e97d578
--- /dev/null
@@ -0,0 +1,43 @@
+import {Component, OnInit, Input, ViewChild} from '@angular/core';\r
+import {Observable} from 'rxjs';\r
+import {NetService} from '@eg/core/net.service';\r
+import {IdlService, IdlObject} from '@eg/core/idl.service';\r
+import {AuthService} from '@eg/core/auth.service';\r
+import {OrgService} from '@eg/core/org.service';\r
+import {DialogComponent} from '@eg/share/dialog/dialog.component';\r
+import {NgbModal, NgbModalOptions} from '@ng-bootstrap/ng-bootstrap';\r
+\r
+/**\r
+ * Dialog for saving grid configuration.\r
+ */\r
+\r
+@Component({\r
+  selector: 'eg-grid-toolbar-save-config-dialog',\r
+  templateUrl: 'grid-toolbar-save-config-dialog.component.html'\r
+})\r
+\r
+export class SaveGridConfigurationComponent\r
+    extends DialogComponent implements OnInit {\r
+\r
+    // Value to return to the caller\r
+    @Input() public configOrg: IdlObject;\r
+\r
+    constructor(\r
+        private modal: NgbModal,\r
+        private net: NetService,\r
+        private idl: IdlService,\r
+        private org: OrgService,\r
+        private auth: AuthService) {\r
+        super(modal);\r
+    }\r
+\r
+    ngOnInit() {}\r
+    \r
+    setConfigSaveOrg(org) {\r
+        this.configOrg = org;\r
+    }\r
+    \r
+    getInitialOrg() {\r
+        return this.auth.user().ws_ou();\r
+    }\r
+}
\ No newline at end of file
index 656ab99..6b9de3b 100644 (file)
@@ -1,6 +1,9 @@
 <eg-grid-toolbar-actions-editor #toolbarActionsEditor [gridContext]="gridContext">
 </eg-grid-toolbar-actions-editor>
 
+<eg-grid-toolbar-save-config-dialog #saveGridConfigDialog>
+</eg-grid-toolbar-save-config-dialog>
+
 <div class="eg-grid-toolbar mb-2">
 
   <div class="btn-toolbar">
       </button>
       <a class="dropdown-item label-with-material-icon"
         *ngIf="!disableSaveSettings"
-        (click)="saveGridConfig()">
+        (click)="saveGridConfig(false)">
         <span class="material-icons">save</span>
         <span class="ml-2" i18n>Save Grid Settings</span>
       </a>
       <a class="dropdown-item label-with-material-icon"
+        *ngIf="!disableSaveSettings"
+        (click)="saveGridConfig(true)">
+        <span class="material-icons">save</span>
+        <span class="ml-2" i18n>Save Grid Settings to Org</span>
+      </a>
+      <a class="dropdown-item label-with-material-icon"
         (click)="gridContext.columnSet.reset()">
         <span class="material-icons">restore</span>
         <span class="ml-2" i18n>Reset Columns</span>
index b9c1d30..169c1e7 100644 (file)
@@ -1,8 +1,10 @@
-import {Component, Input, OnInit} from '@angular/core';
+import {Component, Input, ViewChild, OnInit} from '@angular/core';
 import {DomSanitizer, SafeUrl} from '@angular/platform-browser';
 import {GridToolbarButton, GridToolbarAction, GridContext} from '@eg/share/grid/grid';
 import {GridColumnWidthComponent} from './grid-column-width.component';
 import {GridPrintComponent} from './grid-print.component';
+import {SaveGridConfigurationComponent} from './grid-toolbar-save-config-dialog.component';
+import {IdlObject, IdlService} from '@eg/core/idl.service';
 
 @Component({
   selector: 'eg-grid-toolbar',
@@ -11,6 +13,7 @@ import {GridPrintComponent} from './grid-print.component';
 
 export class GridToolbarComponent implements OnInit {
 
+    @ViewChild('saveGridConfigDialog', { static: true }) saveGridConfigDialog: SaveGridConfigurationComponent;
     @Input() gridContext: GridContext;
     @Input() colWidthConfig: GridColumnWidthComponent;
     @Input() gridPrinter: GridPrintComponent;
@@ -64,16 +67,26 @@ export class GridToolbarComponent implements OnInit {
         this.gridContext.toolbarActions = unGrouped.concat(grouped2);
     }
 
-    saveGridConfig() {
+    saveGridConfig(saveGridAsOU: boolean) {
         // TODO: when server-side settings are supported, this operation
         // may offer to save to user/workstation OR org unit settings
         // depending on perms.
-
-        this.gridContext.saveGridConfig().then(
-            // hide the with config after saving
-            ok => this.colWidthConfig.isVisible = false,
-            err => console.error(`Error saving columns: ${err}`)
-        );
+        if (saveGridAsOU) {
+            this.saveGridConfigDialog.open().subscribe(ok => {
+                this.gridContext.saveGridConfigToOrg(ok).then(ok => {
+                    this.colWidthConfig.isVisible = false;
+                });
+            }, rejection => {});
+        } else {
+            this.gridContext.saveGridConfig().then(
+                // hide the with config after saving
+                ok => {
+                    this.colWidthConfig.isVisible = false;
+                }, err => {
+                    console.error(`Error saving columns: ${err}`);
+                }
+            );
+        }
     }
 
     performButtonAction(button: GridToolbarButton) {
index 23d4261..fe81f9a 100644 (file)
@@ -1,7 +1,10 @@
 import {Component, Input, Output, OnInit, AfterViewInit, EventEmitter,
     OnDestroy, ViewChild, ViewEncapsulation} from '@angular/core';
+import {AuthService} from '@eg/core/auth.service';
+import {NetService} from '@eg/core/net.service';
 import {IdlService} from '@eg/core/idl.service';
 import {OrgService} from '@eg/core/org.service';
+import {PcrudService} from '@eg/core/pcrud.service';
 import {ServerStoreService} from '@eg/core/server-store.service';
 import {FormatService} from '@eg/core/format.service';
 import {GridContext, GridColumn, GridDataSource,
@@ -130,13 +133,16 @@ export class GridComponent implements OnInit, AfterViewInit, OnDestroy {
     @ViewChild('toolbar', { static: true }) toolbar: GridToolbarComponent;
 
     constructor(
+        private auth: AuthService,
         private idl: IdlService,
+        private net: NetService,
         private org: OrgService,
+        private pcrud: PcrudService,
         private store: ServerStoreService,
         private format: FormatService
     ) {
         this.context =
-            new GridContext(this.idl, this.org, this.store, this.format);
+            new GridContext(this.auth, this.idl, this.net, this.org, this.pcrud, this.store, this.format);
         this.onRowActivate = new EventEmitter<any>();
         this.onRowClick = new EventEmitter<any>();
     }
index 0757fab..481c90e 100644 (file)
@@ -16,6 +16,7 @@ import {GridColumnWidthComponent} from './grid-column-width.component';
 import {GridPrintComponent} from './grid-print.component';
 import {GridFilterControlComponent} from './grid-filter-control.component';
 import {GridToolbarActionsEditorComponent} from './grid-toolbar-actions-editor.component';
+import {SaveGridConfigurationComponent} from './grid-toolbar-save-config-dialog.component';
 
 
 @NgModule({
@@ -35,7 +36,8 @@ import {GridToolbarActionsEditorComponent} from './grid-toolbar-actions-editor.c
         GridColumnWidthComponent,
         GridPrintComponent,
         GridFilterControlComponent,
-        GridToolbarActionsEditorComponent
+        GridToolbarActionsEditorComponent,
+        SaveGridConfigurationComponent
     ],
     imports: [
         EgCommonModule,
index 612a6a8..21420ce 100644 (file)
@@ -3,7 +3,10 @@
  */
 import {TemplateRef, EventEmitter, QueryList} from '@angular/core';
 import {Observable, Subscription} from 'rxjs';
+import {AuthService} from '@eg/core/auth.service';
+import {NetService} from '@eg/core/net.service';
 import {IdlService, IdlObject} from '@eg/core/idl.service';
+import {PcrudService} from '@eg/core/pcrud.service';
 import {OrgService} from '@eg/core/org.service';
 import {ServerStoreService} from '@eg/core/server-store.service';
 import {FormatService} from '@eg/core/format.service';
@@ -533,19 +536,28 @@ export class GridContext {
     filterControls: QueryList<GridFilterControlComponent>;
 
     // Services injected by our grid component
+    auth: AuthService;
     idl: IdlService;
+    net: NetService;
     org: OrgService;
+    pcrud: PcrudService;
     store: ServerStoreService;
     format: FormatService;
 
     constructor(
+        auth: AuthService,
         idl: IdlService,
+        net: NetService,
         org: OrgService,
+        pcrud: PcrudService,
         store: ServerStoreService,
         format: FormatService) {
 
+        this.auth = auth
         this.idl = idl;
+        this.net = net;
         this.org = org;
+        this.pcrud = pcrud;
         this.store = store;
         this.format = format;
         this.pager = new Pager();
@@ -1170,10 +1182,7 @@ export class GridContext {
         });
     }
 
-    saveGridConfig(): Promise<any> {
-        if (!this.persistKey) {
-            throw new Error('Grid persistKey required to save columns');
-        }
+    prepGridConfig() {
         const conf = new GridPersistConf();
         conf.version = 2;
         conf.limit = this.pager.limit;
@@ -1186,14 +1195,62 @@ export class GridContext {
             .filter(action => !action.isGroup && action.hidden)
             .map(action => action.label);
 
+        return conf;
+    }
+
+    saveGridConfig(): Promise<any> {
+        if (!this.persistKey) {
+            throw new Error('Grid persistKey required to save columns');
+        }
+
+        let conf = this.prepGridConfig();
+
         return this.store.setItem('eg.grid.' + this.persistKey, conf);
     }
 
+    saveGridConfigToOrg(orgUnit): Promise<any> {
+        if (!this.persistKey) {
+            throw new Error('Grid persistKey required to save columns');
+        }
+
+        let conf = this.prepGridConfig();
+        let settingKey = 'eg.grid.' + this.persistKey;
+
+        let gridConfig = {};
+        gridConfig[settingKey] = conf;
+
+        let settingObj = {setting: gridConfig, context: orgUnit};
+
+        return new Promise((resolve, reject) => {
+            this.net.request(
+                'open-ils.actor',
+                'open-ils.actor.org_unit.settings.update',
+                this.auth.token(), settingObj.context.id(), settingObj.setting
+            ).subscribe(res => {
+                return res;
+            }, err => {
+                console.debug(err)
+            }, () => {
+                resolve(gridConfig)
+            });
+        });
+    }
+
     // TODO: saveGridConfigAsOrgSetting(...)
 
     getGridConfig(persistKey: string): Promise<GridPersistConf> {
         if (!persistKey) { return Promise.resolve(null); }
-        return this.store.getItem('eg.grid.' + persistKey);
+        let settingKey = 'eg.grid.' + persistKey;
+
+        return this.store.getItem(settingKey) || this.getGridOUConfig(settingKey);
+    }
+
+    getGridOUConfig(settingKey: string): Promise<GridPersistConf> {
+        return this.org.settings([settingKey]).then(setting => {
+            if (setting[settingKey]) {
+                return setting[settingKey];
+            }
+        });
     }
 
     columnHasTextGenerator(col: GridColumn): boolean {
index 58f4a18..5a6df16 100644 (file)
@@ -22049,3 +22049,1183 @@ VALUES (
         'cwst', 'label'
     )
 );
+
+INSERT INTO config.org_unit_setting_type (name, grp, datatype, label)
+VALUES (
+    'eg.grid.circ.checkin.checkin', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.circ.checkin.checkin',
+        'Grid Config: circ.checkin.checkin',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.circ.checkin.capture', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.circ.checkin.capture',
+        'Grid Config: circ.checkin.capture',
+        'coust', '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',
+        'coust', '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',
+        'coust', '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',
+        'coust', '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',
+        'coust', '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',
+        'coust', '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',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.local.rating.badge', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.local.rating.badge',
+        'Grid Config: admin.local.rating.badge',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.workstation.work_log', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.workstation.work_log',
+        'Grid Config: admin.workstation.work_log',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.workstation.patron_log', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.workstation.patron_log',
+        'Grid Config: admin.workstation.patron_log',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.serials.pattern_template', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.serials.pattern_template',
+        'Grid Config: admin.serials.pattern_template',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.serials.copy_templates', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.serials.copy_templates',
+        'Grid Config: serials.copy_templates',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.cat.record_overlay.holdings', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.cat.record_overlay.holdings',
+        'Grid Config: cat.record_overlay.holdings',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.cat.bucket.record.search', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.cat.bucket.record.search',
+        'Grid Config: cat.bucket.record.search',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.cat.bucket.record.view', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.cat.bucket.record.view',
+        'Grid Config: cat.bucket.record.view',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.cat.bucket.record.pending', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.cat.bucket.record.pending',
+        'Grid Config: cat.bucket.record.pending',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.cat.bucket.copy.view', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.cat.bucket.copy.view',
+        'Grid Config: cat.bucket.copy.view',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.cat.bucket.copy.pending', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.cat.bucket.copy.pending',
+        'Grid Config: cat.bucket.copy.pending',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.cat.items', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.cat.items',
+        'Grid Config: cat.items',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.cat.volcopy.copies', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.cat.volcopy.copies',
+        'Grid Config: cat.volcopy.copies',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.cat.volcopy.copies.complete', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.cat.volcopy.copies.complete',
+        'Grid Config: cat.volcopy.copies.complete',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.cat.peer_bibs', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.cat.peer_bibs',
+        'Grid Config: cat.peer_bibs',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.cat.catalog.wide_holds', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.cat.catalog.wide_holds',
+        'Grid Config: cat.catalog.wide_holds',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.hopeless.wide_holds', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.hopeless.wide_holds',
+        'Grid Config: hopeless.wide_holds',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.cat.holdings', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.cat.holdings',
+        'Grid Config: cat.holdings',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.cat.z3950_results', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.cat.z3950_results',
+        'Grid Config: cat.z3950_results',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.circ.wide_holds.shelf', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.circ.wide_holds.shelf',
+        'Grid Config: circ.wide_holds.shelf',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.circ.holds.pull', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.circ.holds.pull',
+        'Grid Config: circ.holds.pull',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.circ.in_house_use', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.circ.in_house_use',
+        'Grid Config: circ.in_house_use',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.circ.renew', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.circ.renew',
+        'Grid Config: circ.renew',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.circ.transits.list', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.circ.transits.list',
+        'Grid Config: circ.transits.list',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.circ.patron.holds', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.circ.patron.holds',
+        'Grid Config: circ.patron.holds',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.circ.pending_patrons.list', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.circ.pending_patrons.list',
+        'Grid Config: circ.pending_patrons.list',
+        'coust', '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',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.circ.patron.items_out', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.circ.patron.items_out',
+        'Grid Config: circ.patron.items_out',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.circ.patron.billhistory_payments', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.circ.patron.billhistory_payments',
+        'Grid Config: circ.patron.billhistory_payments',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.user.bucket.view', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.user.bucket.view',
+        'Grid Config: user.bucket.view',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.user.bucket.pending', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.user.bucket.pending',
+        'Grid Config: user.bucket.pending',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.circ.patron.staff_messages', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.circ.patron.staff_messages',
+        'Grid Config: circ.patron.staff_messages',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.circ.patron.archived_messages', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.circ.patron.archived_messages',
+        'Grid Config: circ.patron.archived_messages',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.circ.patron.bills', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.circ.patron.bills',
+        'Grid Config: circ.patron.bills',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.circ.patron.checkout', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.circ.patron.checkout',
+        'Grid Config: circ.patron.checkout',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.circ.patron.group_members', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.circ.patron.group_members',
+        'Grid Config: circ.patron.group_members',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.serials.mfhd_grid', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.serials.mfhd_grid',
+        'Grid Config: serials.mfhd_grid',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.serials.view_item_grid', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.serials.view_item_grid',
+        'Grid Config: serials.view_item_grid',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.serials.dist_stream_grid', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.serials.dist_stream_grid',
+        'Grid Config: serials.dist_stream_grid',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.circ.patron.search', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.circ.patron.search',
+        'Grid Config: circ.patron.search',
+        'coust', 'label'
+    )
+), (
+  'eg.grid.circ.patron.billhistory_xacts', 'gui', 'object',
+  oils_i18n_gettext(
+    'eg.grid.circ.patron.billhistory_xacts',
+    'Grid Config: circ.patron.billhistory_xacts',
+    'coust', 'label'
+  )
+), (
+    'eg.grid.admin.acq.cancel_reason', 'gui', 'object',
+    oils_i18n_gettext (
+        'eg.grid.admin.acq.cancel_reason',
+        'Grid Config: admin.acq.cancel_reason',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.acq.claim_event_type', 'gui', 'object',
+    oils_i18n_gettext (
+    'eg.grid.admin.acq.claim_event_type',
+        'Grid Config: admin.acq.claim_event_type',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.acq.claim_policy', 'gui', 'object',
+    oils_i18n_gettext (
+    'eg.grid.admin.acq.claim_policy',
+        'Grid Config: admin.acq.claim_policy',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.acq.claim_policy_action', 'gui', 'object',
+    oils_i18n_gettext (
+    'eg.grid.admin.acq.claim_policy_action',
+        'Grid Config: admin.acq.claim_policy_action',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.acq.claim_type', 'gui', 'object',
+    oils_i18n_gettext (
+    'eg.grid.admin.acq.claim_type',
+        'Grid Config: admin.acq.claim_type',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.acq.currency_type', 'gui', 'object',
+    oils_i18n_gettext (
+    'eg.grid.admin.acq.currency_type',
+        'Grid Config: admin.acq.currency_type',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.acq.edi_account', 'gui', 'object',
+    oils_i18n_gettext (
+    'eg.grid.admin.acq.edi_account',
+        'Grid Config: admin.acq.edi_account',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.acq.edi_message', 'gui', 'object',
+    oils_i18n_gettext (
+    'eg.grid.admin.acq.edi_message',
+        'Grid Config: admin.acq.edi_message',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.acq.exchange_rate', 'gui', 'object',
+    oils_i18n_gettext (
+    'eg.grid.admin.acq.exchange_rate',
+        'Grid Config: admin.acq.exchange_rate',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.acq.fund_tag', 'gui', 'object',
+    oils_i18n_gettext (
+    'eg.grid.admin.acq.fund_tag',
+        'Grid Config: admin.acq.fund_tag',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.acq.invoice_item_type', 'gui', 'object',
+    oils_i18n_gettext (
+    'eg.grid.admin.acq.invoice_item_type',
+        'Grid Config: admin.acq.invoice_item_type',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.acq.invoice_payment_method', 'gui', 'object',
+    oils_i18n_gettext (
+    'eg.grid.admin.acq.invoice_payment_method',
+        'Grid Config: admin.acq.invoice_payment_method',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.acq.lineitem_alert_text', 'gui', 'object',
+    oils_i18n_gettext (
+    'eg.grid.admin.acq.lineitem_alert_text',
+        'Grid Config: admin.acq.lineitem_alert_text',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.acq.lineitem_marc_attr_definition', 'gui', 'object',
+    oils_i18n_gettext (
+    'eg.grid.admin.acq.lineitem_marc_attr_definition',
+        'Grid Config: admin.acq.lineitem_marc_attr_definition',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.cat.vandelay.queue.bib', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.cat.vandelay.queue.bib',
+        'Grid Config: Vandelay Bib Queue',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.cat.vandelay.queue.auth', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.cat.vandelay.queue.auth',
+        'Grid Config: Vandelay Authority Queue',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.cat.vandelay.match_set.list', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.cat.vandelay.match_set.list',
+        'Grid Config: Vandelay Match Sets',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.cat.vandelay.match_set.quality', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.cat.vandelay.match_set.quality',
+        'Grid Config: Vandelay Match Quality Metrics',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.cat.vandelay.queue.items', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.cat.vandelay.queue.items',
+        'Grid Config: Vandelay Queue Import Items',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.cat.vandelay.queue.list.bib', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.cat.vandelay.queue.list.bib',
+        'Grid Config: Vandelay Bib Queue List',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.cat.vandelay.queue.bib.items', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.cat.vandelay.queue.bib.items',
+        'Grid Config: Vandelay Bib Items',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.cat.vandelay.queue.list.auth', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.cat.vandelay.queue.list.auth',
+        'Grid Config: Vandelay Authority Queue List',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.vandelay.merge_profile', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.vandelay.merge_profile',
+        'Grid Config: Vandelay Merge Profiles',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.vandelay.bib_attr_definition', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.vandelay.bib_attr_definition',
+        'Grid Config: Vandelay Bib Record Attributes',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.vandelay.import_item_attr_definition', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.vandelay.import_item_attr_definition',
+        'Grid Config: Vandelay Import Item Attributes',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.booking.resource', 'gui', 'object',
+    oils_i18n_gettext (
+        'eg.grid.admin.booking.resource',
+        'Grid Config: admin.booking.resource',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.booking.resource_attr', 'gui', 'object',
+    oils_i18n_gettext (
+    'eg.grid.admin.booking.resource_attr',
+        'Grid Config: admin.booking.resource_attr',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.booking.resource_attr_map', 'gui', 'object',
+    oils_i18n_gettext (
+    'eg.grid.admin.booking.resource_attr_map',
+        'Grid Config: admin.booking.resource_attr_map',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.booking.resource_attr_value', 'gui', 'object',
+    oils_i18n_gettext (
+    'eg.grid.admin.booking.resource_attr_value',
+        'Grid Config: admin.booking.resource_attr_value',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.booking.resource_type', 'gui', 'object',
+    oils_i18n_gettext (
+    'eg.grid.admin.booking.resource_type',
+        'Grid Config: admin.booking.resource_type',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.config.rule_age_hold_protect', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.config.rule_age_hold_protect',
+        'Grid Config: admin.server.config.rule_age_hold_protect',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.asset.stat_cat_sip_fields', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.asset.stat_cat_sip_fields',
+        'Grid Config: admin.server.asset.stat_cat_sip_fields',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.actor.stat_cat_sip_fields', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.actor.stat_cat_sip_fields',
+        'Grid Config: admin.server.actor.stat_cat_sip_fields',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.authority.browse_axis', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.authority.browse_axis',
+        'Grid Config: admin.server.authority.browse_axis',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.authority.control_set', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.authority.control_set',
+        'Grid Config: admin.server.authority.control_set',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.authority.heading_field', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.authority.heading_field',
+        'Grid Config: admin.server.authority.heading_field',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.authority.thesaurus', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.authority.thesaurus',
+        'Grid Config: admin.server.authority.thesaurus',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.config.best_hold_order', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.config.best_hold_order',
+        'Grid Config: admin.server.config.best_hold_order',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.config.billing_type', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.config.billing_type',
+        'Grid Config: admin.server.config.billing_type',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.asset.call_number_prefix', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.asset.call_number_prefix',
+        'Grid Config: admin.server.asset.call_number_prefix',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.asset.call_number_suffix', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.asset.call_number_suffix',
+        'Grid Config: admin.server.asset.call_number_suffix',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.config.rule_circ_duration', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.config.rule_circ_duration',
+        'Grid Config: admin.server.config.rule_circ_duration',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.config.circ_limit_group', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.config.circ_limit_group',
+        'Grid Config: admin.server.config.circ_limit_group',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.config.circ_matrix_weights', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.config.circ_matrix_weights',
+        'Grid Config: admin.server.config.circ_matrix_weights',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.config.rule_max_fine', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.config.rule_max_fine',
+        'Grid Config: admin.server.config.rule_max_fine',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.config.circ_modifier', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.config.circ_modifier',
+        'Grid Config: admin.server.config.circ_modifier',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.config.copy_status', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.config.copy_status',
+        'Grid Config: admin.server.config.copy_status',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.config.floating_group', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.config.floating_group',
+        'Grid Config: admin.server.config.floating_group',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.config.global_flag', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.config.global_flag',
+        'Grid Config: admin.server.config.global_flag',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.config.hard_due_date', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.config.hard_due_date',
+        'Grid Config: admin.server.config.hard_due_date',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.config.hold_matrix_weights', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.config.hold_matrix_weights',
+        'Grid Config: admin.server.config.hold_matrix_weights',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.vandelay.match_set', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.vandelay.match_set',
+        'Grid Config: admin.server.vandelay.match_set',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.config.coded_value_map', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.config.coded_value_map',
+        'Grid Config: admin.server.config.coded_value_map',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.vandelay.import_bib_trash_group', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.vandelay.import_bib_trash_group',
+        'Grid Config: admin.server.vandelay.import_bib_trash_group',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.config.record_attr_definition', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.config.record_attr_definition',
+        'Grid Config: admin.server.config.record_attr_definition',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.config.metabib_class', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.config.metabib_class',
+        'Grid Config: admin.server.config.metabib_class',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.config.metabib_field_ts_map', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.config.metabib_field_ts_map',
+        'Grid Config: admin.server.config.metabib_field_ts_map',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.config.metabib_field', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.config.metabib_field',
+        'Grid Config: admin.server.config.metabib_field',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.permission.perm_list', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.permission.perm_list',
+        'Grid Config: admin.server.permission.perm_list',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.config.remote_account', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.config.remote_account',
+        'Grid Config: admin.server.config.remote_account',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.config.sms_carrier', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.config.sms_carrier',
+        'Grid Config: admin.server.config.sms_carrier',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.config.usr_activity_type', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.config.usr_activity_type',
+        'Grid Config: admin.server.config.usr_activity_type',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.config.weight_assoc', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.config.weight_assoc',
+        'Grid Config: admin.server.config.weight_assoc',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.config.z3950_index_field_map', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.config.z3950_index_field_map',
+        'Grid Config: admin.server.config.z3950_index_field_map',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.config.z3950_source', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.config.z3950_source',
+        'Grid Config: admin.server.config.z3950_source',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.local.config.hold_matrix_matchpoint', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.local.config.hold_matrix_matchpoint',
+        'Grid Config: admin.local.config.hold_matrix_matchpoint',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.local.actor.address_alert', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.local.actor.address_alert',
+        'Grid Config: admin.local.actor.address_alert',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.local.config.barcode_completion', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.local.config.barcode_completion',
+        'Grid Config: admin.local.config.barcode_completion',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.local.actor.copy_alert_suppress', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.local.actor.copy_alert_suppress',
+        'Grid Config: admin.local.actor.copy_alert_suppress',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.local.asset.copy_location', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.local.asset.copy_location',
+        'Grid Config: admin.local.asset.copy_location',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.local.asset.copy_tag', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.local.asset.copy_tag',
+        'Grid Config: admin.local.asset.copy_tag',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.local.permission.grp_penalty_threshold', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.local.permission.grp_penalty_threshold',
+        'Grid Config: admin.local.permission.grp_penalty_threshold',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.local.config.non_cataloged_type', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.local.config.non_cataloged_type',
+        'Grid Config: admin.local.config.non_cataloged_type',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.booking.manage', 'gui', 'object',
+    oils_i18n_gettext(
+        'booking.manage',
+        'Grid Config: Booking Manage Reservations',
+        'coust', 'label')
+), (
+    'eg.grid.booking.pickup.ready', 'gui', 'object',
+    oils_i18n_gettext(
+        'booking.pickup.ready',
+        'Grid Config: Booking Ready to pick up grid',
+        'coust', 'label')
+), (
+    'eg.grid.booking.pickup.picked_up', 'gui', 'object',
+    oils_i18n_gettext(
+        'booking.pickup.picked_up',
+        'Grid Config: Booking Already Picked Up grid',
+        'coust', 'label')
+), (
+    'eg.grid.booking.return.patron.picked_up', 'gui', 'object',
+    oils_i18n_gettext(
+        'booking.return.patron.picked_up',
+        'Grid Config: Booking Return Patron tab Already Picked Up grid',
+        'coust', 'label')
+), (
+    'eg.grid.booking.return.patron.returned', 'gui', 'object',
+    oils_i18n_gettext(
+        'booking.return.patron.returned',
+        'Grid Config: Booking Return Patron tab Returned Today grid',
+        'coust', 'label')
+), (
+    'eg.grid.booking.return.resource.picked_up', 'gui', 'object',
+    oils_i18n_gettext(
+        'booking.return.resourcce.picked_up',
+        'Grid Config: Booking Return Resource tab Already Picked Up grid',
+        'coust', 'label')
+), (
+    'eg.grid.booking.return.resource.returned', 'gui', 'object',
+    oils_i18n_gettext(
+        'booking.return.resource.returned',
+        'Grid Config: Booking Return Resource tab Returned Today grid',
+        'coust', 'label')
+), (
+    'eg.grid.booking.captured', 'gui', 'object',
+    oils_i18n_gettext(
+        'booking.manage',
+        'Grid Config: Booking Captured Reservations',
+        'coust', 'label')
+), (
+    'eg.grid.booking.pull_list', 'gui', 'object',
+    oils_i18n_gettext(
+        'booking.pull_list',
+        'Grid Config: Booking Pull List',
+        'coust', 'label')
+),(
+   'eg.booking.manage.selected_org_family', 'gui', 'object',
+    oils_i18n_gettext(
+        'booking.manage.selected_org_family',
+        'Sticky setting for pickup ou family in Manage Reservations screen',
+        'coust', 'label')
+), (
+    'eg.booking.return.tab', 'gui', 'string',
+    oils_i18n_gettext(
+        'booking.return.tab',
+        'Sticky setting for tab in Booking Return',
+        'coust', 'label')
+), (
+    'eg.booking.create.granularity', 'gui', 'integer',
+    oils_i18n_gettext(
+        'booking.create.granularity',
+        'Sticky setting for granularity combobox in Booking Create',
+        'coust', 'label')
+), (
+    'eg.booking.create.multiday', 'gui', 'bool',
+    oils_i18n_gettext(
+        'booking.create.multiday',
+        'Default to creating multiday booking reservations',
+        'coust', 'label')
+), (
+    'eg.booking.pickup.ready.only_show_captured', 'gui', 'bool',
+    oils_i18n_gettext(
+        'booking.pickup.ready.only_show_captured',
+        'Include only resources that have been captured in the Ready grid in the Pickup screen',
+        'coust', 'label')
+), (
+    'eg.grid.circ.patron.xact_details_details_bills', 'gui', 'object',
+    oils_i18n_gettext(
+    'eg.grid.circ.patron.xact_details_details_bills',
+    'Grid Config: circ.patron.xact_details_details_bills',
+    'coust', 'label')
+), (
+    'eg.grid.circ.patron.xact_details_details_payments', 'gui', 'object',
+    oils_i18n_gettext(
+    'eg.grid.circ.patron.xact_details_details_payments',
+    'Grid Config: circ.patron.xact_details_details_payments',
+    'coust', 'label')
+), (
+    'eg.grid.cat.authority.browse', 'gui', 'object',
+    oils_i18n_gettext(
+    'eg.grid.cat.authority.browse',
+    'Grid Config: eg.grid.cat.authority.browse',
+    'coust', 'label')
+), (
+    'eg.grid.cat.authority.manage.bibs', 'gui', 'object',
+    oils_i18n_gettext(
+    'eg.grid.cat.authority.manage.bibs',
+    'Grid Config: eg.grid.cat.authority.manage.bibs',
+    'coust', 'label')
+), (
+    'eg.grid.acq.search.lineitems', 'gui', 'object',
+    oils_i18n_gettext(
+    'eg.grid.acq.search.lineitems',
+    'Grid Config: acq.search.lineitems',
+    'coust', 'label')
+), (
+    'eg.grid.acq.search.purchaseorders', 'gui', 'object',
+    oils_i18n_gettext(
+    'eg.grid.acq.search.purchaseorders',
+    'Grid Config: acq.search.purchaseorders',
+    'coust', 'label')
+), (
+    'eg.grid.acq.search.selectionlists', 'gui', 'object',
+    oils_i18n_gettext(
+    'eg.grid.acq.search.selectionlists',
+    'Grid Config: acq.search.selectionlists',
+    'coust', 'label')
+), (
+    'eg.grid.acq.search.invoices', 'gui', 'object',
+    oils_i18n_gettext(
+    'eg.grid.acq.search.invoices',
+    'Grid Config: acq.search.invoices',
+    'coust', 'label')
+), (
+    'eg.grid.acq.provider.addresses', 'gui', 'object',
+    oils_i18n_gettext(
+    'eg.grid.acq.provider.addresses',
+    'Grid Config: acq.provider.addresses',
+    'coust', 'label')
+), (
+    'eg.grid.acq.provider.attributes', 'gui', 'object',
+    oils_i18n_gettext(
+    'eg.grid.acq.provider.attributes',
+    'Grid Config: acq.provider.attributes',
+    'coust', 'label')
+), (
+    'eg.grid.acq.provider.contact.addresses', 'gui', 'object',
+    oils_i18n_gettext(
+    'eg.grid.acq.provider.contact.addresses',
+    'Grid Config: acq.provider.contact.addresses',
+    'coust', 'label')
+), (
+    'eg.grid.acq.provider.contacts', 'gui', 'object',
+    oils_i18n_gettext(
+    'eg.grid.acq.provider.contacts',
+    'Grid Config: acq.provider.contacts',
+    'coust', 'label')
+), (
+    'eg.grid.acq.provider.edi_accounts', 'gui', 'object',
+    oils_i18n_gettext(
+    'eg.grid.acq.provider.edi_accounts',
+    'Grid Config: acq.provider.edi_accounts',
+    'coust', 'label')
+), (
+    'eg.grid.acq.provider.edi_messages', 'gui', 'object',
+    oils_i18n_gettext(
+    'eg.grid.acq.provider.edi_messages',
+    'Grid Config: acq.provider.edi_messages',
+    'coust', 'label')
+), (
+    'eg.grid.acq.provider.holdings', 'gui', 'object',
+    oils_i18n_gettext(
+    'eg.grid.acq.provider.holdings',
+    'Grid Config: acq.provider.holdings',
+    'coust', 'label')
+), (
+    'eg.grid.acq.provider.invoices', 'gui', 'object',
+    oils_i18n_gettext(
+    'eg.grid.acq.provider.invoices',
+    'Grid Config: acq.provider.invoices',
+    'coust', 'label')
+), (
+    'eg.grid.acq.provider.purchaseorders', 'gui', 'object',
+    oils_i18n_gettext(
+    'eg.grid.acq.provider.purchaseorders',
+    'Grid Config: acq.provider.purchaseorders',
+    'coust', 'label')
+), (
+    'eg.grid.acq.provider.search.results', 'gui', 'object',
+    oils_i18n_gettext(
+    'eg.grid.acq.provider.search.results',
+    'Grid Config: acq.provider.search.results',
+    'coust', 'label')
+), (
+    'eg.grid.catalog.record.copies', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.catalog.record.copies',
+        'Grid Config: eg.grid.catalog.record.copies',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.catalog.record.notes', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.catalog.record.notes',
+        'Grid Config: eg.grid.catalog.record.notes',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.item.event_grid', 'gui', 'object',
+    oils_i18n_gettext(
+    'eg.grid.item.event_grid',
+    'Grid Config: item.event_grid',
+    'coust', 'label')
+), (
+    'eg.grid.patron.event_grid', 'gui', 'object',
+    oils_i18n_gettext(
+    'eg.grid.patron.event_grid',
+    'Grid Config: patron.event_grid',
+    'coust', 'label')
+), (
+    'eg.grid.acq.fund.fund_debit', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.acq.fund.fund_debit',
+        'Grid Config: eg.grid.acq.fund.fund_debit',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.acq.fund.fund_transfer', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.acq.fund.fund_transfer',
+        'Grid Config: eg.grid.acq.fund.fund_transfer',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.acq.fund.fund_allocation', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.acq.fund.fund_allocation',
+        'Grid Config: eg.grid.acq.fund.fund_allocation',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.acq.fund', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.acq.fund',
+        'Grid Config: eg.grid.admin.acq.fund',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.acq.funding_source', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.acq.funding_source',
+        'Grid Config: eg.grid.admin.acq.funding_source',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.acq.funding_source.fund_allocation', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.acq.funding_source.fund_allocation',
+        'Grid Config: eg.grid.acq.funding_source.fund_allocation',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.acq.funding_source.credit', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.acq.funding_source.credit',
+        'Grid Config: eg.grid.acq.funding_source.credit',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.circ.holds.pull_list', 'gui', 'object', 
+    oils_i18n_gettext(
+        'circ.holds.pull_list',
+        'Hold Pull List Grid Settings',
+        'coust', 'label'
+    )
+), (
+    'circ.holds.pull_list.prefetch', 'gui', 'bool', 
+    oils_i18n_gettext(
+        'circ.holds.pull_list.prefetch',
+        'Hold Pull List Prefetch Preference',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.local.container.carousel_org_unit', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.local.container.carousel_org_unit',
+        'Grid Config: eg.grid.admin.local.container.carousel_org_unit',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.container.carousel', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.container.carousel',
+        'Grid Config: eg.grid.admin.container.carousel',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.server.config.carousel_type', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.server.config.carousel_type',
+        'Grid Config: eg.grid.admin.server.config.carousel_type',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.local.triggers.atevdef', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.local.triggers.atevdef',
+        'Grid Config: eg.grid.admin.local.triggers.atevdef',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.local.triggers.atenv', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.local.triggers.atenv',
+        'Grid Config: eg.grid.admin.local.triggers.atenv',
+        'coust', 'label'
+    )
+), (
+    'eg.grid.admin.local.triggers.atevparam', 'gui', 'object',
+    oils_i18n_gettext(
+        'eg.grid.admin.local.triggers.atevparam',
+        'Grid Config: eg.grid.admin.local.triggers.atevparam',
+        'coust', 'label'
+    )
+);
\ No newline at end of file
diff --git a/Open-ILS/src/sql/Pg/upgrade/xxxx.data.lp1645862-default-widths-for-grid-columns.sql b/Open-ILS/src/sql/Pg/upgrade/xxxx.data.lp1645862-default-widths-for-grid-columns.sql
new file mode 100644 (file)
index 0000000..1da19d6
--- /dev/null
@@ -0,0 +1,1185 @@
+BEGIN;\r
+\r
+SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version);\r
+\r
+INSERT INTO config.org_unit_setting_type (name, grp, datatype, label)\r
+VALUES (\r
+    'eg.grid.circ.checkin.checkin', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.circ.checkin.checkin',\r
+        'Grid Config: circ.checkin.checkin',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.circ.checkin.capture', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.circ.checkin.capture',\r
+        'Grid Config: circ.checkin.capture',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.config.copy_tag_type', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.config.copy_tag_type',\r
+        'Grid Config: admin.server.config.copy_tag_type',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.config.metabib_field_virtual_map.grid', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.config.metabib_field_virtual_map.grid',\r
+        'Grid Config: admin.server.config.metabib_field_virtual_map.grid',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.config.metabib_field.grid', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.config.metabib_field.grid',\r
+        'Grid Config: admin.server.config.metabib_field.grid',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.config.marc_field', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.config.marc_field',\r
+        'Grid Config: admin.server.config.marc_field',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.asset.copy_tag', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.asset.copy_tag',\r
+        'Grid Config: admin.server.asset.copy_tag',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.local.circ.neg_balance_users', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.local.circ.neg_balance_users',\r
+        'Grid Config: admin.local.circ.neg_balance_users',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.local.rating.badge', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.local.rating.badge',\r
+        'Grid Config: admin.local.rating.badge',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.workstation.work_log', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.workstation.work_log',\r
+        'Grid Config: admin.workstation.work_log',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.workstation.patron_log', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.workstation.patron_log',\r
+        'Grid Config: admin.workstation.patron_log',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.serials.pattern_template', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.serials.pattern_template',\r
+        'Grid Config: admin.serials.pattern_template',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.serials.copy_templates', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.serials.copy_templates',\r
+        'Grid Config: serials.copy_templates',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.cat.record_overlay.holdings', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.cat.record_overlay.holdings',\r
+        'Grid Config: cat.record_overlay.holdings',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.cat.bucket.record.search', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.cat.bucket.record.search',\r
+        'Grid Config: cat.bucket.record.search',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.cat.bucket.record.view', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.cat.bucket.record.view',\r
+        'Grid Config: cat.bucket.record.view',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.cat.bucket.record.pending', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.cat.bucket.record.pending',\r
+        'Grid Config: cat.bucket.record.pending',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.cat.bucket.copy.view', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.cat.bucket.copy.view',\r
+        'Grid Config: cat.bucket.copy.view',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.cat.bucket.copy.pending', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.cat.bucket.copy.pending',\r
+        'Grid Config: cat.bucket.copy.pending',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.cat.items', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.cat.items',\r
+        'Grid Config: cat.items',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.cat.volcopy.copies', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.cat.volcopy.copies',\r
+        'Grid Config: cat.volcopy.copies',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.cat.volcopy.copies.complete', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.cat.volcopy.copies.complete',\r
+        'Grid Config: cat.volcopy.copies.complete',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.cat.peer_bibs', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.cat.peer_bibs',\r
+        'Grid Config: cat.peer_bibs',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.cat.catalog.wide_holds', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.cat.catalog.wide_holds',\r
+        'Grid Config: cat.catalog.wide_holds',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.hopeless.wide_holds', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.hopeless.wide_holds',\r
+        'Grid Config: hopeless.wide_holds',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.cat.holdings', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.cat.holdings',\r
+        'Grid Config: cat.holdings',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.cat.z3950_results', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.cat.z3950_results',\r
+        'Grid Config: cat.z3950_results',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.circ.wide_holds.shelf', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.circ.wide_holds.shelf',\r
+        'Grid Config: circ.wide_holds.shelf',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.circ.holds.pull', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.circ.holds.pull',\r
+        'Grid Config: circ.holds.pull',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.circ.in_house_use', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.circ.in_house_use',\r
+        'Grid Config: circ.in_house_use',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.circ.renew', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.circ.renew',\r
+        'Grid Config: circ.renew',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.circ.transits.list', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.circ.transits.list',\r
+        'Grid Config: circ.transits.list',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.circ.patron.holds', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.circ.patron.holds',\r
+        'Grid Config: circ.patron.holds',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.circ.pending_patrons.list', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.circ.pending_patrons.list',\r
+        'Grid Config: circ.pending_patrons.list',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.circ.patron.items_out.noncat', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.circ.patron.items_out.noncat',\r
+        'Grid Config: circ.patron.items_out.noncat',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.circ.patron.items_out', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.circ.patron.items_out',\r
+        'Grid Config: circ.patron.items_out',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.circ.patron.billhistory_payments', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.circ.patron.billhistory_payments',\r
+        'Grid Config: circ.patron.billhistory_payments',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.user.bucket.view', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.user.bucket.view',\r
+        'Grid Config: user.bucket.view',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.user.bucket.pending', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.user.bucket.pending',\r
+        'Grid Config: user.bucket.pending',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.circ.patron.staff_messages', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.circ.patron.staff_messages',\r
+        'Grid Config: circ.patron.staff_messages',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.circ.patron.archived_messages', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.circ.patron.archived_messages',\r
+        'Grid Config: circ.patron.archived_messages',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.circ.patron.bills', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.circ.patron.bills',\r
+        'Grid Config: circ.patron.bills',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.circ.patron.checkout', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.circ.patron.checkout',\r
+        'Grid Config: circ.patron.checkout',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.circ.patron.group_members', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.circ.patron.group_members',\r
+        'Grid Config: circ.patron.group_members',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.serials.mfhd_grid', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.serials.mfhd_grid',\r
+        'Grid Config: serials.mfhd_grid',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.serials.view_item_grid', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.serials.view_item_grid',\r
+        'Grid Config: serials.view_item_grid',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.serials.dist_stream_grid', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.serials.dist_stream_grid',\r
+        'Grid Config: serials.dist_stream_grid',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.circ.patron.search', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.circ.patron.search',\r
+        'Grid Config: circ.patron.search',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+  'eg.grid.circ.patron.billhistory_xacts', 'gui', 'object',\r
+  oils_i18n_gettext(\r
+    'eg.grid.circ.patron.billhistory_xacts',\r
+    'Grid Config: circ.patron.billhistory_xacts',\r
+    'coust', 'label'\r
+  )\r
+), (\r
+    'eg.grid.admin.acq.cancel_reason', 'gui', 'object',\r
+    oils_i18n_gettext (\r
+        'eg.grid.admin.acq.cancel_reason',\r
+        'Grid Config: admin.acq.cancel_reason',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.acq.claim_event_type', 'gui', 'object',\r
+    oils_i18n_gettext (\r
+    'eg.grid.admin.acq.claim_event_type',\r
+        'Grid Config: admin.acq.claim_event_type',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.acq.claim_policy', 'gui', 'object',\r
+    oils_i18n_gettext (\r
+    'eg.grid.admin.acq.claim_policy',\r
+        'Grid Config: admin.acq.claim_policy',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.acq.claim_policy_action', 'gui', 'object',\r
+    oils_i18n_gettext (\r
+    'eg.grid.admin.acq.claim_policy_action',\r
+        'Grid Config: admin.acq.claim_policy_action',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.acq.claim_type', 'gui', 'object',\r
+    oils_i18n_gettext (\r
+    'eg.grid.admin.acq.claim_type',\r
+        'Grid Config: admin.acq.claim_type',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.acq.currency_type', 'gui', 'object',\r
+    oils_i18n_gettext (\r
+    'eg.grid.admin.acq.currency_type',\r
+        'Grid Config: admin.acq.currency_type',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.acq.edi_account', 'gui', 'object',\r
+    oils_i18n_gettext (\r
+    'eg.grid.admin.acq.edi_account',\r
+        'Grid Config: admin.acq.edi_account',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.acq.edi_message', 'gui', 'object',\r
+    oils_i18n_gettext (\r
+    'eg.grid.admin.acq.edi_message',\r
+        'Grid Config: admin.acq.edi_message',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.acq.exchange_rate', 'gui', 'object',\r
+    oils_i18n_gettext (\r
+    'eg.grid.admin.acq.exchange_rate',\r
+        'Grid Config: admin.acq.exchange_rate',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.acq.fund_tag', 'gui', 'object',\r
+    oils_i18n_gettext (\r
+    'eg.grid.admin.acq.fund_tag',\r
+        'Grid Config: admin.acq.fund_tag',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.acq.invoice_item_type', 'gui', 'object',\r
+    oils_i18n_gettext (\r
+    'eg.grid.admin.acq.invoice_item_type',\r
+        'Grid Config: admin.acq.invoice_item_type',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.acq.invoice_payment_method', 'gui', 'object',\r
+    oils_i18n_gettext (\r
+    'eg.grid.admin.acq.invoice_payment_method',\r
+        'Grid Config: admin.acq.invoice_payment_method',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.acq.lineitem_alert_text', 'gui', 'object',\r
+    oils_i18n_gettext (\r
+    'eg.grid.admin.acq.lineitem_alert_text',\r
+        'Grid Config: admin.acq.lineitem_alert_text',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.acq.lineitem_marc_attr_definition', 'gui', 'object',\r
+    oils_i18n_gettext (\r
+    'eg.grid.admin.acq.lineitem_marc_attr_definition',\r
+        'Grid Config: admin.acq.lineitem_marc_attr_definition',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.cat.vandelay.queue.bib', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.cat.vandelay.queue.bib',\r
+        'Grid Config: Vandelay Bib Queue',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.cat.vandelay.queue.auth', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.cat.vandelay.queue.auth',\r
+        'Grid Config: Vandelay Authority Queue',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.cat.vandelay.match_set.list', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.cat.vandelay.match_set.list',\r
+        'Grid Config: Vandelay Match Sets',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.cat.vandelay.match_set.quality', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.cat.vandelay.match_set.quality',\r
+        'Grid Config: Vandelay Match Quality Metrics',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.cat.vandelay.queue.items', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.cat.vandelay.queue.items',\r
+        'Grid Config: Vandelay Queue Import Items',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.cat.vandelay.queue.list.bib', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.cat.vandelay.queue.list.bib',\r
+        'Grid Config: Vandelay Bib Queue List',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.cat.vandelay.queue.bib.items', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.cat.vandelay.queue.bib.items',\r
+        'Grid Config: Vandelay Bib Items',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.cat.vandelay.queue.list.auth', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.cat.vandelay.queue.list.auth',\r
+        'Grid Config: Vandelay Authority Queue List',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.vandelay.merge_profile', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.vandelay.merge_profile',\r
+        'Grid Config: Vandelay Merge Profiles',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.vandelay.bib_attr_definition', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.vandelay.bib_attr_definition',\r
+        'Grid Config: Vandelay Bib Record Attributes',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.vandelay.import_item_attr_definition', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.vandelay.import_item_attr_definition',\r
+        'Grid Config: Vandelay Import Item Attributes',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.booking.resource', 'gui', 'object',\r
+    oils_i18n_gettext (\r
+        'eg.grid.admin.booking.resource',\r
+        'Grid Config: admin.booking.resource',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.booking.resource_attr', 'gui', 'object',\r
+    oils_i18n_gettext (\r
+    'eg.grid.admin.booking.resource_attr',\r
+        'Grid Config: admin.booking.resource_attr',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.booking.resource_attr_map', 'gui', 'object',\r
+    oils_i18n_gettext (\r
+    'eg.grid.admin.booking.resource_attr_map',\r
+        'Grid Config: admin.booking.resource_attr_map',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.booking.resource_attr_value', 'gui', 'object',\r
+    oils_i18n_gettext (\r
+    'eg.grid.admin.booking.resource_attr_value',\r
+        'Grid Config: admin.booking.resource_attr_value',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.booking.resource_type', 'gui', 'object',\r
+    oils_i18n_gettext (\r
+    'eg.grid.admin.booking.resource_type',\r
+        'Grid Config: admin.booking.resource_type',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.config.rule_age_hold_protect', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.config.rule_age_hold_protect',\r
+        'Grid Config: admin.server.config.rule_age_hold_protect',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.asset.stat_cat_sip_fields', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.asset.stat_cat_sip_fields',\r
+        'Grid Config: admin.server.asset.stat_cat_sip_fields',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.actor.stat_cat_sip_fields', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.actor.stat_cat_sip_fields',\r
+        'Grid Config: admin.server.actor.stat_cat_sip_fields',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.authority.browse_axis', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.authority.browse_axis',\r
+        'Grid Config: admin.server.authority.browse_axis',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.authority.control_set', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.authority.control_set',\r
+        'Grid Config: admin.server.authority.control_set',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.authority.heading_field', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.authority.heading_field',\r
+        'Grid Config: admin.server.authority.heading_field',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.authority.thesaurus', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.authority.thesaurus',\r
+        'Grid Config: admin.server.authority.thesaurus',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.config.best_hold_order', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.config.best_hold_order',\r
+        'Grid Config: admin.server.config.best_hold_order',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.config.billing_type', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.config.billing_type',\r
+        'Grid Config: admin.server.config.billing_type',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.asset.call_number_prefix', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.asset.call_number_prefix',\r
+        'Grid Config: admin.server.asset.call_number_prefix',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.asset.call_number_suffix', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.asset.call_number_suffix',\r
+        'Grid Config: admin.server.asset.call_number_suffix',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.config.rule_circ_duration', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.config.rule_circ_duration',\r
+        'Grid Config: admin.server.config.rule_circ_duration',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.config.circ_limit_group', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.config.circ_limit_group',\r
+        'Grid Config: admin.server.config.circ_limit_group',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.config.circ_matrix_weights', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.config.circ_matrix_weights',\r
+        'Grid Config: admin.server.config.circ_matrix_weights',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.config.rule_max_fine', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.config.rule_max_fine',\r
+        'Grid Config: admin.server.config.rule_max_fine',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.config.circ_modifier', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.config.circ_modifier',\r
+        'Grid Config: admin.server.config.circ_modifier',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.config.copy_status', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.config.copy_status',\r
+        'Grid Config: admin.server.config.copy_status',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.config.floating_group', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.config.floating_group',\r
+        'Grid Config: admin.server.config.floating_group',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.config.global_flag', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.config.global_flag',\r
+        'Grid Config: admin.server.config.global_flag',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.config.hard_due_date', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.config.hard_due_date',\r
+        'Grid Config: admin.server.config.hard_due_date',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.config.hold_matrix_weights', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.config.hold_matrix_weights',\r
+        'Grid Config: admin.server.config.hold_matrix_weights',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.vandelay.match_set', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.vandelay.match_set',\r
+        'Grid Config: admin.server.vandelay.match_set',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.config.coded_value_map', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.config.coded_value_map',\r
+        'Grid Config: admin.server.config.coded_value_map',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.vandelay.import_bib_trash_group', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.vandelay.import_bib_trash_group',\r
+        'Grid Config: admin.server.vandelay.import_bib_trash_group',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.config.record_attr_definition', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.config.record_attr_definition',\r
+        'Grid Config: admin.server.config.record_attr_definition',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.config.metabib_class', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.config.metabib_class',\r
+        'Grid Config: admin.server.config.metabib_class',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.config.metabib_field_ts_map', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.config.metabib_field_ts_map',\r
+        'Grid Config: admin.server.config.metabib_field_ts_map',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.config.metabib_field', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.config.metabib_field',\r
+        'Grid Config: admin.server.config.metabib_field',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.permission.perm_list', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.permission.perm_list',\r
+        'Grid Config: admin.server.permission.perm_list',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.config.remote_account', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.config.remote_account',\r
+        'Grid Config: admin.server.config.remote_account',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.config.sms_carrier', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.config.sms_carrier',\r
+        'Grid Config: admin.server.config.sms_carrier',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.config.usr_activity_type', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.config.usr_activity_type',\r
+        'Grid Config: admin.server.config.usr_activity_type',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.config.weight_assoc', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.config.weight_assoc',\r
+        'Grid Config: admin.server.config.weight_assoc',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.config.z3950_index_field_map', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.config.z3950_index_field_map',\r
+        'Grid Config: admin.server.config.z3950_index_field_map',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.config.z3950_source', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.config.z3950_source',\r
+        'Grid Config: admin.server.config.z3950_source',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.local.config.hold_matrix_matchpoint', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.local.config.hold_matrix_matchpoint',\r
+        'Grid Config: admin.local.config.hold_matrix_matchpoint',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.local.actor.address_alert', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.local.actor.address_alert',\r
+        'Grid Config: admin.local.actor.address_alert',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.local.config.barcode_completion', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.local.config.barcode_completion',\r
+        'Grid Config: admin.local.config.barcode_completion',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.local.actor.copy_alert_suppress', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.local.actor.copy_alert_suppress',\r
+        'Grid Config: admin.local.actor.copy_alert_suppress',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.local.asset.copy_location', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.local.asset.copy_location',\r
+        'Grid Config: admin.local.asset.copy_location',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.local.asset.copy_tag', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.local.asset.copy_tag',\r
+        'Grid Config: admin.local.asset.copy_tag',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.local.permission.grp_penalty_threshold', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.local.permission.grp_penalty_threshold',\r
+        'Grid Config: admin.local.permission.grp_penalty_threshold',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.local.config.non_cataloged_type', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.local.config.non_cataloged_type',\r
+        'Grid Config: admin.local.config.non_cataloged_type',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.booking.manage', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'booking.manage',\r
+        'Grid Config: Booking Manage Reservations',\r
+        'coust', 'label')\r
+), (\r
+    'eg.grid.booking.pickup.ready', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'booking.pickup.ready',\r
+        'Grid Config: Booking Ready to pick up grid',\r
+        'coust', 'label')\r
+), (\r
+    'eg.grid.booking.pickup.picked_up', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'booking.pickup.picked_up',\r
+        'Grid Config: Booking Already Picked Up grid',\r
+        'coust', 'label')\r
+), (\r
+    'eg.grid.booking.return.patron.picked_up', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'booking.return.patron.picked_up',\r
+        'Grid Config: Booking Return Patron tab Already Picked Up grid',\r
+        'coust', 'label')\r
+), (\r
+    'eg.grid.booking.return.patron.returned', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'booking.return.patron.returned',\r
+        'Grid Config: Booking Return Patron tab Returned Today grid',\r
+        'coust', 'label')\r
+), (\r
+    'eg.grid.booking.return.resource.picked_up', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'booking.return.resourcce.picked_up',\r
+        'Grid Config: Booking Return Resource tab Already Picked Up grid',\r
+        'coust', 'label')\r
+), (\r
+    'eg.grid.booking.return.resource.returned', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'booking.return.resource.returned',\r
+        'Grid Config: Booking Return Resource tab Returned Today grid',\r
+        'coust', 'label')\r
+), (\r
+    'eg.grid.booking.captured', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'booking.manage',\r
+        'Grid Config: Booking Captured Reservations',\r
+        'coust', 'label')\r
+), (\r
+    'eg.grid.booking.pull_list', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'booking.pull_list',\r
+        'Grid Config: Booking Pull List',\r
+        'coust', 'label')\r
+),(\r
+   'eg.booking.manage.selected_org_family', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'booking.manage.selected_org_family',\r
+        'Sticky setting for pickup ou family in Manage Reservations screen',\r
+        'coust', 'label')\r
+), (\r
+    'eg.booking.return.tab', 'gui', 'string',\r
+    oils_i18n_gettext(\r
+        'booking.return.tab',\r
+        'Sticky setting for tab in Booking Return',\r
+        'coust', 'label')\r
+), (\r
+    'eg.booking.create.granularity', 'gui', 'integer',\r
+    oils_i18n_gettext(\r
+        'booking.create.granularity',\r
+        'Sticky setting for granularity combobox in Booking Create',\r
+        'coust', 'label')\r
+), (\r
+    'eg.booking.create.multiday', 'gui', 'bool',\r
+    oils_i18n_gettext(\r
+        'booking.create.multiday',\r
+        'Default to creating multiday booking reservations',\r
+        'coust', 'label')\r
+), (\r
+    'eg.booking.pickup.ready.only_show_captured', 'gui', 'bool',\r
+    oils_i18n_gettext(\r
+        'booking.pickup.ready.only_show_captured',\r
+        'Include only resources that have been captured in the Ready grid in the Pickup screen',\r
+        'coust', 'label')\r
+), (\r
+    'eg.grid.circ.patron.xact_details_details_bills', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+    'eg.grid.circ.patron.xact_details_details_bills',\r
+    'Grid Config: circ.patron.xact_details_details_bills',\r
+    'coust', 'label')\r
+), (\r
+    'eg.grid.circ.patron.xact_details_details_payments', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+    'eg.grid.circ.patron.xact_details_details_payments',\r
+    'Grid Config: circ.patron.xact_details_details_payments',\r
+    'coust', 'label')\r
+), (\r
+    'eg.grid.cat.authority.browse', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+    'eg.grid.cat.authority.browse',\r
+    'Grid Config: eg.grid.cat.authority.browse',\r
+    'coust', 'label')\r
+), (\r
+    'eg.grid.cat.authority.manage.bibs', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+    'eg.grid.cat.authority.manage.bibs',\r
+    'Grid Config: eg.grid.cat.authority.manage.bibs',\r
+    'coust', 'label')\r
+), (\r
+    'eg.grid.acq.search.lineitems', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+    'eg.grid.acq.search.lineitems',\r
+    'Grid Config: acq.search.lineitems',\r
+    'coust', 'label')\r
+), (\r
+    'eg.grid.acq.search.purchaseorders', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+    'eg.grid.acq.search.purchaseorders',\r
+    'Grid Config: acq.search.purchaseorders',\r
+    'coust', 'label')\r
+), (\r
+    'eg.grid.acq.search.selectionlists', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+    'eg.grid.acq.search.selectionlists',\r
+    'Grid Config: acq.search.selectionlists',\r
+    'coust', 'label')\r
+), (\r
+    'eg.grid.acq.search.invoices', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+    'eg.grid.acq.search.invoices',\r
+    'Grid Config: acq.search.invoices',\r
+    'coust', 'label')\r
+), (\r
+    'eg.grid.acq.provider.addresses', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+    'eg.grid.acq.provider.addresses',\r
+    'Grid Config: acq.provider.addresses',\r
+    'coust', 'label')\r
+), (\r
+    'eg.grid.acq.provider.attributes', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+    'eg.grid.acq.provider.attributes',\r
+    'Grid Config: acq.provider.attributes',\r
+    'coust', 'label')\r
+), (\r
+    'eg.grid.acq.provider.contact.addresses', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+    'eg.grid.acq.provider.contact.addresses',\r
+    'Grid Config: acq.provider.contact.addresses',\r
+    'coust', 'label')\r
+), (\r
+    'eg.grid.acq.provider.contacts', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+    'eg.grid.acq.provider.contacts',\r
+    'Grid Config: acq.provider.contacts',\r
+    'coust', 'label')\r
+), (\r
+    'eg.grid.acq.provider.edi_accounts', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+    'eg.grid.acq.provider.edi_accounts',\r
+    'Grid Config: acq.provider.edi_accounts',\r
+    'coust', 'label')\r
+), (\r
+    'eg.grid.acq.provider.edi_messages', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+    'eg.grid.acq.provider.edi_messages',\r
+    'Grid Config: acq.provider.edi_messages',\r
+    'coust', 'label')\r
+), (\r
+    'eg.grid.acq.provider.holdings', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+    'eg.grid.acq.provider.holdings',\r
+    'Grid Config: acq.provider.holdings',\r
+    'coust', 'label')\r
+), (\r
+    'eg.grid.acq.provider.invoices', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+    'eg.grid.acq.provider.invoices',\r
+    'Grid Config: acq.provider.invoices',\r
+    'coust', 'label')\r
+), (\r
+    'eg.grid.acq.provider.purchaseorders', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+    'eg.grid.acq.provider.purchaseorders',\r
+    'Grid Config: acq.provider.purchaseorders',\r
+    'coust', 'label')\r
+), (\r
+    'eg.grid.acq.provider.search.results', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+    'eg.grid.acq.provider.search.results',\r
+    'Grid Config: acq.provider.search.results',\r
+    'coust', 'label')\r
+), (\r
+    'eg.grid.catalog.record.copies', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.catalog.record.copies',\r
+        'Grid Config: eg.grid.catalog.record.copies',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.catalog.record.notes', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.catalog.record.notes',\r
+        'Grid Config: eg.grid.catalog.record.notes',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.item.event_grid', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+    'eg.grid.item.event_grid',\r
+    'Grid Config: item.event_grid',\r
+    'coust', 'label')\r
+), (\r
+    'eg.grid.patron.event_grid', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+    'eg.grid.patron.event_grid',\r
+    'Grid Config: patron.event_grid',\r
+    'coust', 'label')\r
+), (\r
+    'eg.grid.acq.fund.fund_debit', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.acq.fund.fund_debit',\r
+        'Grid Config: eg.grid.acq.fund.fund_debit',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.acq.fund.fund_transfer', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.acq.fund.fund_transfer',\r
+        'Grid Config: eg.grid.acq.fund.fund_transfer',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.acq.fund.fund_allocation', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.acq.fund.fund_allocation',\r
+        'Grid Config: eg.grid.acq.fund.fund_allocation',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.acq.fund', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.acq.fund',\r
+        'Grid Config: eg.grid.admin.acq.fund',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.acq.funding_source', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.acq.funding_source',\r
+        'Grid Config: eg.grid.admin.acq.funding_source',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.acq.funding_source.fund_allocation', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.acq.funding_source.fund_allocation',\r
+        'Grid Config: eg.grid.acq.funding_source.fund_allocation',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.acq.funding_source.credit', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.acq.funding_source.credit',\r
+        'Grid Config: eg.grid.acq.funding_source.credit',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.circ.holds.pull_list', 'gui', 'object', \r
+    oils_i18n_gettext(\r
+        'circ.holds.pull_list',\r
+        'Hold Pull List Grid Settings',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'circ.holds.pull_list.prefetch', 'gui', 'bool', \r
+    oils_i18n_gettext(\r
+        'circ.holds.pull_list.prefetch',\r
+        'Hold Pull List Prefetch Preference',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.local.container.carousel_org_unit', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.local.container.carousel_org_unit',\r
+        'Grid Config: eg.grid.admin.local.container.carousel_org_unit',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.container.carousel', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.container.carousel',\r
+        'Grid Config: eg.grid.admin.container.carousel',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.server.config.carousel_type', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.server.config.carousel_type',\r
+        'Grid Config: eg.grid.admin.server.config.carousel_type',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.local.triggers.atevdef', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.local.triggers.atevdef',\r
+        'Grid Config: eg.grid.admin.local.triggers.atevdef',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.local.triggers.atenv', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.local.triggers.atenv',\r
+        'Grid Config: eg.grid.admin.local.triggers.atenv',\r
+        'coust', 'label'\r
+    )\r
+), (\r
+    'eg.grid.admin.local.triggers.atevparam', 'gui', 'object',\r
+    oils_i18n_gettext(\r
+        'eg.grid.admin.local.triggers.atevparam',\r
+        'Grid Config: eg.grid.admin.local.triggers.atevparam',\r
+        'coust', 'label'\r
+    )\r
+);\r
+\r
+COMMIT;\r