Changeset 254 for trunk/plugins/Forms


Ignore:
Timestamp:
07/05/05 15:59:21 (14 years ago)
Author:
gocher
Message:

Workaround for removeAttribute() and setAttribute()
problems with IE

for Example
object.setAttribute("readOnly",true) in IE
object.setAttribute("readOnly","readOnly") in Mozilla

Location:
trunk/plugins/Forms
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/plugins/Forms/forms.js

    r236 r254  
    8585                this.value = value; 
    8686        } 
    87   function setAttr(el, attr, value) { 
    88     if (value != "") 
    89       el.setAttribute(attr, value); 
    90     else 
    91       el.removeAttribute(attr); 
    92   } 
    9387  var outparam = new Object(); 
    9488  var type = button_id; 
     
    145139                  node = editor.getParentElement(); 
    146140                  var tag = node.tagName.toLowerCase() 
     141      if (node && (tag == "legend")) { 
     142        node = node.parentElement; 
     143        tag = node.tagName.toLowerCase(); 
     144      } 
    147145                  if (node && !(tag == "textarea" || tag == "select" || tag == "input" || tag == "label" || tag == "fieldset")) 
    148146                          node = null; 
     
    161159                  outparam.f_cols = node.cols; 
    162160                                  outparam.f_rows = node.rows; 
    163                                   outparam.f_value = node.innerHTML; 
     161                                  outparam.f_text = node.innerHTML; 
    164162          outparam.f_wrap = node.getAttribute("wrap"); 
    165           outparam.f_readonly = node.getAttribute("readonly"); 
     163          outparam.f_readOnly = node.getAttribute("readOnly"); 
    166164          outparam.f_disabled = node.getAttribute("disabled"); 
    167165          outparam.f_tabindex = node.getAttribute("tabindex"); 
     
    183181                                  outparam.f_value = node.value; 
    184182                                        outparam.f_size = node.size; 
    185                                         outparam.f_maxlength = node.maxLength; 
    186           outparam.f_readonly = node.getAttribute("readonly"); 
     183                                        outparam.f_maxLength = node.maxLength; 
     184          outparam.f_readOnly = node.getAttribute("readOnly"); 
    187185          outparam.f_disabled = node.getAttribute("disabled"); 
    188186          outparam.f_tabindex = node.getAttribute("tabindex"); 
     
    233231        case "fieldset": 
    234232          if(node.firstChild.tagName.toLowerCase()=="legend") 
    235             outparam.f_legend = node.firstChild.innerHTML; 
     233            outparam.f_text = node.firstChild.innerHTML; 
    236234          else 
    237             outparam.f_legend = ""; 
     235            outparam.f_text = ""; 
    238236          break; 
    239237      }     
     
    258256        outparam.f_value = ""; 
    259257                  outparam.f_size = ""; 
    260                   outparam.f_maxlength = ""; 
     258                  outparam.f_maxLength = ""; 
    261259                  outparam.f_checked = ""; 
    262260                  outparam.f_src = ""; 
    263261                  outparam.f_onclick = ""; 
    264262      outparam.f_wrap = ""; 
    265       outparam.f_readonly = "false"; 
     263      outparam.f_readOnly = "false"; 
    266264      outparam.f_disabled = "false"; 
    267265      outparam.f_tabindex = ""; 
     
    273271        editor._popupDialog("plugin://Forms/" + tagName + ".html", function(param) { 
    274272                if (param) { 
     273        if(param["f_cols"]) 
     274          if (isNaN(parseInt(param["f_cols"],10)) || parseInt(param["f_cols"],10) <= 0) 
     275            param["f_cols"] = ""; 
     276        if(param["f_rows"]) 
     277          if(isNaN(parseInt(param["f_rows"],10)) || parseInt(param["f_rows"],10) <= 0) 
     278            param["f_rows"] = ""; 
     279        if(param["f_size"]) 
     280          if(isNaN(parseInt(param["f_size"],10)) || parseInt(param["f_size"],10) <= 0) 
     281            param["f_size"] = ""; 
     282        if(param["f_maxlength"]) 
     283          if(isNaN(parseInt(param["f_maxLength"],10)) || parseInt(param["f_maxLength"],10) <= 0) 
     284            param["f_maxLength"] = ""; 
    275285                        if(node) { 
    276                             //node.name = param["f_name"]; 
    277           setAttr(node, "name", param["f_name"]); 
     286          //prepare existing Element 
     287          for (field in param) { 
     288            alert(field.substring(2,20) + '=' + param[field]); 
     289                                          if ((field=="f_text") || (field=="f_options") || (field=="f_onclick") || (field=="f_checked"))continue; 
     290            if (param[field] != "") 
     291              node.setAttribute(field.substring(2,20), param[field]); 
     292            else 
     293              node.removeAttribute(field.substring(2,20)); 
     294                                  } 
    278295                            if (type == "textarea") { 
    279             if (isNaN(parseInt(param["f_cols"],10)) || parseInt(param["f_cols"],10) <= 0) 
    280               param["f_cols"] = ""; 
    281             setAttr(node, "cols", param["f_cols"]); 
    282             if(isNaN(parseInt(param["f_rows"],10)) || parseInt(param["f_rows"],10) <= 0) 
    283               param["f_rows"] = ""; 
    284                                           setAttr(node, "rows", param["f_rows"]); 
    285                                     setAttr(node, "value", param["f_value"]); //for ta in editor 
    286             setAttr(node, "wrap", param["f_wrap"]); 
    287             setAttr(node, "tabindex", param["f_tabindex"]); 
    288             setAttr(node, "accesskey", param["f_accesskey"]); 
    289             setAttr(node, "readonly", param["f_readonly"]); 
    290             setAttr(node, "disabled", param["f_disabled"]); 
    291             node.innerHTML = param["f_value"]; //for ta on web page 
     296            node.innerHTML = param["f_text"]; 
    292297                            } else if(type == "select") { 
    293                                     if(isNaN(parseInt(param["f_size"],10)) || parseInt(param["f_size"],10) <= 0) 
    294               param["f_size"] = ""; 
    295             setAttr(node, "size", param["f_size"]); 
    296                                           setAttr(node, "multiple" ,param["f_multiple"]); 
    297             setAttr(node, "disabled", param["f_disabled"]); 
    298             setAttr(node, "tabindex", param["f_tabindex"]); 
    299             node.options.length = 0; 
     298                                    node.options.length = 0; 
    300299                                    var optionsList =  param["f_options"]; 
    301300                                    for (i=0; i<= optionsList.length-1; i++) { 
     
    303302                                    } 
    304303                            } else if(type == "label") { 
    305                                     setAttr(node, "for", param["f_for"]); 
    306                                           setAttr(node, "accesskey" ,param["f_accesskey"]); 
    307             node.innerHTML = param["f_text"]; 
     304                                    node.innerHTML = param["f_text"]; 
    308305          } else if(type == "fieldset") { 
    309             if(outparam.f_legend != "") 
     306            if(outparam.f_text != "") { 
    310307                                      if(node.firstChild.tagName.toLowerCase()=="legend") 
    311                 node.firstChild.innerHTML = param["f_legend"]; 
    312               else { 
    313                 // not implemented jet 
    314               } 
    315           } else {  //type == "input" 
    316                                     for (field in param) { 
    317                                             switch (field) { 
    318                 case "f_tabindex": setAttr(node, "tabindex", param["f_tabindex"]); break; 
    319                 case "f_accesskey": setAttr(node, "accesskey", param["f_accesskey"]); break; 
    320                 case "f_readonly": setAttr(node, "readonly", param["f_readonly"]); break; 
    321                 case "f_disabled": setAttr(node, "disabled", param["f_disabled"]); break; 
    322                                                     case "f_type": node.type = param["f_type"]; break; 
    323                                                     case "f_value": setAttr(node,"value", param["f_value"]); break; 
    324                                                     case "f_size":  
    325                                                             if(isNaN(parseInt(param["f_size"],10)) || parseInt(param["f_size"],10) <= 0) 
    326                     param["f_size"] = ""; 
    327                                                                   setAttr(node, "size", param["f_size"]); break; 
    328                                                     case "f_maxlength": 
    329                                                             if(isNaN(parseInt(param["f_maxlength"],10)) || parseInt(param["f_maxlength"],10) <= 0) 
    330                     param["f_maxlength"] = ""; 
    331                                                                   setAttr(node, "maxLength", param["f_maxlength"]); break; 
    332                                                     case "f_checked": setAttr(node, "checked", param["f_checked"]); break; 
    333                                                     case "f_src": setAttr(node, "src", param["f_src"]); break; 
    334                                                     case "f_onclick": setAttr(node, "onclick", param["f_onclick"]);  
    335                      node.onclick = ""; 
    336                                                                if(param["f_onclick"]!="") { 
    337                                                                        node.onclick = param["f_onclick"]; 
    338                                                                } break; 
    339                                             } 
    340                                     } 
     308                node.firstChild.innerHTML = param["f_text"]; 
     309            } else {}// not implemented jet 
     310          } else if((type == "checkbox") || (type == "radio")) { //input 
     311              if(param["f_checked"]!="") 
     312                                                    node.checked = true; 
     313              else 
     314                node.checked = false; 
     315          } else { 
     316            if(param["f_onclick"]){ 
     317                                      node.onclick = ""; 
     318                                            if(param["f_onclick"]!="")  
     319                                                    node.onclick = param["f_onclick"]; 
     320            } 
    341321                            } 
    342322        } else { 
     323          //create Element 
     324          var text = ""; 
     325          for (field in param) { 
     326                                          if (!param[field]) continue; 
     327            if ((param[field]=="") || (field=="f_text")|| (field=="f_options"))continue; 
     328            text += " " + field.substring(2,20) + '="' + param[field] + '"'; 
     329                                  } 
     330 
    343331                            if(type == "textarea") { 
    344                                     text = '<textarea name="' + param["f_name"] + '"' + 
    345                                                     ' cols="' + param["f_cols"] + '"' + 
    346                                                   ' rows="' + param["f_rows"] + '"'; 
    347             if (param["f_wrap"] != "") text += ' wrap="' + param["f_wrap"] + '"'; 
    348             if (param["f_tabindex"] != "") text += ' tabindex="' + param["f_tabindex"] + '"'; 
    349             if (param["f_accesskey"] != "") text += ' accesskey="' + param["f_accesskey"] + '"'; 
    350             if (param["f_readonly"] == "true") text += ' readonly="true"'; //don't know why ="true" 
    351             if (param["f_disabled"] == "true") text += ' disabled="true"'; //don't know why ="true" 
    352             text += '>' + param["f_value"] + '</textarea>'; 
     332                                    text = '<textarea' + text + '>' + param["f_text"] + '</textarea>'; 
    353333                            } else if(type == "select") { 
    354                                     text = '<select name="'+param["f_name"]+'"'; 
    355                                     if (param["f_size"]) text += ' size="'+parseInt(param["f_size"],10)+'"'; 
    356                                     if (param["f_tabindex"] != "") text += ' tabindex="' + param["f_tabindex"] + '"'; 
    357             if (param["f_multiple"] == "true") text += ' multiple="true"'; //don't know why ="true" 
    358             if (param["f_disabled"] == "true") text += ' disabled="true"'; //don't know why ="true" 
    359                                     text += '>'; 
     334                                    text = '<select' + text + '>'; 
    360335                                    var optionsList =  param["f_options"]; 
    361336                                    for (i=0; i<= optionsList.length-1; i++) { 
     
    364339                                    text += '</select>'; 
    365340          } else if(type == "label") { 
    366             text = '<label'; 
    367             if (param["f_for"] != "") text += ' for="'+param["f_for"]+'"'; 
    368             if (param["f_accesskey"] != "") text += ' accesskey="' + param["f_accesskey"] + '"';                                           
    369             text += '>' + param["f_text"] + '</label>'; 
     341            text = '<label' + text + '>' + param["f_text"] + '</label>'; 
    370342          } else if(type == "fieldset") { 
    371             text = '<fieldset>'; 
    372             if (param["f_legend"] != "") text += '<legend>' + param["f_legend"] + '</legend>'; 
     343            text = '<fieldset' + text + '>'; 
     344            if (param["f_legend"] != "") text += '<legend>' + param["f_text"] + '</legend>'; 
    373345                                    text += '</fieldset>'; 
    374346                            } else { 
    375                                     text = '<input type="'+type+'"' + 
    376                                            ' name="'+param["f_name"]+'"'; 
    377                                     for (field in param) { 
    378                                             var value = param[field]; 
    379                                             if (!value) continue; 
    380                                             switch (field) { 
    381                                                     case "f_value": if (param["f_value"] != "") text += ' value="'+param["f_value"]+'"'; break; 
    382                                                     case "f_size": if (param["f_size"] != "") text += ' size="'+parseInt(param["f_size"],10)+'"'; break; 
    383                                                     case "f_maxlength": if (param["f_maxlength"] != "") text += ' maxlength="'+parseInt(param["f_maxlength"],10)+'"'; break; 
    384                                                     case "f_checked": if (param["f_checked"] == "true") text += ' checked'; break; 
    385                                                     case "f_src": if (param["f_src"] != "") text += ' src="'+param["f_src"]+'"'; break; 
    386                                                     case "f_onclick": if (param["f_onclick"] != "") text += ' onClick="'+param["f_onclick"]+'"'; break; 
    387                 case "f_tabindex": if (param["f_tabindex"] != "") text += ' tabindex="'+param["f_tabindex"]+'"'; break; 
    388                 case "f_accesskey": if (param["f_accesskey"] != "") text += ' accesskey="'+param["f_accesskey"]+'"'; 
    389                 case "f_readonly": if (param["f_readonly"] == "true") text += ' readonly="true"'; //don't know why ="true" 
    390                 case "f_disabled": if (param["f_disabled"] == "true") text += ' disabled="true"'; break;//don't know why ="true" 
    391                                             } 
    392                                     } 
    393                                     text += '>'; 
     347                                    text = '<input type="'+type+'"' + text + '>'; 
    394348                            } 
    395349                editor.insertHTML(text); 
  • trunk/plugins/Forms/popups/fieldset.html

    r239 r254  
    1212        __dlg_init(); 
    1313        var param = window.dialogArguments; 
    14   document.getElementById("f_legend").value = param["f_legend"]; 
    15   document.getElementById("f_legend").focus(); 
     14  document.getElementById("f_text").value = param["f_text"]; 
     15  document.getElementById("f_text").focus(); 
    1616}; 
    1717 
     
    1919        // pass data back to the calling window 
    2020  var param = new Object(); 
    21   param["f_legend"] = document.getElementById("f_legend").value; 
     21  param["f_text"] = document.getElementById("f_text").value; 
    2222        __dlg_close(param); 
    2323  return false; 
     
    3636  <form action="" method="get"> 
    3737    <div class="fr">Legend:</div> 
    38     <input type="text" name="legend" id="f_legend" /> 
     38    <input type="text" name="text" id="f_text" /> 
    3939    <p /> 
    4040    <div id="buttons"> 
  • trunk/plugins/Forms/popups/input.html

    r239 r254  
    2222    case "text": 
    2323    case "password": 
    24       fields = ["f_name", "f_value", "f_readonly", "f_disabled", "f_tabindex", "f_accesskey", "f_size"]; 
     24      fields = ["f_name", "f_value", "f_readOnly", "f_disabled", "f_tabindex", "f_accesskey", "f_size", "f_maxLength"]; 
    2525      height = 350; 
    2626      document.getElementById("txt").style.display = "block"; 
     
    6363  for (var i in fields) { 
    6464    switch (fields[i]) {  
    65     case "f_readonly":  
     65    case "f_readOnly":  
    6666    case "f_disabled": 
    6767    case "f_checked": 
    68       document.getElementById(fields[i]).checked = param[fields[i]]=="true"; break; 
     68      document.getElementById(fields[i]).checked = (param[fields[i]]==fields[i].substring(2,20)) || (param[fields[i]] == true); break; 
    6969    default: 
    7070      document.getElementById(fields[i]).value = param[fields[i]]; break; 
     
    8484  // pass data back to the calling window 
    8585  var param = new Object(); 
    86   param["f_type"] = type; 
    8786  for (var i in fields) { 
    8887    switch (fields[i]) { 
    89     case "f_readonly": 
     88    case "f_readOnly": 
    9089    case "f_disabled": 
    9190    case "f_checked": 
    92       param[fields[i]] = (document.getElementById(fields[i]).checked)?"true":""; break; 
     91      if(HTMLArea.is_ie) 
     92        param[fields[i]] = (document.getElementById(fields[i]).checked)?true:""; 
     93      else 
     94        param[fields[i]] = (document.getElementById(fields[i]).checked)?fields[i].substring(2,20):""; 
     95      break; 
    9396    default: 
    9497      param[fields[i]] = document.getElementById(fields[i]).value; break; 
     
    149152  <div id="txt"> 
    150153    <div class="fr">Read Only</div> 
    151     <input type="checkbox" name="readonly" id="f_readonly" value="readonly" /> 
     154    <input type="checkbox" name="readOnly" id="f_readOnly" value="readOnly" /> 
    152155    <p /> 
    153156     
     
    159162      <div class="space"></div> 
    160163      <div class="fr">Max length:</div> 
    161       <input type="text" name="maxlength" id="f_maxlength" size="5"     title="Maximum number of characters accepted" /> 
     164      <input type="text" name="maxLength" id="f_maxLength" size="5"     title="Maximum number of characters accepted" /> 
    162165      <div class="space"></div> 
    163166          </fieldset> 
  • trunk/plugins/Forms/popups/select.html

    r239 r254  
    1818    case "f_multiple": 
    1919    case "f_disabled": 
    20       document.getElementById(fields[i]).checked = param[fields[i]] == "true"; break; 
     20      document.getElementById(fields[i]).checked = (param[fields[i]]==fields[i].substring(2,20)) || (param[fields[i]] == true); break; 
    2121    case "f_size": 
    2222      document.getElementById(fields[i]).value = (param[fields[i]]<=0)?"":param[fields[i]]; break; 
     
    4646        param["f_multiple"] = ""; 
    4747      else 
    48             param["f_multiple"] = (document.getElementById(fields[i]).checked)?"true":""; 
     48            param["f_multiple"] = (document.getElementById(fields[i]).checked)?"multiple":""; 
    4949            break; 
    5050    case "f_disabled": 
    51       param[fields[i]] = (document.getElementById(fields[i]).checked)?"true":""; break; 
     51      param[fields[i]] = (document.getElementById(fields[i]).checked)?"disabled":""; break; 
    5252    default: 
    5353      param[fields[i]] = document.getElementById(fields[i]).value; break; 
     
    163163    <p /> 
    164164    <div class="fr">Size:</div> 
    165     <input name="size" id="f_size" type="text" value="" size="15"> 
     165    <input name="size" id="f_size" type="text" value="" size="15" /> 
    166166    <p /> 
    167167                <div class="fr"><nobr>Multiple Select</nobr></div> 
    168     <input name="multiple" id="f_multiple" type="checkbox"> 
     168    <input name="multiple" id="f_multiple" type="checkbox" value="multiple" /> 
    169169    <p /> 
    170170    <div class="fr">Disabled</div> 
  • trunk/plugins/Forms/popups/textarea.html

    r239 r254  
    88<script type="text/javascript"> 
    99 
    10 var fields = ["f_name", "f_value", "f_cols", "f_rows", "f_wrap", "f_tabindex", "f_accesskey", "f_readonly", "f_disabled"]; 
     10var fields = ["f_name", "f_text", "f_cols", "f_rows", "f_wrap", "f_tabindex", "f_accesskey", "f_readOnly", "f_disabled"]; 
    1111 
    1212function Init() { 
    13   window.resizeTo(480,260); 
     13  window.resizeTo(280,260); 
    1414  __dlg_translate("Forms"); 
    1515        __dlg_init(); 
     
    1717  for (var i in fields) { 
    1818    switch (fields[i]) {  
    19     case "f_readonly":  
     19    case "f_readOnly": 
    2020    case "f_disabled": 
    21       document.getElementById(fields[i]).checked = param[fields[i]]=="true"; break; 
     21      document.getElementById(fields[i]).checked = (param[fields[i]]==fields[i].substring(2,20)) || (param[fields[i]] == true); break; 
    2222    default: 
    2323      document.getElementById(fields[i]).value = param[fields[i]]; break; 
     
    3838  for (var i in fields) { 
    3939    switch (fields[i]) {  
    40     case "f_readonly":  
     40    case "f_readOnly": 
    4141    case "f_disabled": 
    42       param[fields[i]] = (document.getElementById(fields[i]).checked)?"true":""; break; 
     42      if(HTMLArea.is_ie) 
     43        param[fields[i]] = (document.getElementById(fields[i]).checked)?true:""; 
     44      else 
     45        param[fields[i]] = (document.getElementById(fields[i]).checked)?fields[i].substring(2,20):""; 
     46      break; 
    4347    default: 
    4448      param[fields[i]] = document.getElementById(fields[i]).value; break; 
     
    8690  <p /> 
    8791  <div class="fr">Read Only</div> 
    88   <input type="checkbox" name="readonly" id="f_readonly" value="readonly" /> 
     92  <input type="checkbox" name="readOnly" id="f_readOnly" value="readOnly" /> 
    8993  <p /> 
    9094  <div class="fr">Disabled</div> 
     
    99103   
    100104  <div class="fr">Initial Text:</div> 
    101   <input type="text" name="value" id="f_value" title="Default text (optional)" /> 
     105  <input type="text" name="text" id="f_text" title="Default text (optional)" /> 
    102106  <div id="buttons"> 
    103107    <button type="button" name="ok" onclick="return onOK();">OK</button> 
Note: See TracChangeset for help on using the changeset viewer.