<!--********************************************************************************* ** The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("License"); You may not use this file except in compliance with the License * The Original Code is: vtiger CRM Open Source * The Initial Developer of the Original Code is vtiger. * Portions created by vtiger are Copyright (C) vtiger. * All Rights Reserved. * ********************************************************************************/ --> <!-- BEGIN: main --> <script language="JavaScript" type="text/javaScript" src="include/general.js"></script> <script language="JavaScript" type="text/javaScript"> function splitValues() { var picklistObj=getObj("fldPickList") var pickListContent=picklistObj.value var pickListAry=new Array() var i=0; //Splitting up of Values if (pickListContent.indexOf("\n")!=-1) { while(pickListContent.length>0) { if(pickListContent.indexOf("\n")!=-1) { if (pickListContent.replace(/^\s+/g, '').replace(/\s+$/g, '').length>0) { pickListAry[i]=pickListContent.substr(0,pickListContent.indexOf("\n")).replace(/^\s+/g, '').replace(/\s+$/g, '') pickListContent=pickListContent.substr(pickListContent.indexOf("\n")+1,pickListContent.length) i++ } else break; } else { pickListAry[i]=pickListContent.substr(0,pickListContent.length) break; } } /* while(pickListContent.indexOf("\n")!=-1) { if (pickListContent.replace(/^\s+/g, '').replace(/\s+$/g, '').length>0) { pickListAry[i]=pickListContent.substr(0,pickListContent.indexOf("\n")).replace(/^\s+/g, '').replace(/\s+$/g, '') pickListContent=pickListContent.substr(pickListContent.indexOf("\n")+1,pickListContent.length) i++ } else break; } */ } else if (pickListContent.replace(/^\s+/g, '').replace(/\s+$/g, '').length>0) { pickListAry[0]=pickListContent.replace(/^\s+/g, '').replace(/\s+$/g, '') } return pickListAry; } function validate() { var str = getObj("fldLabel").value; if (!emptyCheck("fldLabel","Label")) return false var re1=/^[a-z\d\_ ]+$/i if (!re1.test(str)) { alert("Special characters are not allowed in Label field") return false; } if (lengthLayer.style.display=="block") { if (!emptyCheck("fldLength","Length")) return false if (!intValidate("fldLength","Length")) return false if (!numConstComp("fldLength","Length","GT",0)) return false if (!numConstComp("fldLength","Length","LE",255)) return false } if (decimalLayer.style.display=="block") { if (getObj("fldDecimal").value.replace(/^\s+/g, '').replace(/\s+$/g, '').length>0) if (!intValidate("fldDecimal","Decimal")) return false if (!numConstComp("fldDecimal","Decimal","GE",0)) return false if (!numConstComp("fldDecimal","Decimal","LE",30)) return false } var picklistObj=getObj("fldPickList") if (pickListLayer.style.display=="block") { if (emptyCheck("fldPickList","Picklist values")) { var pickListAry=new Array() pickListAry=splitValues() //Empty Check validation for (i=0;i<pickListAry.length;i++) { if (pickListAry[i]=="") { alert("Picklist value cannot be empty") picklistObj.focus() return false } } //Duplicate Values' Validation for (i=0;i<pickListAry.length;i++) { for (j=i+1;j<pickListAry.length;j++) { if (pickListAry[i]==pickListAry[j]) { alert("Duplicate Values found") picklistObj.focus() return false } } } return true } else return false } } </script> <script language="JavaScript" type="text/javaScript"> var fieldValueArr=new Array('Text','Number','Percent','Currency','Date','Email','Phone','Picklist','URL','Checkbox') var fieldTypeArr=new Array('text','number','percent','currency','date','email','phone','picklist','url','checkbox') var currFieldIdx=0,totFieldType; function init() { lengthLayer=getObj("lengthdetails") decimalLayer=getObj("decimaldetails") pickListLayer=getObj("picklist") totFieldType=fieldTypeArr.length-1 if (window.navigator.appName.toUpperCase()=="OPERA") getObj("fieldLayer").scrolling="auto" } var focusFieldType; function setVisible() { if (focusFieldType==true) { var selFieldType=fieldLayer.getObj("field"+currFieldIdx) var height=findPosY(selFieldType)+selFieldType.offsetHeight if (currFieldIdx==0) { fieldLayer.document.body.scrollTop=0 } else if (height>220) { fieldLayer.document.body.scrollTop+=height-220 } else { fieldLayer.document.body.scrollTop-=220-height } if (window.navigator.appName.toUpperCase()=="OPERA") { var newDiv=fieldLayer.document.createElement("DIV") newDiv.style.zIndex="-1" newDiv.style.position="absolute" newDiv.style.top=findPosY(selFieldType)+"px" newDiv.style.left="25px" var newObj=fieldLayer.document.createElement("INPUT") newObj.type="text" fieldLayer.document.body.appendChild(newDiv) newDiv.appendChild(newObj) newObj.focus() fieldLayer.document.body.removeChild(newDiv) } } } function selFieldType(id,scrollLayer,bool) { currFieldIdx=id var type=fieldTypeArr[id] for (i=0;i<=totFieldType;i++) { if (i==id) { if (bool==true) fieldLayer.getObj("field"+i).className="fieldType sel" else fieldLayer.getObj("field"+i).className="fieldType sel hilite" if (scrollLayer=="yes") focusFieldType=true else focusFieldType=false } else fieldLayer.getObj("field"+i).className="fieldType" } if (type=='text') { lengthLayer.style.display="block" decimalLayer.style.display="none" pickListLayer.style.display="none" } else if (type=='date' || type=='email' || type=='phone' || type=='url' || type=='checkbox') { lengthLayer.style.display="none" decimalLayer.style.display="none" pickListLayer.style.display="none" } else if (type=='number' || type=='percent' || type=='currency') { lengthLayer.style.display="block" decimalLayer.style.display="block" pickListLayer.style.display="none" } else if (type=='picklist') { lengthLayer.style.display="none" decimalLayer.style.display="none" pickListLayer.style.display="block" } getObj("fieldType").value = fieldValueArr[id]; } function srchFieldType(ev) { if (browser_ie) { var keyCode=window.fieldLayer.event.keyCode var currElement=window.fieldLayer.event.srcElement if (currElement.id.indexOf("field")>=0) var doSearch=true else var doSearch=false window.fieldLayer.event.cancelBubble=true } else if (browser_nn4 || browser_nn6) { var keyCode=ev.which var currElement=ev.target if (currElement.type) doSearch=false else doSearch=true } if (doSearch==true) { switch (keyCode) { case 9 : //Reset Field Type resetFieldTypeHilite();break; case 33 : //Page Up case 36 : //Home selFieldType(0);break; case 34 : //Page Down case 35 : //End selFieldType(totFieldType);break; case 38 : //Up if (currFieldIdx!=0) selFieldType(currFieldIdx-1); else selFieldType(totFieldType,"yes"); break; case 40 : //Down if (currFieldIdx!=totFieldType) selFieldType(currFieldIdx+1); else selFieldType(0,"yes"); default : //Character Search if (keyCode>=65 && keyCode<=90) { var srchChar=String.fromCharCode(keyCode) if (currFieldIdx==totFieldType) var startIdx=0 else var startIdx=currFieldIdx+1 var loop=1 for (i=startIdx;i<=totFieldType;) { currFieldStr=fieldLayer.getObj("field"+i).innerHTML currFieldStr=currFieldStr.replace(/^\s+/g, '').replace(/\s+$/g, '').substr(0,1) if (currFieldStr==srchChar) { selFieldType(i,"yes") i++ } else if (i==totFieldType && loop<=2) { i=0 loop++ } else i++ } } } } } function resetFieldTypeHilite() { fieldLayer.getObj("field"+currFieldIdx).className="fieldType sel" } </script> <body onClick="resetFieldTypeHilite()"> <form action="index.php" method="post" name="addtodb" onSubmit="return validate()"> <input type="hidden" name="module" value="Settings"> <input type="hidden" name="action" value="AddCustomFieldToDB"> <div class="error"> <BR> {DUPLICATE_ERROR} </div> <div align="right" style="width:90%"><font class="required">{APP.LBL_REQUIRED_SYMBOL}</font>{APP.NTC_REQUIRED}</div> <table width="90%" border="0" cellspacing="0" cellpadding="0" class="formOuterBorder"> <tr> <th class="formSecHeader"><div align="left">{MOD.LBL_PROVIDE_FIELD_INFORMATION}</div></th> </tr> <tr> <td> <table width="100%" border="0" cellspacing="0" cellpadding="0" style="margin:10"> <tr> <td width="160">{MOD.LBL_SELECT_FIELD_TYPE}</td> <td>{MOD.LBL_PROVIDE_FIELD_DETAILS}</td> </tr> <tr> <td height="180" valign="top"><iframe name="fieldLayer" src="index.php?module=Settings&action=fieldtypes" scrolling="yes" height="170" width="150"></iframe></td> <td valign="top"><table border="0" cellspacing="1" cellpadding="0"> <tr> <td class="dataLabel" nowrap width="100"><font class="required">{APP.LBL_REQUIRED_SYMBOL}</font>{MOD.LBL_LABEL}</td> <td width="150"><input type="text" name="fldLabel" value="{LABELVALUE}" style="width:100%"></td> </tr> </table> <div id="lengthdetails"> <table border="0" cellspacing="1" cellpadding="0"> <tr> <td class="dataLabel" nowrap width="100"><font class="required">{APP.LBL_REQUIRED_SYMBOL}</font>{MOD.LBL_LENGTH}</td> <td width="150"><input type="text" name="fldLength" value="{LENGTHVALUE}" style="width:100%"></td> </tr> </table> </div> <div id="decimaldetails"> <table border="0" cellspacing="1" cellpadding="0"> <tr> <td class="dataLabel" nowrap width="100">{MOD.LBL_DECIMAL_PLACES}</td> <td width="150"><input type="text" name="fldDecimal" value="{DECIMALVALUE}" style="width:100%"></td> </tr> </table> </div> <div id="picklist"> <table border="0" cellspacing="1" cellpadding="0"> <tr> <td class="dataLabel" nowrap width="100" valign="top"><font class="required">{APP.LBL_REQUIRED_SYMBOL}</font>{MOD.LBL_PICK_LIST_VALUES}</td> <td width="150" valign="top"><textarea name="fldPickList" rows="10" style="width:100%">{PICKLISTVALUE}</textarea></td> <td style="padding-left:10px"><img src="themes/Aqua/images/picklist_hint.gif"/></td> </tr> </table> </div> </td> </tr> </table> </td> </tr> </table> <br> <table width="90%" border="0" cellpadding="0" cellspacing="0"> <tr> <td> <div align="center"> <input type="submit" name="Submit" value="{APP.LBL_SAVE_BUTTON_LABEL}" class="button" > <input type="button" name="Submit2" value="{APP.LBL_CANCEL_BUTTON_LABEL}" class="button" onclick="testing()"> </div></td> </tr> </table> <input type='hidden' name="fieldType" id="fieldType" value="{FLDTYPEVALUE}"> <input type='hidden' name="fld_module" id="fld_module" value="{FLD_MODULE}"> </form> </body><br> <script type="text/javascript"> function testing() { document.location.href="index.php?module=Settings&action=CustomFieldList&fld_module="+document.addtodb.fld_module.value } </script> <!-- END: main -->