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 / EditOpsLayoutTable.js < prev    next >
Encoding:
JavaScript  |  2003-09-05  |  13.3 KB  |  380 lines

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