home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 May / Pcwk0597.iso / borland / ib / setups / intrabld / data.z / SMGADMIN.JFM < prev    next >
Text File  |  1996-12-11  |  16KB  |  510 lines

  1. /****************************************************************************\
  2. *                                                                            *
  3. * SmGAdmin.jfm  --  Security Group Administration Form                       *
  4. *                                                                            *
  5. * This form is part of the security administration prebuilt business         *
  6. * solution. This is the group adminstration form. It allows you to define    *
  7. * new groups and update existing groups. This form is called from the        *
  8. * SmAdmin form.                                                              *
  9. *                                                                            *
  10. * Dependencies:  secur21.gif                                                 *
  11. *                                                                            *
  12. * Updated 11/13/96 by IntraBuilder Samples Group                             *
  13. * $Revision:   1.11  $                                                       *
  14. *                                                                            *
  15. * Copyright (c) 1996, Borland International, Inc. All rights reserved.       *
  16. *                                                                            *
  17. \****************************************************************************/
  18. #include "security.h"
  19. // {End Header} Do not remove this comment//
  20. // Generated on 11/13/96
  21. //
  22. var f = new smgadminForm();
  23. f.open();
  24. class smgadminForm extends SecurityForm from "SMADMIN.JCF" {
  25.    _sys.scripts.load(_sys.env.home() + "APPS\\SHARED\\CONTROLS.CC")
  26.    with (this) {
  27.       onServerLoad = class::Form_onServerLoad;
  28.       color = "fff7c4";
  29.       height = 14;
  30.       left = 0;
  31.       top = 0;
  32.       width = 74;
  33.       title = "Group Administration";
  34.    }
  35.  
  36.  
  37.    with (this.rule1 = new Rule(this)){
  38.       top = 17;
  39.       size = 2;
  40.       right = 74;
  41.       pageno = 0;
  42.    }
  43.  
  44.  
  45.    with (this.rule2 = new Rule(this)){
  46.       top = 4;
  47.       size = 2;
  48.       right = 74;
  49.       pageno = 0;
  50.    }
  51.  
  52.  
  53.    with (this.actionHTML = new HTML(this)){
  54.       height = 1;
  55.       left = 12;
  56.       top = 2;
  57.       width = 28;
  58.       color = "400040";
  59.       text = "Update Existing Group";
  60.    }
  61.  
  62.  
  63.    with (this.saveButton = new Button(this)){
  64.       onServerClick = class::saveButton_onServerClick;
  65.       left = 40;
  66.       top = 2;
  67.       width = 14;
  68.       text = "Save";
  69.    }
  70.  
  71.  
  72.    with (this.exitButton = new Button(this)){
  73.       onServerClick = class::exitButton_onServerClick;
  74.       left = 56;
  75.       top = 2;
  76.       width = 14;
  77.       text = " Exit ";
  78.    }
  79.  
  80.  
  81.    with (this.groupHTML = new HTML(this)){
  82.       height = 1;
  83.       top = 4.5;
  84.       width = 14;
  85.       color = "400040";
  86.       alignVertical = 1;
  87.       text = "Group name";
  88.    }
  89.  
  90.  
  91.    with (this.groupnameHTML = new HTML(this)){
  92.       height = 1;
  93.       left = 14;
  94.       top = 4.5;
  95.       width = 14;
  96.       color = "black";
  97.       alignVertical = 1;
  98.       text = "groupname";
  99.    }
  100.  
  101.  
  102.    with (this.groupnameText = new Text(this)){
  103.       visible = false;
  104.       left = 14;
  105.       top = 4.5;
  106.       width = 14;
  107.       value = "groupname";
  108.    }
  109.  
  110.  
  111.    with (this.descriptionHTML = new HTML(this)){
  112.       height = 1;
  113.       top = 5.5;
  114.       width = 14;
  115.       color = "400040";
  116.       alignVertical = 1;
  117.       text = "Description";
  118.    }
  119.  
  120.  
  121.    with (this.descriptionText = new Text(this)){
  122.       left = 14;
  123.       top = 5.5;
  124.       width = 36;
  125.       value = "description";
  126.    }
  127.  
  128.  
  129.    with (this.inUserHTML = new HTML(this)){
  130.       height = 1;
  131.       top = 7;
  132.       width = 24;
  133.       color = "400040";
  134.       text = "Member Users";
  135.    }
  136.  
  137.  
  138.    with (this.outUserHTML = new HTML(this)){
  139.       height = 1;
  140.       left = 48;
  141.       top = 7;
  142.       width = 24;
  143.       color = "400040";
  144.       text = "Non-Member Users";
  145.    }
  146.  
  147.  
  148.    with (this.inUserSelect = new ListBox(this)){
  149.       height = 3.5;
  150.       top = 8;
  151.       width = 24;
  152.    }
  153.  
  154.  
  155.    with (this.addUserButton = new Button(this)){
  156.       onServerClick = class::addUserButton_onServerClick;
  157.       left = 26;
  158.       top = 8;
  159.       width = 20;
  160.       text = "Add User";
  161.    }
  162.  
  163.  
  164.    with (this.removeUserButton = new Button(this)){
  165.       onServerClick = class::removeUserButton_onServerClick;
  166.       left = 26;
  167.       top = 9.5;
  168.       width = 20;
  169.       text = "Remove User";
  170.    }
  171.  
  172.  
  173.    with (this.outUserSelect = new ListBox(this)){
  174.       height = 3.5;
  175.       left = 48;
  176.       top = 8;
  177.       width = 24;
  178.    }
  179.  
  180.  
  181.    with (this.inResourceHTML = new HTML(this)){
  182.       height = 1;
  183.       top = 12;
  184.       width = 24;
  185.       color = "400040";
  186.       text = "May access resource";
  187.    }
  188.  
  189.  
  190.    with (this.outResourceHTML = new HTML(this)){
  191.       height = 1;
  192.       left = 48;
  193.       top = 12;
  194.       width = 24;
  195.       color = "400040";
  196.       text = "May not access resource";
  197.    }
  198.  
  199.  
  200.    with (this.inResourceSelect = new ListBox(this)){
  201.       height = 3.5;
  202.       top = 13;
  203.       width = 24;
  204.    }
  205.  
  206.  
  207.    with (this.addResourceButton = new Button(this)){
  208.       onServerClick = class::addResourceButton_onServerClick;
  209.       left = 26;
  210.       top = 13;
  211.       width = 20;
  212.       text = "Add Res.";
  213.    }
  214.  
  215.  
  216.    with (this.removeResourceButton = new Button(this)){
  217.       onServerClick = class::removeResourceButton_onServerCli;
  218.       left = 26;
  219.       top = 14.5;
  220.       width = 20;
  221.       text = "Remove Res.";
  222.    }
  223.  
  224.  
  225.    with (this.outResourceSelect = new ListBox(this)){
  226.       height = 3.5;
  227.       left = 48;
  228.       top = 13;
  229.       width = 24;
  230.    }
  231.  
  232.  
  233.    with (this.errorHTML = new HTML(this)){
  234.       height = 4;
  235.       top = 5;
  236.       width = 74;
  237.       color = "black";
  238.       text = "Error loading group administration form. Notify system administrator.";
  239.       pageno = 2;
  240.    }
  241.  
  242.  
  243.    with (this.backButton = new Button(this)){
  244.       onServerClick = {;this.form.pageno = 1};
  245.       top = 9;
  246.       width = 20;
  247.       text = "Back";
  248.       pageno = 2;
  249.    }
  250.  
  251.  
  252.    with (this.GeneratedHTML1 = new GeneratedHTML(this)){
  253.       height = 1;
  254.       top = 17.5;
  255.       width = 74;
  256.       pageno = 0;
  257.    }
  258.  
  259.  
  260.    function Form_onServerLoad()
  261.    {
  262.       try {
  263.          // 
  264.          // make sure that all the custom properties are set
  265.          //
  266.          var x = this.copyEntity?1:0;
  267.          var x = this.entity.name;
  268.          var x = this.security._admin;
  269.          var x = this.callingForm.title;
  270.          //
  271.          // set the action text
  272.          //
  273.          this.createNew = true;
  274.          if (this.entity.name == null)
  275.             this.actionHTML.text = "Create New Group";
  276.          else if (this.copyEntity)
  277.             this.actionHTML.text = ("Copy " + this.entity.name + " To New Group");
  278.          else {
  279.             this.createNew = false;
  280.             this.actionHTML.text = "Update Existing Group";
  281.          }
  282.          //
  283.          // set the control values on this form
  284.          //
  285.          if (this.createNew) {
  286.             this.groupnameText.value = new StringEx().replicate(" ",20);
  287.             this.groupnameText.visible = true;
  288.             this.groupnameHTML.visible = false;
  289.          }
  290.          else {
  291.             this.groupnameHTML.text = this.entity.name;
  292.             this.groupnameHTML.visible = true;
  293.             this.groupnameText.visible = false;
  294.          }
  295.          this.descriptionText.value = (this.entity.description == null) ?
  296.                                        new StringEx().replicate(" ",80) : 
  297.                                        this.entity.description;
  298.          // create arrays for the select controls
  299.          this.inUser      = new Array();
  300.          this.outUser     = new Array();
  301.          this.inResource  = new Array();
  302.          this.outResource = new Array();
  303.          // save original groups/resources for use in save
  304.          this.inUserStart     = new Array();
  305.          this.inResourceStart = new Array();
  306.          var entity = "";
  307.          // build user lists
  308.          if (this.createNew)
  309.             var inUser = new AssocArray();
  310.          else
  311.             var inUser = this.security.getAllUsers(this.entity.name, SM_ENTITY_GROUP);
  312.          var outUser = this.security.getAllUsers();
  313.          // add all in users to list
  314.          for (var i = 0; i<inUser.count(); i++) {
  315.             entity = (i==0) ? inUser.firstKey : inUser.nextKey(entity);
  316.             this.inUser.add(entity);
  317.             this.inUserStart.add(entity);
  318.          }
  319.          this.inUser.sort();
  320.          this.inUserSelect.options = 'array this.inUser';
  321.          // add users to out list if they are not in in list
  322.          for (i = 0; i<outUser.count(); i++) {
  323.             entity = (i==0) ? outUser.firstKey : outUser.nextKey(entity);
  324.             if (!inUser.isKey(entity))
  325.                this.outUser.add(entity);
  326.          }
  327.          this.outUser.sort();
  328.          this.outUserSelect.options = 'array this.outUser';
  329.          // build resource lists
  330.          if (this.entity.name == null)
  331.             var inResource = new AssocArray();
  332.          else
  333.             var inResource = this.security.getAllResources(this.entity.name, SM_ENTITY_GROUP);
  334.          var outResource = this.security.getAllResources();
  335.          // add all in resources to list
  336.          for (var i = 0; i<inResource.count(); i++) {
  337.             entity = (i==0) ? inResource.firstKey : inResource.nextKey(entity);
  338.             this.inResource.add(entity);
  339.             this.inResourceStart.add(entity);
  340.          }
  341.          this.inResource.sort();
  342.          this.inResourceSelect.options = 'array this.inResource';
  343.          // add resources to out list if they are not in in list
  344.          for (i = 0; i<outResource.count(); i++) {
  345.             entity = (i==0) ? outResource.firstKey : outResource.nextKey(entity);
  346.             if (!inResource.isKey(entity))
  347.                this.outResource.add(entity);
  348.          }
  349.          this.outResource.sort();
  350.          this.outResourceSelect.options = 'array this.outResource';
  351.       }
  352.       catch (Exception e) {
  353.          this.errorHTML.text = "Error loading group: " + e.message + " (" + e.code + ")";
  354.          this.pageno = 2;
  355.       }
  356.    }
  357.  
  358.    function saveButton_onServerClick()
  359.    {
  360.       var form = this.form;
  361.       try {
  362.          // have an exception ready
  363.          var error = new Exception();
  364.          error.message = "";
  365.          error.code = 0;
  366.          //
  367.          //  set the properties of the entity object
  368.          //
  369.          //  group name
  370.          if (form.createNew) {
  371.             var name = new StringEx(form.groupnameText.value);
  372.             name.string = name.leftTrim();
  373.             name.string = name.rightTrim();
  374.             if (name.length == 0) {
  375.                error.message = "Group name may not be blank";
  376.                throw error;
  377.             }
  378.             else
  379.                form.entity.name = name;
  380.          }
  381.          // description
  382.          form.entity.description = form.descriptionText.value;
  383.          //
  384.          //  call create/update with entity object
  385.          //
  386.          if (form.createNew)
  387.             form.security.createGroup(form.entity);
  388.          else
  389.             form.security.updateGroup(form.entity);
  390.          //
  391.          //  assign user membership
  392.          //
  393.          for (var i = 0; i<form.inUser.length; i++) {
  394.             if ((form.createNew) || (form.inUserStart.scan(form.inUser[i]) < 0))
  395.                form.security.assignGroupUser(form.entity.name,form.inUser[i]);
  396.          }
  397.          //
  398.          //  assign resource privileges
  399.          //
  400.          for (var i = 0; i<form.inResource.length; i++) {
  401.             if ((form.createNew) || (form.inResourceStart.scan(form.inResource[i]) < 0))
  402.                form.security.assignResourceGroup(form.inResource[i],form.entity.name);
  403.          }
  404.          //
  405.          //  remove user memberships for existing groups only
  406.          //
  407.          if (!form.createNew) {
  408.             for (var i = 0; i<form.inUserStart.length; i++) {
  409.                if (form.inUser.scan(form.inUserStart[i]) < 0)
  410.                   form.security.unassignGroupUser(form.entity.name,form.inUserStart[i]);
  411.             }
  412.          }
  413.          //
  414.          //  remove resource privileges for existing groups only
  415.          //
  416.          if (!form.createNew) {
  417.             for (var i = 0; i<form.inResourceStart.length; i++) {
  418.                if (form.inResource.scan(form.inResourceStart[i]) < 0)
  419.                   form.security.unassignResourceGroup(form.inResourceStart[i],form.entity.name);
  420.             }
  421.          }
  422.          //
  423.          //  Successful change, no longer in createNew mode
  424.          //
  425.          if (form.createNew) {
  426.             form.createNew = false;
  427.             form.actionHTML.text = "Update Existing Group";
  428.             form.groupnameHTML.text = form.entity.name;
  429.             form.groupnameHTML.visible = true;
  430.             form.groupnameText.visible = false;
  431.          }
  432.          //
  433.          // current inXxxxx arrays become the inXxxxxStart arrays
  434.          //
  435.          form.inUserStart     = new Array();
  436.          form.inResourceStart = new Array();
  437.          for (var i = 0; i<form.inUser.length; i++)
  438.             form.inUserStart.add(form.inUser[i]);
  439.          for (var i = 0; i<form.inResource.length; i++)
  440.             form.inResourceStart.add(form.inResource[i]);
  441.      }
  442.       catch (Exception e) {
  443.          form.errorHTML.text = "Error saving group: " + e.message + " (" + e.code + ")";
  444.          form.pageno = 2;
  445.       }
  446.    }
  447.  
  448.    function exitButton_onServerClick()
  449.    {
  450.       try {
  451.          this.form.callingForm.open();
  452.          this.form.close();
  453.          this.form.release();
  454.       }
  455.       catch (Exception e) {
  456.          this.form.errorHTML.text = "Unable to return to calling form.";
  457.          this.form.pageno = 2;
  458.       }
  459.    }
  460.  
  461.    function addUserButton_onServerClick()
  462.    {
  463.       if ((this.form.outUserSelect.value.length > 0) && (this.form.outUser.scan(this.form.outUserSelect.value) >= 0)) {
  464.          this.form.inUser.add(this.form.outUserSelect.value);
  465.          this.form.inUser.sort();
  466.          this.form.inUserSelect.options = "array this.form.inUser";
  467.          this.form.outUser.delete(this.form.outUser.scan(this.form.outUserSelect.value));
  468.          this.form.outUser.length -= 1;
  469.          this.form.outUserSelect.options = "array this.form.outUser";
  470.       }
  471.    }
  472.  
  473.    function removeUserButton_onServerClick()
  474.    {
  475.       if ((this.form.inUserSelect.value.length > 0) && (this.form.inUser.scan(this.form.inUserSelect.value) >= 0)) {
  476.          this.form.outUser.add(this.form.inUserSelect.value);
  477.          this.form.outUser.sort();
  478.          this.form.outUserSelect.options = "array this.form.outUser";
  479.          this.form.inUser.delete(this.form.inUser.scan(this.form.inUserSelect.value));
  480.          this.form.inUser.length -= 1;
  481.          this.form.inUserSelect.options  = "array this.form.inUser";
  482.       }
  483.    }
  484.  
  485.    function addResourceButton_onServerClick()
  486.    {
  487.       if ((this.form.outResourceSelect.value.length > 0) && (this.form.outResource.scan(this.form.outResourceSelect.value) >= 0)) {
  488.          this.form.inResource.add(this.form.outResourceSelect.value);
  489.          this.form.inResource.sort();
  490.          this.form.inResourceSelect.options = "array this.form.inResource";
  491.          this.form.outResource.delete(this.form.outResource.scan(this.form.outResourceSelect.value));
  492.          this.form.outResource.length -= 1;
  493.          this.form.outResourceSelect.options = "array this.form.outResource";
  494.       }
  495.    }
  496.  
  497.    function removeResourceButton_onServerClick()
  498.    {
  499.       if ((this.form.inResourceSelect.value.length > 0) && (this.form.inResource.scan(this.form.inResourceSelect.value) >= 0)) {
  500.          this.form.outResource.add(this.form.inResourceSelect.value);
  501.          this.form.outResource.sort();
  502.          this.form.outResourceSelect.options = "array this.form.outResource";
  503.          this.form.inResource.delete(this.form.inResource.scan(this.form.inResourceSelect.value));
  504.          this.form.inResource.length -= 1;
  505.          this.form.inResourceSelect.options  = "array this.form.inResource";
  506.       }
  507.    }
  508.  
  509. }
  510.