tweak workstation registration to look at depth of REGISTER_WORKSTATION permission...
authorpines <pines@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Mon, 16 Apr 2007 13:05:43 +0000 (13:05 +0000)
committerpines <pines@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Mon, 16 Apr 2007 13:05:43 +0000 (13:05 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@7150 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/xul/staff_client/chrome/content/main/constants.js
Open-ILS/xul/staff_client/chrome/content/util/fm_utils.js
Open-ILS/xul/staff_client/server/main/ws_info.xul

index 30bac2a..eef079c 100644 (file)
@@ -80,6 +80,7 @@ const api = {
        'FM_ANCIHU_CREATE' : { 'app' : 'open-ils.circ', 'method' : 'open-ils.circ.non_cat_in_house_use.create' },
        'FM_AOA_RETRIEVE' : { 'app' : 'open-ils.actor', 'method' : 'open-ils.actor.org_unit.address.retrieve', 'secure' : false },
        'FM_AOU_RETRIEVE' : { 'app' : 'open-ils.actor', 'method' : 'open-ils.actor.org_tree.retrieve', 'secure' : false },
+       'FM_AOU_DESCENDANTS_RETRIEVE' : { 'app' : 'open-ils.actor', 'method' : 'open-ils.actor.org_tree.descendants.retrieve', 'secure' : false },
        'FM_AOU_RETRIEVE_RELATED_VIA_SESSION' : { 'app' : 'open-ils.actor', 'method' : 'open-ils.actor.org_unit.full_path.retrieve' },
        'FM_AOU_IDS_RETRIEVE_VIA_RECORD_ID' : { 'app' : 'open-ils.cat', 'method' : 'open-ils.cat.actor.org_unit.retrieve_by_title', 'secure' : false },
        'FM_AOUT_RETRIEVE' : { 'app' : 'open-ils.actor', 'method' : 'open-ils.actor.org_types.retrieve', 'secure' : false },
@@ -160,6 +161,7 @@ const api = {
        'MODS_SLIM_RECORD_RETRIEVE_VIA_COPY' : { 'app' : 'open-ils.search', 'method' : 'open-ils.search.biblio.mods_from_copy', 'secure' : false },
        'PERM_CHECK' : { 'app' : 'open-ils.actor', 'method' : 'open-ils.actor.user.perm.check' },
        'PERM_MULTI_ORG_CHECK' : { 'app' : 'open-ils.actor', 'method' : 'open-ils.actor.user.perm.check.multi_org' },
+       'PERM_RETRIEVE_HIGHEST_ORG' : { 'app' : 'open-ils.actor', 'method' : 'open-ils.actor.user.perm.highest_org' },
        'MARC_XML_RECORD_CREATE' : { 'app' : 'open-ils.cat', 'method' : 'open-ils.cat.biblio.record.xml.create' },
        'MARC_XML_RECORD_IMPORT' : { 'app' : 'open-ils.cat', 'method' : 'open-ils.cat.biblio.record.xml.import' },
        'MARC_XML_RECORD_REPLACE' : { 'app' : 'open-ils.cat', 'method' : 'open-ils.cat.biblio.record.marc.replace' },
@@ -176,6 +178,7 @@ const urls = {
        'opac' : '/opac/en-US/skin/default/xml/advanced.xml',
        'opac_rdetail' : '/opac/en-US/skin/default/xml/rdetail.xml',
        'opac_rresult' : '/opac/en-US/skin/default/xml/rresult.xml',
+       'org_tree' : '/opac/common/js/OrgTree.js',
        'browser' : '/opac/en-US/skin/default/xml/advanced.xml',
        'fieldmapper' : '/opac/common/js/fmall.js',
        'isodate_lib' : '/opac/common/js/DP_DateExtensions.js',
index 1d7a850..1cc2a30 100644 (file)
@@ -9,7 +9,7 @@ util.fm_utils.EXPORT_TAGS       = { ':all' : util.fm_utils.EXPORT_OK };
 util.fm_utils.flatten_ou_branch = function(branch) {
        var my_array = new Array();
        my_array.push( branch );
-       for (var i in branch.children() ) {
+       if (typeof branch.children == 'function') for (var i in branch.children() ) {
                var child = branch.children()[i];
                if (child != null) {
                        var temp_array = util.fm_utils.flatten_ou_branch(child);
index 416cf01..c9a2e67 100644 (file)
 
        <script type="text/javascript" src="chrome://open_ils_staff_client/content/main/lang.js"/>
        <script type="text/javascript" src="/xul/server/main/lang.js"/>
+       <script type="text/javascript" src="/opac/common/js/OrgTree.js"/>
+       <script type="text/javascript" src="/opac/common/js/org_utils.js"/>
        <script type="text/javascript" src="chrome://open_ils_staff_client/content/main/JSAN.js"/>
        <script>
        <![CDATA[
 
                function wsinfo_init() {
 
+                       document.getElementById('register_btn').disabled = true;
+                       document.getElementById('wsname').disabled = true;
+                       document.getElementById('wsname').value = 'Please Wait';
+
                        netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
 
                        if (typeof JSAN == 'undefined') {
                        JSAN.use('util.functional');
                        JSAN.use('util.fm_utils');
 
+                       g.user = g.network.simple_request( 'FM_AU_RETRIEVE_VIA_SESSION', [ xulG.auth.session.key ] );
+
+                       g.my_lib = g.user.home_ou();
+
                        g.aout_list = g.network.simple_request(
                                'FM_AOUT_RETRIEVE',
                                [ ]
                                g.aout_hash[ g.aout_list[i].id() ] = g.aout_list[i];
                        }
 
-                       g.my_libs = g.network.simple_request(
-                               'FM_AOU_RETRIEVE_RELATED_VIA_SESSION',
-                               [ xulG.auth.session.key ]
+                       //g.my_libs = g.network.simple_request(
+                       //      'FM_AOU_RETRIEVE_RELATED_VIA_SESSION',
+                       //      [ xulG.auth.session.key ]
+                       //);
+
+                       var highest_org_id = g.network.simple_request(
+                               'PERM_RETRIEVE_HIGHEST_ORG',
+                               [ xulG.auth.session.key, g.user.id(), 'REGISTER_WORKSTATION']
                        );
+                       var perm_depth = findOrgDepth( highest_org_id );
+
+                       g.my_libs_tree = g.network.simple_request(
+                               'FM_AOU_DESCENDANTS_RETRIEVE',
+                               [ g.user.home_ou(), perm_depth ]
+                       );
+                       if (!instanceOf(g.my_libs_tree,aou)) { /* FIXME - workaround for weird descendants call result */
+                               g.my_libs_tree = g.my_libs_tree[0];
+                       }
+                       g.my_libs = util.fm_utils.flatten_ou_branch( g.my_libs_tree );
 
                        g.my_libs_shortname_hash = {};
                        g.my_libs_ou_hash = {};
                                g.my_libs_shortname_hash[ g.my_libs[i].id() ] = g.my_libs[i].shortname();
                                g.my_libs_ou_hash[ g.my_libs[i].id() ] = function(o){return o;}(g.my_libs[i]);
                        }
+                       /*
                        for (var i = 0; i < g.my_libs.length; i++) {
                                var p = g.my_libs[i].parent_ou();
                                if (!p) {
                                        p.children( c );
                                }
                        }
-
-                       g.my_lib = g.network.simple_request(
-                               'FM_AU_RETRIEVE_VIA_SESSION',
-                               [ xulG.auth.session.key ]
-                       ).home_ou();
+                       */
 
                        g.tb = document.getElementById('wsname');
 
                        render_menulist();
 
+                       document.getElementById('register_btn').disabled = false;
+                       document.getElementById('wsname').disabled = false;
+                       document.getElementById('wsname').value = '';
+
                        document.getElementById('wsname').focus();
                }
 
                </hbox>
                <hbox>
                        <hbox id="placeholder"/>
-                       <button label="Register" accesskey="R" oncommand="register();"/>
+                       <button id="register_btn" label="Register" accesskey="R" oncommand="register();"/>
                </hbox>
        </vbox>
 </window>