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

  1. /****************************************************************************\
  2. *                                                                            *
  3. * KbLookup.jfm  --  Knowledge Base Lookup Table Update Form                  *
  4. *                                                                            *
  5. * KbLookup.jfm is part of the Knowledge Base prebuilt business solution. It  *
  6. * is used to update the two lookup tables, products and categories. It uses  *
  7. * the kblogin form to provide password security. See the header code right   *
  8. * after this comment block to see how the login form is called.              *
  9. *                                                                            *
  10. * Dependencies:  knowbs31.gif                                                *
  11. *                homepg31.gif                                                *
  12. *                paper_22.gif                                                *
  13. *                database.cc                                                 *
  14. *                apps\shared\controls.cc                                     *
  15. *                                                                            *
  16. * Updated 11/13/96 by IntraBuilder Samples Group                             *
  17. * $Revision:   1.11  $                                                        *
  18. *                                                                            *
  19. * Copyright (c) 1996, Borland International, Inc. All rights reserved.       *
  20. *                                                                            *
  21. \****************************************************************************/
  22. #include "security.h"
  23. //
  24. // The code loads the security login form instead of the update form.
  25. // An object reference to the update form is stored as a property of
  26. // the login form. If the login is successful, the login form opens
  27. // this update form.
  28. // 
  29. // First create the update form, but don't open it.
  30. var f = new kblookupForm();
  31. // then create a security object
  32. _sys.scripts.load(SM_CLASS_LOCATION + "security.js");
  33. f.security = new SecurityManager();
  34. // then create the login form
  35. _sys.scripts.load("kblogin.jfm");
  36. var login = new kbloginForm();
  37. // the login form requires two custom properties be set
  38. login.security = f.security;
  39. login.nextForm = f;
  40. // finally, open the login form
  41. login.open();
  42. return;
  43. // {End Header} Do not remove this comment//
  44. // Generated on 11/13/96
  45. //
  46. var f = new kblookupForm();
  47. f.open();
  48. class kblookupForm extends Form {
  49.    _sys.scripts.load(_sys.env.home() + "APPS\\SHARED\\CONTROLS.CC");
  50.    _sys.scripts.load("DATABASE.CC");
  51.    with (this) {
  52.       preRender = class::Form_preRender;
  53.       onServerLoad = class::Form_onServerLoad;
  54.       color = "ffffc4";
  55.       height = 14;
  56.       left = 0;
  57.       top = 0;
  58.       width = 72;
  59.       title = "Edit Lookup Tables";
  60.       background = "filename paper_22.gif";
  61.    }
  62.  
  63.  
  64.    with (this.ibapps1 = new KbaseDatabase()){
  65.       left = 15;
  66.       top = 2.4583;
  67.       active = true;
  68.    }
  69.  
  70.  
  71.    with (this.category1 = new Query()){
  72.       left = 22;
  73.       top = 2.4583;
  74.       database = parent.ibapps1;
  75.       sql = "SELECT * FROM kbcat";
  76.       active = true;
  77.    }
  78.  
  79.  
  80.    with (this.category1.rowset) {
  81.  
  82.    }
  83.  
  84.  
  85.    with (this.product1 = new Query()){
  86.       left = 28;
  87.       top = 2.4583;
  88.       database = parent.ibapps1;
  89.       sql = "SELECT * FROM kbprod";
  90.       active = true;
  91.    }
  92.  
  93.  
  94.    with (this.product1.rowset) {
  95.  
  96.    }
  97.  
  98.  
  99.    with (this.rule1 = new Rule(this)){
  100.       top = 4;
  101.       size = 2;
  102.       right = 70;
  103.       pageno = 0;
  104.    }
  105.  
  106.  
  107.    with (this.rule2 = new Rule(this)){
  108.       top = 12.5;
  109.       size = 2;
  110.       right = 70;
  111.    }
  112.  
  113.  
  114.    with (this.rule3 = new Rule(this)){
  115.       top = 20.5;
  116.       size = 2;
  117.       right = 70;
  118.       pageno = 0;
  119.    }
  120.  
  121.  
  122.    with (this.rule4 = new Rule(this)){
  123.       top = 25;
  124.       size = 2;
  125.       right = 70;
  126.       pageno = 0;
  127.    }
  128.  
  129.  
  130.    with (this.kbaseLogoImage = new Image(this)){
  131.       height = 3.4167;
  132.       width = 10.25;
  133.       dataSource = "filename KNOWBS31.GIF";
  134.       alignment = 4;
  135.       pageno = 0;
  136.    }
  137.  
  138.  
  139.    with (this.titleHTML = new HTML(this)){
  140.       height = 2;
  141.       left = 12;
  142.       width = 58;
  143.       color = "navy";
  144.       text = {||'<H1><FONT SIZE="+4"><FONT COLOR="maroon">U</FONT></FONT>pdate <FONT SIZE="+4"><FONT COLOR="maroon">L</FONT></FONT>ookup <FONT SIZE="+4"><FONT COLOR="maroon">T</FONT></FONT>ables</H1>'};
  145.       pageno = 0;
  146.    }
  147.  
  148.  
  149.    with (this.prodHTML = new HTML(this)){
  150.       height = 1;
  151.       left = 24;
  152.       top = 5;
  153.       width = 28;
  154.       color = "black";
  155.       fontBold = true;
  156.       text = "Current products";
  157.    }
  158.  
  159.  
  160.    with (this.prodSelect = new ListBox(this)){
  161.       height = 6;
  162.       left = 24;
  163.       top = 6;
  164.       width = 22;
  165.    }
  166.  
  167.  
  168.    with (this.prodAddButton = new Button(this)){
  169.       onServerClick = class::prodAddButton_onServerClick;
  170.       top = 7.5;
  171.       width = 20;
  172.       text = "Add Product";
  173.    }
  174.  
  175.  
  176.    with (this.prodText = new Text(this)){
  177.       top = 6;
  178.       width = 20;
  179.       value = "";
  180.    }
  181.  
  182.  
  183.    with (this.prodDeleteButton = new Button(this)){
  184.       onServerClick = class::prodDeleteButton_onServerClick;
  185.       top = 9;
  186.       width = 20;
  187.       text = "Delete Product";
  188.    }
  189.  
  190.  
  191.    with (this.catHTML = new HTML(this)){
  192.       height = 1;
  193.       left = 24;
  194.       top = 13;
  195.       width = 28;
  196.       color = "black";
  197.       fontBold = true;
  198.       text = "Current categories";
  199.    }
  200.  
  201.  
  202.    with (this.catSelect = new ListBox(this)){
  203.       height = 6;
  204.       left = 24;
  205.       top = 14;
  206.       width = 22;
  207.    }
  208.  
  209.  
  210.    with (this.catAddButton = new Button(this)){
  211.       onServerClick = class::catAddButton_onServerClick;
  212.       top = 15.5;
  213.       width = 20;
  214.       text = "Add Category";
  215.    }
  216.  
  217.  
  218.    with (this.catText = new Text(this)){
  219.       top = 14;
  220.       width = 20;
  221.       value = "";
  222.    }
  223.  
  224.  
  225.    with (this.catDeleteButton = new Button(this)){
  226.       onServerClick = class::catDeleteButton_onServerClick;
  227.       top = 17;
  228.       width = 20;
  229.       text = "Delete Category";
  230.    }
  231.  
  232.  
  233.    with (this.HomePageLinkImage = new Image(this)){
  234.       onImageClick = class::link_to_home_page;
  235.       height = 3.4167;
  236.       top = 21;
  237.       width = 10.25;
  238.       dataSource = "filename HOMEPG31.GIF";
  239.       alignment = 4;
  240.       pageno = 0;
  241.    }
  242.  
  243.  
  244.    with (this.HomePageLinkHTML = new HTML(this)){
  245.       height = 1;
  246.       left = 12;
  247.       top = 21;
  248.       width = 58;
  249.       color = "black";
  250.       text = "<A HREF='/ibapps/index.htm'>Return to Home Page</A>";
  251.       pageno = 0;
  252.    }
  253.  
  254.  
  255.    with (this.GeneratedHTML1 = new GeneratedHTML(this)){
  256.       height = 1;
  257.       top = 25.5;
  258.       width = 70;
  259.       pageno = 0;
  260.    }
  261.  
  262.  
  263.    with (this.errorHTML = new HTML(this)){
  264.       height = 4;
  265.       top = 5;
  266.       width = 70;
  267.       color = "black";
  268.       text = "HTML1";
  269.       pageno = 2;
  270.    }
  271.  
  272.  
  273.    with (this.html1 = new HTML(this)){
  274.       height = 1;
  275.       top = 5;
  276.       width = 20;
  277.       color = "black";
  278.       fontBold = true;
  279.       text = "New product";
  280.    }
  281.  
  282.  
  283.    with (this.html2 = new HTML(this)){
  284.       height = 1;
  285.       top = 13;
  286.       width = 20;
  287.       color = "black";
  288.       fontBold = true;
  289.       text = "New category";
  290.    }
  291.  
  292.    function Form_onServerLoad()
  293.    {
  294.       try{
  295.          if (!this.security.hasAccessTo("kbupdate")) {
  296.             this.errorHTML.text = "Insufficient rights to update lookup tables";
  297.             this.backButton.visible = false;
  298.             this.pageno = 2;
  299.          }
  300.       }
  301.       catch (Exception e) {
  302.          this.errorHTML.text = "Error opening lookup form. " + 
  303.                        e.message + " (" + e.code + ")";
  304.          this.backButton.visible = false;
  305.          this.pageno = 2;
  306.       }
  307.       class::Form_preRender();
  308.    }
  309.  
  310.    function Form_preRender(notForm, formRef)
  311.    {
  312.       // 
  313.       // generate array from KbProd for the listbox
  314.       //
  315.       form = notForm ? formRef : this;
  316.       form.prodArray = new Array();
  317.       form.product1.rowset.first();
  318.       while(!form.product1.rowset.endOfSet) {
  319.          form.prodArray.add(form.product1.rowset.fields["ProdDescript"].value);
  320.          form.product1.rowset.next();
  321.       }
  322.       form.prodArray.sort();
  323.       form.prodSelect.options = 'array form.prodArray';
  324.       // 
  325.       // generate array from KbCat for the listbox
  326.       //
  327.       form = notForm ? formRef : this;
  328.       form.catArray = new Array();
  329.       form.category1.rowset.first();
  330.       while(!form.category1.rowset.endOfSet) {
  331.          form.catArray.add(form.category1.rowset.fields["CatDescript"].value);
  332.          form.category1.rowset.next();
  333.       }
  334.       form.catArray.sort();
  335.       form.catSelect.options = 'array form.catArray';
  336.    }
  337.  
  338.    function prodAddButton_onServerClick()
  339.    {
  340.       var prod = new StringEx(this.form.prodText.value);
  341.       prod = new StringEx(prod.rightTrim());
  342.       prod = prod.leftTrim();
  343.       if (prod.length > 0) {
  344.          var s = new StoredProc();
  345.          s.database = this.form.product1.database;
  346.          s.procedureName = "GET_PRODUCT";
  347.          s.active=true;
  348.          this.form.product1.rowset.beginAppend();
  349.          this.form.product1.rowset.fields["Product"].value = s.params["NEW_ID"].value;
  350.          this.form.product1.rowset.fields["ProdDescript"].value = prod;
  351.          this.form.product1.rowset.save();
  352.          // blank out the text
  353.          this.form.prodText.value = "";
  354.          // re-render the form
  355.          this.form.Form_preRender(true, this.form);
  356.       }
  357.    }
  358.  
  359.    function prodDeleteButton_onServerClick()
  360.    {
  361.       var prod = new StringEx(this.form.prodSelect.value);
  362.       prod = new StringEx(prod.rightTrim());
  363.       prod = prod.leftTrim();
  364.       if (prod.length > 0) {
  365.          this.form.product1.active = false;
  366.          this.form.product1.sql = "SELECT * FROM kbprod WHERE ProdDescript = :PROD";
  367.          this form.product1.params["PROD"] = prod;
  368.          this.form.product1.active = true;
  369.          try {
  370.             if (!this.form.product1.rowset.endOfSet)
  371.                this.form.product1.rowset.delete();
  372.          }
  373.          catch (DbException e) {
  374.             if (e.message.indexOf("FOREIGN KEY") > 0)
  375.                this.form.errorHTML.text = "You can not delete a product if there are " + 
  376.                     "any documents in the Knowledge Base for this product.<p>" +
  377.                     e.message + " (" + e.code + ")<p>";
  378.             else
  379.                this.form.errorHTML.text = e.message + " (" + e.code + ")<p>";
  380.             this.form.errorHTML.text += "<u>Server Errors:</u><p>";
  381.             for (var i = 0; i<e.errors.length; i++)
  382.                this.form.errorHTML.text += e.errors[i].message + " (" + e.errors[i].context + ")<br>";
  383.             this.form.pageno = 2;
  384.          }
  385.          catch (Exception e) {
  386.             this.form.errorHTML.text = e.message + " (" + e.code + ")";
  387.             this.form.pageno = 2;
  388.          }
  389.          finally {
  390.             this.form.product1.sql = "SELECT * FROM kbprod";
  391.             this.form.Form_preRender(true, this.form);
  392.          }
  393.       }
  394.    }
  395.  
  396.    function catAddButton_onServerClick()
  397.    {
  398.       var cat = new StringEx(this.form.catText.value);
  399.       cat = new StringEx(cat.rightTrim());
  400.       cat = cat.leftTrim();
  401.       if (cat.length > 0) {
  402.          var s = new StoredProc();
  403.          s.database = this.form.category1.database;
  404.          s.procedureName = "GET_CATEGORY";
  405.          s.active=true;
  406.          this.form.category1.rowset.beginAppend();
  407.          this.form.category1.rowset.fields["Category"].value = s.params["NEW_ID"].value;
  408.          this.form.category1.rowset.fields["CatDescript"].value = cat;
  409.          this.form.category1.rowset.save();
  410.          // blank out the text
  411.          this.form.catText.value = "";
  412.          // re-render the form
  413.          this.form.Form_preRender(true, this.form);
  414.       }
  415.    }
  416.  
  417.    function catDeleteButton_onServerClick()
  418.    {
  419.       var cat = new StringEx(this.form.catSelect.value);
  420.       cat = new StringEx(cat.rightTrim());
  421.       cat = cat.leftTrim();
  422.       if (cat.length > 0) {
  423.          this.form.category1.active = false;
  424.          this.form.category1.sql = "SELECT * FROM kbcat WHERE CatDescript = :CAT";
  425.          this form.category1.params["CAT"] = cat;
  426.          this.form.category1.active = true;
  427.          try {
  428.             if (!this.form.category1.rowset.endOfSet)
  429.                this.form.category1.rowset.delete();
  430.          }
  431.          catch (DbException e) {
  432.             if (e.message.indexOf("FOREIGN KEY") > 0)
  433.                this.form.errorHTML.text = "You can not delete a category if there are " + 
  434.                     "any documents in the Knowledge Base for this category.<p>" +
  435.                     e.message + " (" + e.code + ")<p>";
  436.             else
  437.                this.form.errorHTML.text = e.message + " (" + e.code + ")<p>";
  438.             this.form.errorHTML.text += "<u>Server Errors:</u><p>";
  439.             for (var i = 0; i<e.errors.length; i++)
  440.                this.form.errorHTML.text += i + ") " + e.errors[i].message + " (" + e.errors[i].context + ")<br>";
  441.             this.form.pageno = 2;
  442.          }
  443.          catch (Exception e) {
  444.             this.form.errorHTML.text = e.message + " (" + e.code + ")";
  445.             this.form.pageno = 2;
  446.          }
  447.          finally {
  448.             this.form.category1.sql = "SELECT * FROM kbcat";
  449.             this.form.Form_preRender(true, this.form);
  450.          }
  451.       }
  452.    }
  453.  
  454.    function link_to_home_page()
  455.    {
  456.       location.href="/ibapps/index.htm";
  457.    }
  458.  
  459. }
  460.