home *** CD-ROM | disk | FTP | other *** search
/ Practical Internet Web Designer 86 / PIWD86.iso / pc / contents / dreamweaver / software / dwmx2004.exe / Disk1 / data1.cab / Configuration_En / Commands / ServerObject-InsRecASPNet.js < prev    next >
Encoding:
JavaScript  |  2003-09-05  |  12.2 KB  |  466 lines

  1. // Copyright 2002, 2003 Macromedia, Inc. All rights reserved.
  2.  
  3.     
  4. //**********************GLOBAL VARS********************
  5.  
  6. var helpDoc = MM.HELP_soASPNetInsertForm;
  7. var SB_FILENAME = "ServerObject-InsRecASPNet.htm";
  8.  
  9. // stores separate file dom needed for dynamic UI
  10. var domUIPieces = dw.getDocumentDOM("ServerObject-FormEditHTML.htm"); 
  11.  
  12. var _ConnectionName = new ConnectionMenu(SB_FILENAME, "ConnectionName");
  13. var _TableName = new ConnectionTableMenu(SB_FILENAME, "TableName");
  14. var _ColumnNames;
  15. var _ElemUp;
  16. var _ElemDown;
  17. var _ElemAdd;
  18. var _ElemDel;
  19. var _ElementLabel;
  20. var _DisplayAs;
  21. var _UseWebFormCtrl = new CheckBox(SB_FILENAME, "UseWebFormControl");
  22. var _SubmitAs;
  23. var _SuccessURL = new TextField(SB_FILENAME, "SuccessURL");
  24. var _FailureURL = new TextField(SB_FILENAME, "FailureURL");
  25. var _DebugInfo = new CheckBox(SB_FILENAME, "Debug");
  26.  
  27. var ColumnsToAdd = new Array();
  28. var ColumnTypes = new Array();
  29.  
  30. //********************API FUNCTIONS******************************
  31.  
  32. //--------------------------------------------------------------------
  33. // FUNCTION:
  34. //   commandButtons
  35. //
  36. // DESCRIPTION:
  37. //   Returns the list of buttons which should appear on the right hand
  38. //   side of the dialog
  39. //
  40. // ARGUMENTS:
  41. //   none
  42. //
  43. // RETURNS:
  44. //   Array - pairs of button name and function call
  45. //--------------------------------------------------------------------
  46.  
  47. function commandButtons()
  48. {
  49.   return new Array(MM.BTN_OK,     "clickedOK()", 
  50.                    MM.BTN_Cancel, "clickedCancel()", 
  51.                    MM.BTN_Help,   "displayHelp()"); 
  52. }
  53.  
  54. //--------------------------------------------------------------------
  55. // FUNCTION:
  56. //   canInsertObject
  57. //
  58. // DESCRIPTION:
  59. //   This function is called to determine if this object can be inserted
  60. //   into the current document.  It displays the relevant error messages,
  61. //   and then returns a boolean to indicate if insertion is possible.
  62. //
  63. //   NOTE: this function is called before initializeUI, so it should
  64. //         not rely on internal state.
  65. //
  66. // ARGUMENTS:
  67. //   none
  68. //
  69. // RETURNS:
  70. //   boolean
  71. //--------------------------------------------------------------------
  72.  
  73. function canInsertObject()
  74. {
  75.   return true;
  76. }
  77.  
  78. //********************LOCAL FUNCTIONS****************************** 
  79.  
  80. //--------------------------------------------------------------------
  81. // FUNCTION:
  82. //   clickedOK
  83. //
  84. // DESCRIPTION:
  85. //   This function is called when the user clicks OK
  86. //
  87. // ARGUMENTS:
  88. //   none
  89. //
  90. // RETURNS:
  91. //   nothing
  92. //--------------------------------------------------------------------
  93.  
  94. function clickedOK()
  95. {
  96.   var conn = _ConnectionName.getValue();
  97.   var databaseType = MMDB.getDatabaseType(conn);
  98.   var table = _TableName.getValue();
  99.   var successURL = (_SuccessURL.getValue()) ? _SuccessURL.getValue() : "";
  100.   var failureURL = (_FailureURL.getValue()) ? _FailureURL.getValue() : "";
  101.   var debug = _DebugInfo.getCheckedState();
  102.   
  103.   var i;
  104.   var currRowInfoObj;
  105.   var fieldInfoObj;
  106.   var sqlObj = new SQLStatement("");
  107.   var columnInfoList = new Array();
  108.   var ElementStrArr = new Array();
  109.   var hiddenFieldNamesArr = new Array();
  110.   var hiddenFieldValuesArr = new Array();
  111.   var rowInfoArr = _ColumnNames.valueList;
  112.   var nRows = rowInfoArr.length;
  113.  
  114.   // check for error conditions
  115.  
  116.   var errMsgStr = "";
  117.  
  118.   if (!conn)
  119.   {
  120.     errMsgStr = MM.MSG_NoDataSource;
  121.   }
  122.   else if (!table)
  123.   {
  124.     errMsgStr = MM.MSG_NoTablesInDS;
  125.   }
  126.   else if (!nRows)
  127.   {
  128.     errMsgStr = MM.Msg_NoColumnsInTable;
  129.   }   
  130.  
  131.   // if error condition, alert it and return
  132.  
  133.   if (errMsgStr)
  134.   {
  135.     alert (errMsgStr);
  136.     return;
  137.   }
  138.     
  139.   // if no error conditions, build the edits to apply to the document
  140.  
  141.   MM.setBusyCursor();
  142.  
  143.   // create parameter object used to provide variables for this edit op
  144.   // server behavior
  145.  
  146.   var paramObj = new Object(); 
  147.  
  148.   paramObj.TableAlign   = "center";
  149.  
  150.   // Get a unique form name...
  151.  
  152.   var formName = dwscripts.getUniqueNameForTag("FORM", "form");
  153.  
  154.   paramObj.FormName = formName;
  155.   paramObj.Language = dw.getDocumentDOM().serverModel.getServerLanguage();
  156.     
  157.   for (i = 0; i < nRows; i++)
  158.   {
  159.     currRowInfoObj = rowInfoArr[i];
  160.     fieldInfoObj = currRowInfoObj.displayAs; 
  161.  
  162.     var columnName = currRowInfoObj.column;
  163.  
  164.     fieldInfoObj.fieldName = currRowInfoObj.fieldName;
  165.  
  166.     if (currRowInfoObj.submitAs && columnName)
  167.     {
  168.       var columnInfoNode = dwscripts.getColumnValueNode();
  169.             
  170.       columnInfoNode.setColumnName(columnName);
  171.       columnInfoNode.setColumnType(fieldInfoObj.type);
  172.       columnInfoNode.setVariableName(fieldInfoObj.fieldName);
  173.       columnInfoNode.setSubmitAs(currRowInfoObj.submitAs);
  174.       columnInfoNode.setRuntimeValue((databaseType.toLowerCase() == "oledb") ? "?" : ("@" + columnName));
  175.  
  176.       columnInfoList.push(columnInfoNode);
  177.     }
  178.         
  179.     // handle the hidden fields
  180.  
  181.     if (fieldInfoObj.type == "hiddenField")
  182.     {
  183.       hiddenFieldNamesArr.push(fieldInfoObj.fieldName);
  184.       hiddenFieldValuesArr.push(fieldInfoObj.value);
  185.     }  
  186.   }
  187.   
  188.   // Also push the Insert hidden field into the array...
  189.   
  190.   hiddenFieldNamesArr.push("MM_insert");
  191.   hiddenFieldValuesArr.push(formName);
  192.   
  193.   paramObj.HiddenFieldName = hiddenFieldNamesArr;
  194.   paramObj.HiddenFieldValue = hiddenFieldValuesArr;
  195.   
  196.   // this will go through all the form elements and returns a string array...
  197.   
  198.   ElementStrArr = createFormElementStrings(rowInfoArr);
  199.   
  200.   paramObj.ElementString = ElementStrArr;
  201.   paramObj.ButtonText = MM.BTN_InsertRecord;
  202.   paramObj.ConnectionPath = dwscripts.getConnectionURL(conn);
  203.  
  204.   sqlObj.createInsertStatement(table, columnInfoList);    
  205.   
  206.   paramObj.FormName = formName;
  207.   paramObj.CommandText = dwscripts.escSQLQuotes(sqlObj.getStatement(true));
  208.   paramObj.ConnectionName = conn;  
  209.   paramObj.SuccessURL = SBDatabaseCallASPNET.transformURL(successURL, true);
  210.   paramObj.FailureURL = SBDatabaseCallASPNET.transformURL(failureURL, true);
  211.   paramObj.Debug = debug;
  212.    
  213.   // Parmeters
  214.   
  215.   var paramNames = new Array();
  216.   var paramRuntimes = new Array(); 
  217.   var paramTypes = new Array(); 
  218.  
  219.   for (var z = 0; z < columnInfoList.length; ++z)
  220.   {
  221.     if (columnInfoList[z].getVariableName())
  222.     {
  223.       var columnName = columnInfoList[z].getColumnName();
  224.       var paramName = ("@" + columnName);
  225.       var defaultValue = (columnInfoList[z].getDefaultValue() != "") ? 
  226.                           columnInfoList[z].getDefaultValue() : "\"\"";
  227.         var submitAs = columnInfoList[z].getSubmitAs();
  228.       var runtime = dwscripts.getParameterCodeFromType(MM.LABEL_ASPNET_Param_Types[1],
  229.                                                        columnInfoList[z].getVariableName(),
  230.                                                          defaultValue,
  231.                                                        submitAs);
  232.  
  233.  
  234.       paramNames.push(paramName);
  235.       paramRuntimes.push(runtime);     
  236.       paramTypes.push(submitAs);
  237.     }
  238.   }
  239.   
  240.   paramObj.SqlVarName = paramNames;
  241.   paramObj.SqlVarRuntime = paramRuntimes;
  242.   paramObj.SqlVarType = paramTypes;
  243.   
  244.   // correct the selection
  245.   checkThatCursorIsNotInsideOfAForm();
  246.   dwscripts.setCursorOutsideParagraph();
  247.   dwscripts.fixUpSelection(dw.getDocumentDOM(), false, true);
  248.   
  249.   dwscripts.applyGroup("RecordInsertForm", paramObj);
  250.  
  251.   MM.clearBusyCursor();
  252.   window.close();
  253. }
  254.  
  255. //--------------------------------------------------------------------
  256. // FUNCTION:
  257. //   clickedCancel
  258. //
  259. // DESCRIPTION:
  260. //   This function is called when CANCEL is clicked
  261. //
  262. // ARGUMENTS:
  263. //   none
  264. //
  265. // RETURNS:
  266. //   nothing
  267. //--------------------------------------------------------------------
  268.  
  269. function clickedCancel()
  270. {
  271.   MM.commandReturnValue = "";
  272.   window.close();
  273. }
  274.  
  275. //--------------------------------------------------------------------
  276. // FUNCTION:
  277. //   displayHelp
  278. //
  279. // DESCRIPTION:
  280. //   Displays the built-in Dreamweaver help.
  281. //
  282. // ARGUMENTS:
  283. //   none
  284. //
  285. // RETURNS:
  286. //   nothing
  287. //--------------------------------------------------------------------
  288.  
  289. function displayHelp()
  290. {
  291.   dwscripts.displayDWHelp(helpDoc);
  292. }
  293.  
  294. //--------------------------------------------------------------------
  295. // FUNCTION:
  296. //   initializeUI
  297. //
  298. // DESCRIPTION:
  299. //   This function is called in the onLoad event.  It is responsible
  300. //   for initializing the UI.
  301. //
  302. // ARGUMENTS:
  303. //   none
  304. //
  305. // RETURNS:
  306. //   nothing
  307. //--------------------------------------------------------------------
  308.  
  309. function initializeUI()
  310.   // define global form elements
  311.  
  312.   _DisplayAs = new ListControl("DisplayAs");
  313.   _SubmitAs = new ListControl("SubmitAs");
  314.   _ElementLabel = dwscripts.findDOMObject("ElementLabel");
  315.   _ColumnNames = new TreeControlWithNavControls("ColumnNames");
  316.   _ElemUp = dwscripts.findDOMObject("elemUp");
  317.   _ElemDown = dwscripts.findDOMObject("elemDown");
  318.   _ElemAdd = dwscripts.findDOMObject("elemAdd");
  319.   _ElemDel = dwscripts.findDOMObject("elemDel");
  320.   _SuccessURL.initializeUI();
  321.   _FailureURL.initializeUI();
  322.   _DebugInfo.initializeUI();  
  323.   _DebugInfo.setCheckedState(true);
  324.   _UseWebFormCtrl.initializeUI();
  325.  
  326.   // initialize the form elements
  327.  
  328.   var setConnectionSuccess = _ConnectionName.initializeUI();
  329.   
  330.   if (!setConnectionSuccess)
  331.   {
  332.     clickedCancel(); 
  333.   }   
  334.  
  335.   _TableName.initializeUI();
  336.   _ColumnNames.setColumnNames(MM.LABEL_ColGrid);
  337.   
  338.   var displayAsArr = new Array(TEXTFIELD,
  339.                                TEXTAREA,
  340.                                MENU,
  341.                                HIDDENFIELD,
  342.                                CHECKBOX,
  343.                                RADIOGROUP,
  344.                                PASSWORDFIELD,
  345.                                STATICTEXT);
  346.   
  347.   _DisplayAs.setAll(displayAsArr, displayAsArr);
  348.  
  349.   updateUI("Debug");
  350.  
  351.   elts = document.forms[0].elements;
  352.   if (elts && elts.length)
  353.   {
  354.     elts[0].focus();
  355.   }
  356. }
  357.  
  358. //--------------------------------------------------------------------
  359. // FUNCTION:
  360. //   updateUI
  361. //
  362. // DESCRIPTION:
  363. //   This function is called by the UI controls to handle UI updates
  364. //
  365. // ARGUMENTS:
  366. //   control - string - the name of the control sending the event
  367. //   event - string - the event which is being sent
  368. //
  369. // RETURNS:
  370. //   nothing
  371. //--------------------------------------------------------------------
  372.  
  373. function updateUI(control, event)
  374. {
  375.   if (control == "ConnectionName")
  376.   {
  377.     var databaseType = MMDB.getDatabaseType(_ConnectionName.getValue());
  378.     var theTypes = SBDatabaseCallASPNET.getParamTypeList(databaseType);
  379.  
  380.     _SubmitAs.setAll(theTypes, theTypes);
  381.     _TableName.updateUI(_ConnectionName, event); // this will trigger a recursive call to this function
  382.   }
  383.   else if (control == "Define")
  384.   {
  385.     _ConnectionName.launchConnectionDialog();
  386.   }  
  387.   else if (control == "TableName")
  388.   {
  389.     // clear additional column list
  390.     // it lists columns that don't get populated in the grid, and needs to be cleared
  391.     
  392.     updateAdditionalColumnList('clear'); 
  393.  
  394.     // populate grid
  395.     
  396.     populateColumnGrid();
  397.     
  398.     // clear global field names array (used to check for dupe field names)
  399.     
  400.     STR_ELEMENT_NAMES = STR_DIVIDER;
  401.     
  402.     // populate UI according to first grid item
  403.     
  404.     displayGridFieldValues();
  405.   }
  406.   else if (control == "AddRow")
  407.   {
  408.     addGridRow();
  409.   }
  410.   else if (control == "DeleteRow")
  411.   {
  412.     deleteGridRow();
  413.   }
  414.   else if (control == "MoveRowUp")
  415.   {
  416.     _ColumnNames.moveRowUp();
  417.   }
  418.   else if (control == "MoveRowDown")
  419.   {
  420.     _ColumnNames.moveRowDown();
  421.   }
  422.   else if (control == "ColumnNames")
  423.   {
  424.     displayGridFieldValues();
  425.   }
  426.   else if (control == "ElementLabel")
  427.   {
  428.     updateGridRow('label');
  429.   }
  430.   else if (control == "SubmitAs")
  431.   {
  432.     updateGridRow('submitAs');
  433.   }
  434.   else if (control == "DisplayAs")
  435.   {
  436.     showDifferentParams(true);
  437.     updateGridRow('displayAs')
  438.   }
  439.   else if (control == "UseWebFormControl")
  440.   {
  441.     updateGridRow('useWebFormControl');
  442.   }
  443.   else if (control == "SuccessURL")
  444.   {
  445.     var theSuccessURL = dw.browseForFileURL("select", MM.LABEL_FileRedirect,0,0); 
  446.     
  447.     if (theSuccessURL.length > 0)
  448.     {
  449.       _SuccessURL.setValue(theSuccessURL); 
  450.     }    
  451.   }
  452.   else if (control == "FailureURL")
  453.   {
  454.     var theFailureURL = dw.browseForFileURL("select", MM.LABEL_FileRedirect,0,0); 
  455.     
  456.     if (theFailureURL.length > 0)
  457.     {
  458.       _FailureURL.setValue(theFailureURL); 
  459.     }    
  460.   }  
  461.   else if (control == "Debug")
  462.   {
  463.     _FailureURL.setDisabled(_DebugInfo.getCheckedState());
  464.   }
  465. }