home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 July / 07_02.iso / software / mdmx / files / DreamweaverMXInstaller.exe / Disk1 / data1.cab / Configuration_En / Commands / EditOpsLayoutTable.js < prev    next >
Encoding:
JavaScript  |  2002-05-01  |  12.3 KB  |  344 lines

  1. // Copyright 2000,2001 Macromedia, Inc. All rights reserved
  2.  
  3.  
  4. function createFormContent(rowInfoArr,rs,col){
  5.   var nRows = rowInfoArr.length, i,currRowInfoObj, tableRowPart;
  6.   var displayInfo, type, leftColContents, rightColContents;
  7.   var tableStr = "", paramObj = new Object();
  8.   var hiddenFieldsHTML = "";
  9.   var hiddenFieldPart = new Participant( (EDIT_OP_TYPE == "Insert")?
  10.                                          "insertRecord_hiddenEdit":"updateRecord_hiddenEdit"); 
  11.   
  12.   for (i=0;i<nRows;i++){
  13.     currRowInfoObj = rowInfoArr[i];
  14.     fieldInfoObj = currRowInfoObj.displayAs; 
  15.     fieldInfoObj.fieldName = currRowInfoObj.fieldName;
  16.     fieldType = fieldInfoObj.type; 
  17.     
  18.     if (fieldType == "hiddenField") {
  19.       hiddenFieldsHTML += createFieldCellContents(fieldInfoObj);
  20.       
  21.     } else { 
  22.       // first, get the right row type for the form fields being displayed
  23.       if (fieldType == "radioGroup" || fieldType == "dynamicRadioGroup") {
  24.         tableRowPart = PART_TR_RG;
  25.       } else if ( fieldType == "textArea") {
  26.         tableRowPart = PART_TR_TA;
  27.       } else {
  28.         tableRowPart = PART_TR;
  29.       }
  30.         
  31.       // next, create the html for the form widget,as adefined in the XML files.
  32.       paramObj.leftCol = currRowInfoObj.label;
  33.       paramObj.rightCol = createFieldCellContents(fieldInfoObj);
  34.    
  35.       tableStr += tableRowPart.getInsertString(paramObj);
  36.     }  
  37.   } // end loop used to create table HTML
  38.   
  39.   // add last row to table that contains submit button
  40.   var submitButtonPart = new Participant("editOps_submitButton"); 
  41.   if (dreamweaver.appVersion && dreamweaver.appVersion.indexOf('ja') != -1) {  // Japanese version?
  42.     var charSet = dw.getDocumentDOM().getCharSet();
  43.     charSet = charSet.toLowerCase();
  44.     if (charSet == "shift_jis" || charSet == "x-sjis" || charSet == "euc-jp" || charSet == "iso-2022-jp" || charSet == "utf-8") 
  45.     {
  46.         paramObj.buttonText = (EDIT_OP_TYPE == "Insert")?MM.BTN_InsertRecord:MM.BTN_UpdateRecord;
  47.     } else {
  48.         paramObj.buttonText = (EDIT_OP_TYPE == "Insert")?MM.BTN_EngInsertRecord:MM.BTN_EngUpdateRecord;;
  49.     }
  50.   } else
  51.           paramObj.buttonText = (EDIT_OP_TYPE == "Insert")?entityNameEncode(MM.BTN_InsertRecord):entityNameEncode(MM.BTN_UpdateRecord);;
  52.  
  53.   var submitButtonHTML = submitButtonPart.getInsertString(paramObj);
  54.   paramObj.leftCol = " ";
  55.   paramObj.rightCol = submitButtonHTML;
  56.   tableStr += PART_TR.getInsertString(paramObj);
  57.   
  58.   // wrap table content in the actual table tags
  59.   paramObj.tableContent = tableStr;
  60.   paramObj.tableAlign   = "center";
  61.   var tableHTML = PART_TABLE.getInsertString(paramObj);
  62.   
  63.   // create html for hidden fields -- both the hidden fields that correspond
  64.   // to database fields, and the hidden fields needed for the edit op.
  65.   // The html for the hidden database fields is already stored in the
  66.   // hiddenFieldsHTML variable
  67.   
  68.   // add hidden field needed for this particular edit op
  69.   hiddenFieldsHTML += hiddenFieldPart.getInsertString();
  70.   
  71.   
  72.   // need another hidden field for update record
  73.   if ( EDIT_OP_TYPE == "Update" ){
  74.     var hiddenFieldRecordIDPart = new Participant("editOps_hiddenRecordId"); 
  75.     paramObj.rs = rs; 
  76.     paramObj.col = col;
  77.     hiddenFieldsHTML += hiddenFieldRecordIDPart.getInsertString(paramObj);
  78.   } 
  79.   
  80.  
  81.   return tableHTML + hiddenFieldsHTML;
  82. }
  83.  
  84.  
  85.  
  86.  
  87. function createFieldCellContents(fieldInfoObj){
  88.   var paramObj = new Object();
  89.   var retVal   = "";
  90.   var fieldType = fieldInfoObj.type;
  91.   paramObj.fieldName = fieldInfoObj.fieldName;
  92.  
  93.   switch (fieldType){
  94.    
  95.     case "textArea":
  96.       paramObj.fieldVal = fieldInfoObj.value;
  97.       retVal = PART_TA.getInsertString(paramObj)
  98.       break;
  99.       
  100.     case "textField":
  101.       paramObj.fieldVal = fieldInfoObj.value;
  102.       retVal = PART_TF.getInsertString(paramObj)
  103.       break;
  104.       
  105.     case "hiddenField":
  106.       paramObj.fieldVal = fieldInfoObj.value;
  107.       retVal = PART_HF.getInsertString(paramObj)
  108.       break;
  109.       
  110.     case "passwordField":
  111.       paramObj.fieldVal = fieldInfoObj.value;
  112.       retVal = PART_PF.getInsertString(paramObj)
  113.       break;
  114.       
  115.     case "fileField":
  116.       paramObj.fieldVal = fieldInfoObj.value;
  117.       retVal = PART_FF.getInsertString(paramObj)
  118.       break;
  119.     
  120.     case "text": 
  121.       retVal = fieldInfoObj.text;
  122.       break;
  123.     
  124.     case "menu":
  125.       var nOptions = fieldInfoObj.textArr.length, i;
  126.       var defaultSelected = fieldInfoObj.defaultSelected;
  127.       paramObj.selected = "";
  128.       
  129.       for (i=0;i<nOptions;i++){
  130.         paramObj.optionText = fieldInfoObj.textArr[i];
  131.         paramObj.optionVal  = fieldInfoObj.valArr[i]
  132.         if (defaultSelected && paramObj.optionVal){
  133.           paramObj.expression2 = formatDynamicExpression(paramObj.optionVal);
  134.           paramObj.expression1 = formatDynamicExpression(defaultSelected);
  135.           // Special case for ColdFusion - we must strip surrounding #'s
  136.           if (   paramObj.expression1.length > 1 && paramObj.expression1.charAt(0) == '#' 
  137.               && paramObj.expression1.charAt(paramObj.expression1.length - 1) == '#'
  138.              )
  139.           { 
  140.             paramObj.expression1 = paramObj.expression1.slice(1, paramObj.expression1.length - 1);
  141.           }
  142.  
  143.           paramObj.selected = PART_SELECTED_ATTR.getInsertString(paramObj);                   
  144.         }
  145.         retVal += PART_OPTION.getInsertString(paramObj);
  146.         retVal = killEndingWhiteSpace(retVal);
  147.       }
  148.       
  149.       // if no option is selected by default, then add "selected" to first option
  150.       // this allows the first option to show in the ultradev wysiwyg view
  151.       var regExp = /selected/i;
  152.       if (retVal.search(regExp) == -1){
  153.         regExp = /(<option[^>]*)(>)/i;
  154.         if ( regExp.exec(retVal) != null ){
  155.           retVal =  retVal.replace(RegExp.$2," selected>");
  156.         }
  157.       }
  158.         
  159.       paramObj.menuContent = retVal;
  160.       
  161.       retVal = PART_SELECT.getInsertString(paramObj);
  162.       break;
  163.     
  164.     case "dynamicMenu":
  165.       var defaultSelected = fieldInfoObj.defaultSelected;
  166.       var menuStr = "";
  167.       var optionPart = PART_DYN_OPTION;
  168.  
  169.       paramObj.labelColumn = fieldInfoObj.textCol;
  170.       paramObj.valueColumn = fieldInfoObj.valCol
  171.       paramObj.rsName = fieldInfoObj.recordset;
  172.       paramobj = getJSPParamObj(paramObj);
  173.    
  174.       if (defaultSelected)
  175.       {
  176.         paramObj.expression1 = formatDynamicExpression(defaultSelected); 
  177.         // Special case for ColdFusion - we must strip surrounding #'s
  178.         if (   paramObj.expression1.length > 1 && paramObj.expression1.charAt(0) == '#' 
  179.             && paramObj.expression1.charAt(paramObj.expression1.length - 1) == '#'
  180.            )
  181.         { 
  182.           paramObj.expression1 = paramObj.expression1.slice(1, paramObj.expression1.length - 1);
  183.         }
  184.  
  185.         optionPart = PART_DYN_OPTION;
  186.       } else {
  187.         paramObj.MM_subType = "noSelection";
  188.         optionPart = PART_DYN_OP_NOSEL;
  189.       
  190.       }
  191.  
  192.       menuStr += PART_BEGIN_LOOP.getInsertString(paramObj);
  193.       menuStr += optionPart.getInsertString(paramObj);
  194.       
  195.       // Note that we use the new version of getInsertString for PART_END_LOOP.
  196.       //   We added a conditional directive in the edml for JSP's PART_END_LOOP
  197.       //   to switch between the recordset/callable reset code (see getJSPParamObj
  198.       //   below for more details). The old getInsertString does not support
  199.       //   the conditional directive, so we have to use the new version in this
  200.       //   case. Ultimately, we should switch all of these calls to the new code, but
  201.       //   we are too late in the release at this point.
  202.       //menuStr += PART_END_LOOP.getInsertString(paramObj);
  203.       menuStr += extPart.getInsertString("", PART_END_LOOP.name, paramObj, "");
  204.       
  205.       paramObj.menuContent = menuStr;
  206.       retVal = PART_SELECT.getInsertString(paramObj);
  207.       
  208.       break;
  209.   
  210.     
  211.     case "checkBox":
  212.     case "dynamicCheckBox":
  213.       var checkIf = fieldInfoObj.checkIf;
  214.       var equalTo = fieldInfoObj.equalTo;
  215.  
  216.       if (checkIf && equalTo) { // dynamic checkbox
  217.         paramObj.expression1 = formatDynamicExpression(checkIf);
  218.         paramObj.expression2 = formatDynamicExpression(equalTo);
  219.         var checkedPart = new Participant("dynamicCheckbox_attrib");
  220.         paramObj.checked = checkedPart.getInsertString(paramObj);
  221.       } else { // static checkbox
  222.         if (fieldInfoObj.checked){
  223.           paramObj.checked = (fieldInfoObj.checked.toString() == "true")?"checked":"";
  224.         } else { // needed if user only filled out 1 field in dynamic check box
  225.           paramObj.checked = "";
  226.         }
  227.       }
  228.       retVal = PART_CB.getInsertString(paramObj);
  229.       break;
  230.       
  231.     
  232.     case "radioGroup": 
  233.        var tableContentStr = "";
  234.        var nButtons = fieldInfoObj.labelArr.length;
  235.        var defaultChecked = fieldInfoObj.defaultChecked;
  236.        
  237.        paramObj.checked = "";
  238.        if (!nButtons) {
  239.           var labelText = "[ " + MM.LABEL_Label + " ]";
  240.           fieldInfoObj.labelArr = new Array(labelText,labelText);
  241.           fieldInfoObj.valArr   = new Array("radiobutton1","radiobutton2");
  242.           nButtons = 2;
  243.        }
  244.      
  245.  
  246.        for (i=0;i<nButtons;i++){
  247.          paramObj.fieldLabel = fieldInfoObj.labelArr[i];
  248.          paramObj.fieldVal   = fieldInfoObj.valArr[i];
  249.          if (defaultChecked && paramObj.fieldVal){
  250.            paramObj.expression1 = formatDynamicExpression(paramObj.fieldVal);
  251.            paramObj.expression2 = formatDynamicExpression(defaultChecked);
  252.            paramObj.checked =  PART_CHECKED_ATTR.getInsertString(paramObj);
  253.          }
  254.          tableContentStr += PART_TR_RB.getInsertString(paramObj);
  255.       }  
  256.       
  257.       paramObj.tableAlign = "left";
  258.       paramObj.tableContent = tableContentStr;
  259.       retVal = PART_TABLE.getInsertString(paramObj);
  260.       
  261.       break;
  262.       
  263.     case "dynamicRadioGroup":
  264.       var recordset = fieldInfoObj.recordset;
  265.       var labelCol  = fieldInfoObj.labelCol;
  266.       var valCol    = fieldInfoObj.valCol;
  267.       var defaultChecked = fieldInfoObj.defaultChecked;
  268.       var tableRowStr = "";
  269.       
  270.       paramObj.fieldLabel = createDynamicData(recordset,labelCol);
  271.       paramObj.fieldVal   = createDynamicData(recordset,valCol);
  272.       paramObj.recordset  = recordset;
  273.       paramObj.checked    = "";
  274.       paramObj.rsName     = recordset;
  275.       setMoveToParamsForJsp(paramObj);
  276.       
  277.       if (defaultChecked && paramObj.fieldVal) {
  278.         paramObj.expression1 = formatDynamicExpression(paramObj.fieldVal);
  279.         paramObj.expression2 = formatDynamicExpression(defaultChecked);
  280.         paramObj.checked     = PART_CHECKED_ATTR.getInsertString(paramObj);
  281.       }
  282.       
  283.       tableRowStr += PART_BEGIN_LOOP.getInsertString(paramObj);
  284.       tableRowStr += PART_TR_RB.getInsertString(paramObj);
  285.       tableRowStr += PART_END_LOOP.getInsertString(paramObj);
  286.       
  287.       paramObj.tableAlign = "left";
  288.       paramObj.tableContent = tableRowStr;
  289.       retVal = PART_TABLE.getInsertString(paramObj);
  290.  
  291.       break;
  292.     
  293.     
  294.     default:
  295.       break;
  296.   }
  297.   
  298.   return retVal;
  299.     
  300. }
  301.  
  302.  
  303.  
  304. //--------------------------------------------------------------------
  305. // FUNCTION:
  306. //   getJSPParamObj
  307. //
  308. // DESCRIPTION:
  309. //   For JSP only, check if this is a recordset from a callable object. We
  310. //   switch between different recordset reset code for dynamic menus based  
  311. //   on whether the recordset is from a callable or not. Make sure the 
  312. //   callableName parameter is set to perform the switch.
  313. //
  314. // ARGUMENTS:
  315. //   paramObj - the parameter object for the SB
  316. //
  317. // RETURNS:
  318. //   object - the updated parameter object
  319. //--------------------------------------------------------------------
  320. function getJSPParamObj(paramObj)
  321. {
  322.   if (!paramObj.callableName && dw.getDocumentDOM().serverModel.getServerName() == "JSP") 
  323.   {
  324.     var recordsetName = paramObj.rsName;
  325.     
  326.     var callableName = ""; // empty string if not from a callable
  327.     var sbList = dw.serverBehaviorInspector.getServerBehaviors();
  328.     for (var i=0; i < sbList.length; i++) 
  329.     {
  330.       if (sbList[i].recordset == recordsetName && sbList[i].callableName) 
  331.       {
  332.         callableName = sbList[i].callableName;
  333.         break;
  334.       }
  335.     }
  336.     
  337.     paramObj.callableName = callableName;
  338.   }
  339.   
  340.   return paramObj;
  341. }
  342.  
  343.  
  344.