Org Unit Proximity Adjustments: Schema, IDL and configuration UI
authorLebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Thu, 2 Feb 2012 22:12:10 +0000 (17:12 -0500)
committerLebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Wed, 5 Dec 2012 17:39:35 +0000 (12:39 -0500)
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Open-ILS/examples/fm_IDL.xml
Open-ILS/src/templates/conify/global/config/org_unit_proximity_adjustment.tt2 [new file with mode: 0644]
Open-ILS/web/opac/locale/en-US/lang.dtd
Open-ILS/xul/staff_client/chrome/content/main/menu.js
Open-ILS/xul/staff_client/chrome/content/main/menu_frame_menus.xul

index a7a765d..32e1529 100644 (file)
@@ -4816,6 +4816,36 @@ SELECT  usr,
             </actions>
         </permacrud>
        </class>
+       <class id="aoupa" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="actor::org_unit_proximity_adjustment" oils_persist:tablename="actor.org_unit_proximity_adjustment" reporter:label="Org Unit Proximity Adjustment">
+               <fields oils_persist:primary="id" oils_persist:sequence="actor.org_unit_proximity_adjustment_id_seq">
+                       <field name="id" reporter:label="ID" reporter:datatype="id" />
+                       <field name="item_circ_lib" reporter:label="Item Circ Lib" reporter:datatype="org_unit"/>
+                       <field name="item_owning_lib" reporter:label="Item Owning Lib" reporter:datatype="org_unit"/>
+                       <field name="hold_pickup_lib" reporter:label="Hold Pickup Lib" reporter:datatype="org_unit"/>
+                       <field name="hold_request_lib" reporter:label="Hold Request Lib" reporter:datatype="org_unit"/>
+                       <field name="copy_location" reporter:label="Copy Location" reporter:datatype="link"/>
+                       <field name="circ_mod" reporter:label="Circ Modifier" reporter:datatype="link"/>
+                       <field name="pos" reporter:label="Position" reporter:datatype="int" />
+                       <field name="absolute_adjustment" reporter:label="Absolute adjustment?" reporter:datatype="bool" />
+                       <field name="prox_adjustment" reporter:label="Proximity Adjustment" reporter:datatype="number" />
+               </fields>
+               <links>
+                       <link field="item_circ_lib" reltype="has_a" key="id" map="" class="aou"/>
+                       <link field="item_owning_lib" reltype="has_a" key="id" map="" class="aou"/>
+                       <link field="hold_pickup_lib" reltype="has_a" key="id" map="" class="aou"/>
+                       <link field="hold_request_lib" reltype="has_a" key="id" map="" class="aou"/>
+                       <link field="circ_mod" reltype="has_a" key="code" map="" class="ccm"/>
+                       <link field="copy_location" reltype="has_a" key="id" map="" class="acqpl"/>
+               </links>
+        <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
+            <actions>
+                <create permission="ADMIN_PROXIMITY_ADJUSTMENT" global_required="true"/>
+                <retrieve permission="ADMIN_PROXIMITY_ADJUSTMENT" global_required="true"/>
+                <update permission="ADMIN_PROXIMITY_ADJUSTMENT" global_required="true"/>
+                <delete permission="ADMIN_PROXIMITY_ADJUSTMENT" global_required="true"/>
+            </actions>
+        </permacrud>
+       </class>
        <class id="aoup" controller="open-ils.cstore" oils_obj:fieldmapper="actor::org_unit_proximity" oils_persist:tablename="actor.org_unit_proximity" reporter:label="Org Unit Proximity">
                <fields oils_persist:primary="id" oils_persist:sequence="actor.org_unit_proximity_id_seq">
                        <field name="id" reporter:datatype="id" />
