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

  1. /****************************************************************************\
  2. *                                                                            *
  3. * Update.jfm  --  Employee Phone Book Update Form                            *
  4. *                                                                            *
  5. * Update.jfm is part of the Phone Book solution application. It is used      *
  6. * to modify the employee table. It can also be used to add and delete        *
  7. * employee records.                                                          *
  8. *                                                                            *
  9. * Dependencies:  phonbk31.gif                                                *
  10. *                apps\shared\controls.cc                                     *
  11. *                apps\shared\string.js                                       *
  12. *                                                                            *
  13. * Links to:      ibapps/index.htm                                            *
  14. *                svr/intrasrv.isv?apps/phone/phonedep.jrp                    *
  15. *                svr/intrasrv.isv?apps/phone/phoneemp.jrp                    *
  16. *                svr/intrasrv.isv?apps/phone/update.jfm                      *
  17. *                                                                            *
  18. * Updated 11/12/96 by IntraBuilder Samples Group                             *
  19. * $Revision:   1.32  $                                                       *
  20. *                                                                            *
  21. * Copyright (c) 1996, Borland International, Inc. All rights reserved.       *
  22. *                                                                            *
  23. \****************************************************************************/
  24. #include "intra.h"
  25. #include "security.h"
  26. //
  27. // This header code is executed when the form is run. The return
  28. // prevents the designer generated startup code from executing.
  29. // 
  30. // The code loads the security login form instead of the update form.
  31. // An object reference to the update form is stored as a property of
  32. // the login form. If the login is successful, the login form opens
  33. // this update form.
  34. // 
  35. // First create the update form, but don't open it.
  36. _sys.scripts.load(_sys.env.home() + "APPS\\SHARED\\STRING.JS")
  37. var f = new updateForm();
  38. f.argv = UPDATE.arguments;
  39. // then create a security object
  40. _sys.scripts.load(SM_CLASS_LOCATION + "security.js");
  41. f.security = new SecurityManager();
  42. // then create the login form
  43. _sys.scripts.load("emplogin.jfm");
  44. var login = new emploginForm();
  45. // the login form requires two custom properties be set
  46. login.security = f.security;
  47. login.nextForm = f;
  48. // finally, open the login form
  49. login.open();
  50. return;
  51. // {End Header} Do not remove this comment//
  52. // Generated on 11/12/96
  53. //
  54. var f = new updateForm();
  55. f.open();
  56. class updateForm extends Form {
  57.    _sys.scripts.load(_sys.env.home() + "APPS\\SHARED\\CONTROLS.CC")
  58.    with (this) {
  59.       preRender = class::Form_preRender;
  60.       onServerLoad = class::Form_onServerLoad;
  61.       color = "cae4ff";
  62.       height = 14.6667;
  63.       left = 0;
  64.       top = 0;
  65.       width = 76;
  66.       title = "Update Employee";
  67.    }
  68.  
  69.  
  70.    with (this.ibapps1 = new Database()){
  71.       left = 66;
  72.       top = 5;
  73.       databaseName = "IBAPPS";
  74.       active = true;
  75.  
  76.    }
  77.  
  78.    with (this.department1 = new Query()){
  79.       left = 66;
  80.       top = 7;
  81.       database = parent.ibapps1;
  82.       sql = "select * from departmt";
  83.  
  84.       active = true;
  85.  
  86.       with (rowset) {
  87.  
  88.  
  89.       }
  90.  
  91.    }
  92.  
  93.    with (this.employee1 = new Query()){
  94.       left = 66;
  95.       top = 6;
  96.       database = parent.ibapps1;
  97.       sql = "SELECT * FROM employee";
  98.  
  99.       active = true;
  100.  
  101.       with (rowset) {
  102.  
  103.  
  104.       }
  105.  
  106.    }
  107.  
  108.    with (this.rule1 = new Rule(this)){
  109.       top = 4;
  110.       size = 2;
  111.       right = 70;
  112.       pageno = 0;
  113.  
  114.    }
  115.  
  116.    with (this.rule2 = new Rule(this)){
  117.       top = 22.5;
  118.       size = 2;
  119.       right = 70;
  120.       pageno = 0;
  121.  
  122.    }
  123.  
  124.    with (this.PhoneBookLogo = new Image(this)){
  125.       height = 3.4167;
  126.       width = 10.25;
  127.       dataSource = "filename PHONBK31.GIF";
  128.       alignment = 4;
  129.       pageno = 0;
  130.  
  131.    }
  132.  
  133.    with (this.HeadingHTML = new HTML(this)){
  134.       height = 2;
  135.       left = 12;
  136.       width = 58;
  137.       color = "853a1a";
  138.       alignVertical = 1;
  139.       text = "<H1>Update Employee Data</H1>";
  140.       pageno = 0;
  141.  
  142.    }
  143.  
  144.    with (this.navImage = new Image(this)){
  145.       onImageServerClick = class::navImage_onImageServerClick;
  146.       visible = false;
  147.       height = 0.9583;
  148.       left = 12;
  149.       top = 2;
  150.       width = 13;
  151.       dataSource = "filename EXPINAVH.GIF";
  152.       alignment = 4;
  153.  
  154.    }
  155.  
  156.    with (this.editImage = new Image(this)){
  157.       onImageServerClick = class::editImage_onImageServerClick;
  158.       visible = false;
  159.       height = 0.9583;
  160.       left = 26;
  161.       top = 2;
  162.       width = 22.75;
  163.       dataSource = "filename EXPIROWH.GIF";
  164.       alignment = 4;
  165.  
  166.    }
  167.  
  168.    with (this.profileButton = new Button(this)){
  169.       onServerClick = class::profileButton_onServerClick;
  170.       visible = false;
  171.       left = 50;
  172.       top = 2;
  173.       width = 18;
  174.       text = "Security Profile";
  175.  
  176.    }
  177.  
  178.    with (this.nameHTML = new HTML(this)){
  179.       height = 1;
  180.       top = 5;
  181.       width = 16;
  182.       color = "black";
  183.       alignVertical = 1;
  184.       text = "Full name";
  185.  
  186.    }
  187.  
  188.    with (this.nameText = new Text(this)){
  189.       left = 16;
  190.       top = 5;
  191.       width = 28;
  192.       dataLink = parent.employee1.rowset.fields["Full Name"];
  193.  
  194.    }
  195.  
  196.    with (this.empidHTML = new HTML(this)){
  197.       height = 1;
  198.       top = 6;
  199.       width = 16;
  200.       color = "black";
  201.       alignVertical = 1;
  202.       text = "Employee Id";
  203.  
  204.    }
  205.  
  206.    with (this.employeeIDHTML = new HTML(this)){
  207.       height = 1;
  208.       left = 16;
  209.       top = 6;
  210.       width = 14;
  211.       color = "black";
  212.       alignVertical = 1;
  213.       text = {||this.parent.rowset.state==5 ? "(locating)" : this.parent.rowset.state==4 ? "(filtering)" : this.parent.rowset.state==3 ? "(appending)" : (this.parent.rowset.endOfSet ? "(end of set)" : parseInt(this.parent.rowset.fields["Employee ID"].value))};
  214.  
  215.    }
  216.  
  217.    with (this.secIDHTML = new HTML(this)){
  218.       height = 1;
  219.       left = 30;
  220.       top = 6;
  221.       width = 14;
  222.       color = "black";
  223.       alignVertical = 1;
  224.       text = "Security id";
  225.  
  226.    }
  227.  
  228.    with (this.securityIDText = new Text(this)){
  229.       left = 44;
  230.       top = 6;
  231.       width = 21;
  232.       dataLink = parent.employee1.rowset.fields["Security ID"];
  233.  
  234.    }
  235.  
  236.    with (this.securityIDHTML = new HTML(this)){
  237.       height = 1;
  238.       left = 44;
  239.       top = 6;
  240.       width = 21;
  241.       color = "black";
  242.       alignVertical = 1;
  243.       text = {||this.parent.employee1.rowset.fields["Security ID"].value};
  244.  
  245.    }
  246.  
  247.    with (this.deptHTML = new HTML(this)){
  248.       height = 1;
  249.       top = 7.5;
  250.       width = 16;
  251.       color = "black";
  252.       alignVertical = 1;
  253.       text = "Department";
  254.  
  255.    }
  256.  
  257.    with (this.titleHTML = new HTML(this)){
  258.       height = 1;
  259.       top = 8.5;
  260.       width = 16;
  261.       color = "black";
  262.       alignVertical = 1;
  263.       text = "Title";
  264.  
  265.    }
  266.  
  267.    with (this.titleText = new Text(this)){
  268.       left = 16;
  269.       top = 8.5;
  270.       width = 28;
  271.       dataLink = parent.employee1.rowset.fields["Title"];
  272.  
  273.    }
  274.  
  275.    with (this.phoneHTML = new HTML(this)){
  276.       height = 1;
  277.       top = 10;
  278.       width = 16;
  279.       color = "black";
  280.       alignVertical = 1;
  281.       text = "Phone";
  282.  
  283.    }
  284.  
  285.    with (this.phoneText = new Text(this)){
  286.       left = 16;
  287.       top = 10;
  288.       width = 10;
  289.       dataLink = parent.employee1.rowset.fields["Phone"];
  290.  
  291.    }
  292.  
  293.    with (this.locationHTML = new HTML(this)){
  294.       height = 1;
  295.       left = 30;
  296.       top = 10;
  297.       width = 10;
  298.       color = "black";
  299.       alignVertical = 1;
  300.       text = "Location";
  301.  
  302.    }
  303.  
  304.    with (this.locationText = new Text(this)){
  305.       left = 40;
  306.       top = 10;
  307.       width = 9;
  308.       dataLink = parent.employee1.rowset.fields["Location"];
  309.  
  310.    }
  311.  
  312.    with (this.homepageHTML = new HTML(this)){
  313.       height = 1;
  314.       top = 11;
  315.       width = 16;
  316.       color = "black";
  317.       alignVertical = 1;
  318.       text = "Web address";
  319.  
  320.    }
  321.  
  322.    with (this.homepageText = new Text(this)){
  323.       left = 16;
  324.       top = 11;
  325.       width = 42;
  326.       dataLink = parent.employee1.rowset.fields["Homepage"];
  327.  
  328.    }
  329.  
  330.    with (this.noteHTML = new HTML(this)){
  331.       height = 1;
  332.       top = 12;
  333.       width = 16;
  334.       color = "black";
  335.       alignVertical = 1;
  336.       text = "Phone note";
  337.  
  338.    }
  339.  
  340.    with (this.noteText = new Text(this)){
  341.       left = 16;
  342.       top = 12;
  343.       width = 42;
  344.       dataLink = parent.employee1.rowset.fields["Phone Note"];
  345.  
  346.    }
  347.  
  348.    with (this.homeAddressHTML = new HTML(this)){
  349.       height = 1;
  350.       top = 14;
  351.       width = 16;
  352.       color = "black";
  353.       alignVertical = 1;
  354.       text = "Home address";
  355.  
  356.    }
  357.  
  358.    with (this.addr1Text = new Text(this)){
  359.       left = 16;
  360.       top = 14;
  361.       width = 36;
  362.       dataLink = parent.employee1.rowset.fields["Home Address1"];
  363.  
  364.    }
  365.  
  366.    with (this.addr2Text = new Text(this)){
  367.       left = 16;
  368.       top = 15;
  369.       width = 36;
  370.       dataLink = parent.employee1.rowset.fields["Home Address2"];
  371.  
  372.    }
  373.  
  374.    with (this.cityText = new Text(this)){
  375.       left = 16;
  376.       top = 16;
  377.       width = 16;
  378.       dataLink = parent.employee1.rowset.fields["Home City"];
  379.  
  380.    }
  381.  
  382.    with (this.stateText = new Text(this)){
  383.       left = 36;
  384.       top = 16;
  385.       width = 4;
  386.       dataLink = parent.employee1.rowset.fields["Home State"];
  387.  
  388.    }
  389.  
  390.    with (this.zipText = new Text(this)){
  391.       left = 44;
  392.       top = 16;
  393.       width = 8;
  394.       dataLink = parent.employee1.rowset.fields["Home Zip"];
  395.  
  396.    }
  397.  
  398.    with (this.homePhoneHTML = new HTML(this)){
  399.       height = 1;
  400.       top = 17;
  401.       width = 16;
  402.       color = "black";
  403.       alignVertical = 1;
  404.       text = "Home phone";
  405.  
  406.    }
  407.  
  408.    with (this.homePhoneText = new Text(this)){
  409.       left = 16;
  410.       top = 17;
  411.       width = 16;
  412.       dataLink = parent.employee1.rowset.fields["Home Phone"];
  413.  
  414.    }
  415.  
  416.    with (this.contactNameHTML = new HTML(this)){
  417.       height = 1;
  418.       top = 18.5;
  419.       width = 16;
  420.       color = "black";
  421.       alignVertical = 1;
  422.       text = "Contact name";
  423.  
  424.    }
  425.  
  426.    with (this.contactText = new Text(this)){
  427.       left = 16;
  428.       top = 18.5;
  429.       width = 24;
  430.       dataLink = parent.employee1.rowset.fields["Contact"];
  431.  
  432.    }
  433.  
  434.    with (this.contactPhoneHTML = new HTML(this)){
  435.       height = 1;
  436.       top = 19.5;
  437.       width = 16;
  438.       color = "black";
  439.       alignVertical = 1;
  440.       text = "Contact phone";
  441.  
  442.    }
  443.  
  444.    with (this.contactPhoneText = new Text(this)){
  445.       left = 16;
  446.       top = 19.5;
  447.       width = 16;
  448.       dataLink = parent.employee1.rowset.fields["Contact Phone"];
  449.  
  450.    }
  451.  
  452.    with (this.saveButton = new Button(this)){
  453.       onServerClick = class::saveButton_onServerClick;
  454.       visible = false;
  455.       left = 12;
  456.       top = 2;
  457.       width = 12;
  458.       text = "Save Updates";
  459.  
  460.    }
  461.  
  462.    with (this.errorHTML = new HTML(this)){
  463.       height = 3;
  464.       left = 1;
  465.       top = 7;
  466.       width = 79;
  467.       color = "black";
  468.       text = "error";
  469.       pageno = 2;
  470.  
  471.    }
  472.  
  473.    with (this.deptSelect = new FieldSelect(this)){
  474.       left = 16;
  475.       top = 7.5;
  476.       width = 28;
  477.       options = "array {'departmt','department'}";
  478.  
  479.    }
  480.  
  481.    with (this.deptButton = new Button(this)){
  482.       onServerClick = class::deptButton_onServerClick;
  483.       left = 48;
  484.       top = 7.5;
  485.       width = 10.125;
  486.       text = "Update...";
  487.  
  488.    }
  489.  
  490.    with (this.LinksHTML = new HTML(this)){
  491.       height = 1;
  492.       top = 21.375;
  493.       width = 70;
  494.       color = "black";
  495.       text = {||'<A HREF="/ibapps/index.htm">[Home]</A> <A HREF="/svr/intrasrv.isv?apps/phone/phoneemp.jrp">[List by Employee]</A> <A HREF="/svr/intrasrv.isv?apps/phone/phonedep.jrp">[List by Department]</A>'};
  496.       pageno = 0;
  497.  
  498.    }
  499.  
  500.    with (this.GeneratedHTML1 = new GeneratedHTML(this)){
  501.       height = 1;
  502.       top = 23;
  503.       width = 70;
  504.       pageno = 0;
  505.  
  506.    }
  507.    this.rowset = this.employee1.rowset;
  508.  
  509.    function Form_onServerLoad()
  510.    {
  511.       var form = this;
  512.       form.updateDeptList = false;
  513.       // check for error conditions
  514.       var error = new Exception();
  515.       error.code = 0;
  516.       try {
  517.          // move to the requested record
  518.          if (form.argv.length == 1) {
  519.             if (!form.rowset.applyLocate('"Employee ID"=' + form.argv[0])){
  520.                error.message = "Invalid Employee ID - " + form.argv[0];
  521.                throw error;
  522.             }
  523.          }
  524.          if (form.security.hasAccessTo("Phone Update")) {
  525.             form.navImage.visible = true;
  526.             form.editImage.visible = true;
  527.             form.deptButton.visible = true;
  528.             form.saveButton.visible = false;
  529.             form.securityIDText.visible = true;
  530.             form.securityIDHTML.visible = false;
  531.          }
  532.          else {
  533.             var name = form.security.getUserName();
  534.             if (form.rowset.applyLocate('"Security ID"=' + "'" + escapeChar(name,"'") + "'")){
  535.                form.navImage.visible = false;
  536.                form.editImage.visible = false;
  537.                form.deptButton.visible = false;
  538.                form.saveButton.visible = true;
  539.                form.securityIDText.visible = false;
  540.                form.securityIDHTML.visible = true;
  541.             }
  542.             else {
  543.                error.message = "Insufficient rights to update data";
  544.                throw error;
  545.             }
  546.          }
  547.       }
  548.       catch (Exception e) {
  549.          form.rowset.first();
  550.          form.errorHTML.text = "Error loading update form: " + e.message +
  551.                                " (" + e.code + ")"
  552.          form.pageno = 2;
  553.       }
  554.       //
  555.       // set the field events for the department field
  556.       //
  557.       // This allows the Select control to show values from the lookup table
  558.       //
  559.       this.employee1.rowset.fields["Department"].canChange = 
  560.          {| d |; var dept = this.parent.parent.parent.parent.department1 ;dept.rowset.applyLocate("Department = '" + escapeChar(d,"'") + "'") ;this.value = dept.rowset.fields["Department ID"].value; return false}
  561.       this.employee1.rowset.fields["Department"].beforeGetValue = 
  562.          {; var dept = this.parent.parent.parent.parent.department1 ;dept.rowset.applyLocate('"Department ID" = ' + (this.value==null?0:this.value)) ;return (dept.rowset.endOfSet?"":dept.rowset.fields["Department"].value)};
  563.       this.deptSelect.dataLink = this.employee1.rowset.fields["Department"];
  564.       this.deptSelect.value = this.employee1.rowset.fields["Department"].value;
  565.    }
  566.  
  567.    function Form_preRender(notForm, formRef)
  568.    {
  569.       var form = (notForm ? formRef : this);
  570.       if (form.pageno == 1 && !form.rowset.endOfSet) {
  571.          // determine if the update profile button should be enabled
  572.          form.profileButton.visible = (form.security.getUserName() == form.rowset.fields["Security ID"].value);
  573.          form.employeeIDHTML.text = form.employeeIDHTML.text;
  574.          form.securityIDHTML.text = form.securityIDHTML.text;
  575.       }
  576.       if (form.updateDeptList) {
  577.          form.deptSelect.fillOptions();
  578.          form.updateDeptList = false;
  579.       }
  580.    }
  581.  
  582.    function navImage_onImageServerClick(nLeft, nTop) {
  583.       if (nLeft >= 26*0 && nLeft < 26*1)
  584.          form.rowset.first();
  585.       else if (nLeft >= 26*1 && nLeft < 26*2) {
  586.          if (!form.rowset.next(-1)) 
  587.             form.rowset.next();
  588.       }
  589.       else if (nLeft >= 26*2 && nLeft < 26*3) {
  590.          if (!form.rowset.next()) 
  591.             form.rowset.next(-1);
  592.       }
  593.       else
  594.          form.rowset.last();
  595.       // re-render the form
  596.       this.form.Form_preRender(true, this.form);
  597.    }
  598.  
  599.    function editImage_onImageServerClick(nLeft, nTop) {
  600.       if (nLeft >= 26*0 && nLeft < 26*1)
  601.          form.rowset.beginAppend();
  602.       else if (nLeft >= 26*1 && nLeft < 26*2) {
  603.          if (!form.rowset.endOfSet)
  604.             form.rowset.delete();
  605.          }
  606.       else if (nLeft >= 26*2 && nLeft < 26*3)
  607.          form.rowset.save();
  608.       else if (nLeft >= 26*3 && nLeft < 26*4)
  609.          form.rowset.abandon();
  610.       else if (nLeft >= 26*4 && nLeft < 26*5)
  611.          form.rowset.beginEdit();
  612.       else if (nLeft >= 26*5 && nLeft < 26*6) {
  613.          with(this) {
  614.             if (form.rowset.state==STATE_LOCATE) {
  615.                text="New Query";
  616.                form.rowset.applyLocate();
  617.             } 
  618.             else {
  619.                text="Run Query";
  620.                form.rowset.beginLocate();
  621.             }
  622.          }
  623.       }
  624.       else {
  625.          with(this) {
  626.             if (form.rowset.state==STATE_FILTER) {
  627.                text="New Filter";
  628.                form.rowset.applyFilter();
  629.             } 
  630.             else {
  631.                text="Run Filter";
  632.                form.rowset.beginFilter();
  633.             }
  634.          }
  635.       }
  636.       // re-render the form
  637.       this.form.Form_preRender(true, this.form);
  638.    }
  639.  
  640.    function saveButton_onServerClick()
  641.    {
  642.       this.form.rowset.save();
  643.       this.form.Form_preRender(true, this.form);
  644.    }
  645.  
  646.    function profileButton_onServerClick()
  647.    {
  648.       _sys.scripts.load("empprof.jfm");
  649.       var f = new empprofForm();
  650.       f.security = this.form.security;
  651.       f.callingForm = this.form;
  652.       f.changeForm  = "empchang.jfm";
  653.       f.changeFormClass = "empchangForm";
  654.       f.open();
  655.    }
  656.  
  657.    function deptButton_onServerClick()
  658.    {
  659.       this.form.updateDeptList = true;
  660.       _sys.forms.run("departmt.jfm");
  661.    }
  662.  
  663. }
  664.