diff --git a/Open-ILS/src/templates/conify/global/config/org_unit_proximity_adjustment.tt2 b/Open-ILS/src/templates/conify/global/config/org_unit_proximity_adjustment.tt2
new file mode 100644 (file)
index 0000000..96957a3
--- /dev/null
@@ -0,0 +1,85 @@
+[% WRAPPER base.tt2 %]
+[% ctx.page_title = 'Org Unit Proximity Adjustments' %]
+<div dojoType="dijit.layout.ContentPane" layoutAlign="client">
+    <div dojoType="dijit.layout.ContentPane" layoutAlign="top" class="oils-header-panel">
+        <div>[% ctx.page_title %]</div>
+        <div>
+            <button dojoType="dijit.form.Button"
+                onClick="aoupa_grid.showCreateDialog()">New OU Proximity Adjustment</button>
+            <button dojoType="dijit.form.Button"
+                onClick="aoupa_grid.deleteSelected()">Delete Selected</button>
+        </div>
+    </div>
+    <div>
+        Show adjustments involving this branch or deeper:
+        <select dojoType="openils.widget.OrgUnitFilteringSelect"
+            jsId="context_org_selector"></select>
+    </div>
+    <table jsId="aoupa_grid"
+        dojoType="openils.widget.AutoGrid"
+        query="{id: '*'}"
+        fmClass="aoupa"
+        fieldorder="['item_circ_lib','item_owning_lib','copy_location','hold_pickup_lib','hold_request_lib','pos','absolute_adjustment','prox_adjustment','circ_mod']"
+        showPaginator="true"
+        editOnEnter="true">
+        <thead>
+            <tr>
+                <th field="item_circ_lib"
+                    get="openils.widget.AutoGrid.orgUnitGetter"></th>
+                <th field="item_owning_lib"
+                    get="openils.widget.AutoGrid.orgUnitGetter"></th>
+                <th field="hold_pickup_lib"
+                    get="openils.widget.AutoGrid.orgUnitGetter"></th>
+                <th field="hold_request_lib"
+                    get="openils.widget.AutoGrid.orgUnitGetter"></th>
+            </tr>
+        </thead>
+    </table>
+</div>
+
+<script type="text/javascript">
+    dojo.require("openils.widget.AutoGrid");
+    dojo.require("openils.widget.OrgUnitFilteringSelect");
+
+    var context_org;
+
+    function load_grid(search) {
+        if (!search) search = {"id": {"!=": null}};
+
+        aoupa_grid.loadAll({
+            "order_by": {
+                "aoupa": ["item_circ_lib","item_owning_lib","hold_pickup_lib","hold_request_lib","pos"]
+            }
+        }, search);
+    }
+
+    function reload_grid_from_ou_selector() {
+        context_org = context_org_selector.attr("value");
+        var descendants = aou.descendantNodeList(context_org, true);
+        aoupa_grid.resetStore();
+        load_grid({
+            "-or": [
+                {"item_circ_lib": descendants},
+                {"item_owning_lib": descendants},
+                {"hold_pickup_lib": descendants},
+                {"hold_request_lib": descendants}
+            ]
+        });
+    }
+
+    openils.Util.addOnLoad(
+        function() {
+            new openils.User().buildPermOrgSelector(
+                "ADMIN_PROXIMITY_ADJUSTMENT",
+                context_org_selector,
+                null,
+                function() {
+                    context_org_selector.onChange =
+                        reload_grid_from_ou_selector;
+                    reload_grid_from_ou_selector();
+                }
+            );
+        }
+    );
+</script>
+[% END %]
index 70063d8..f8b59fe 100644 (file)
 <!ENTITY staff.main.menu.admin.server_admin.conify.billing_type.label "Billing Types">
 <!ENTITY staff.main.menu.admin.server_admin.conify.sms_carrier.label "SMS Carriers">
 <!ENTITY staff.main.menu.admin.server_admin.conify.z3950_source.label "Z39.50 Servers">
+<!ENTITY staff.main.menu.admin.server_admin.conify.org_unit_proximity_adjustment.label "Org Unit Proximity Adjustments">
 <!ENTITY staff.main.menu.admin.server_admin.conify.circulation_modifier.label "Circulation Modifiers">
 <!ENTITY staff.main.menu.admin.server_admin.conify.org_unit_setting_type "Organization Unit Setting Types">
 <!ENTITY staff.main.menu.admin.server_admin.conify.import_match_set "Import Match Sets">
index f94e9ed..6741e76 100644 (file)
@@ -1006,6 +1006,10 @@ main.menu.prototype = {
                 ['oncommand'],
                 function(event) { open_eg_web_page('conify/global/config/z3950_source', null, event); }
             ],
+            'cmd_server_admin_org_unit_proximity_adjustment' : [
+                ['oncommand'],
+                function(event) { open_eg_web_page('conify/global/config/org_unit_proximity_adjustment', null, event); }
+            ],
             'cmd_server_admin_circ_mod' : [
                 ['oncommand'],
                 function(event) { open_eg_web_page('conify/global/config/circ_modifier', null, event); }
index 2e984d7..44976df 100644 (file)
     <command id="cmd_server_admin_acq_distrib_formula" />
     <command id="cmd_server_admin_sms_carrier" />
     <command id="cmd_server_admin_z39_source" />
+    <command id="cmd_server_admin_org_unit_proximity_adjustment" />
     <command id="cmd_server_admin_circ_mod" 
              perm="CREATE_CIRC_MOD DELETE_CIRC_MOD UPDATE_CIRC_MOD ADMIN_CIRC_MOD"
              />
             <menupopup id="main.menu.admin.server.popup">
                 <menuitem label="&staff.main.menu.admin.server_admin.conify.org_unit_type.label;" command="cmd_server_admin_org_type"/>
                 <menuitem label="&staff.main.menu.admin.server_admin.conify.org_unit.label;" command="cmd_server_admin_org_unit"/>
+                <menuitem label="&staff.main.menu.admin.server_admin.conify.org_unit_proximity_adjustment.label;" command="cmd_server_admin_org_unit_proximity_adjustment"/>
                 <menuitem label="&staff.main.menu.admin.server_admin.conify.grp_tree.label;" command="cmd_server_admin_grp_tree"/>
                 <menuitem label="&staff.main.menu.admin.server_admin.conify.perm_list.label;" command="cmd_server_admin_perm_list"/>
                 <menuitem label="&staff.main.menu.admin.server_admin.conify.copy_status.label;" command="cmd_server_admin_copy_status"/>