1/* Function qui check les champs obligatoires selon le nom des styles mandatory et mandatoryFailed 2myCallBack: 3fonction de callback appelée à la fin des checks globals, ce parametre est optionnel. 4Elle sert à faire des check spécifiquer au champs. 5Si un fonction de callback est défini elle doit renvoyer un boolean. 6La fonction de callback ne peut pas recevoir de parametre. 7Pour passer une fonction en parametre, il suffit de passer le nom de la fonction sans les parenthèses (et pas entre guillmet, ce n'est pas un string) 8 9Si on a des champs obligatoire, mais on veut pas passer dans le checkMandatoryGlobal 10il faut utiliser les style: mandatoryCustom et mandatoryCustomFailed (meme style, mais non traité en global) 11*/ 12/* MOBILE ADAPTED */ 13function checkMandatoryGlobal(oForm, plugID, myCallBack) 14{ 15 var oMultilang = getMultilangObject(plugID);//Recupere l'objet mutlilang, si il existe 16 var flagInput = checkMandatoryGlobalByType(oForm, oMultilang, "input"); 17 var flagTextArea = checkMandatoryGlobalByType(oForm, oMultilang, "textarea"); 18 var canSubmit = (flagInput && flagTextArea); 19 20 //Si il y a une fonction de callback, je l'appelle 21 if(myCallBack) 22 { 23 var flag = myCallBack(canSubmit, oForm, plugID); 24 //Pas de retour (true ou false) à la fonction de callback --> check en ajax --> Post pas le form (c'est la fct ajax qui doit s'en charger) 25 if(isNaN(flag)) 26 return false; 27 //Sinon determine le can submit 28 canSubmit = (canSubmit && flag); 29 } 30 31 if(!canSubmit) /* MOBILE ADAPTED */ 32 { 33 var evt = arguments.callee.caller.arguments[0]; 34 if(evt) 35 { 36 evt.preventDefault(); 37 evt.stopPropagation(); 38 } 39 openboxReady(); 40 } 41 42 return canSubmit; 43} 44 45//Lance le test de tous les champs avec les styles defini 46function checkMandatoryGlobalByType(oForm, oMultilang, sType) 47{ 48 var canSubmit = true; 49 //Si j'ai pas la method sur le form, je prends le document (cas htmlEditeur) 50 if(!oForm.getElementsByTagName) 51 oForm = window.document; 52 var objs = oForm.getElementsByTagName(sType); 53 54 for(i=0;i<objs.length; i++) 55 { 56 var obj = objs[i]; 57 if(obj.className=="mandatory" || obj.className=="mandatoryFailed") 58 { 59 var flag = null; 60 //Si c'est un champs multilang 61 if(oMultilang) 62 if(oMultilang.hasField(obj.id)) 63 flag = oMultilang.checkMandatory(obj.id); 64 65 //Si ce n'était pas un champs multilang 66 if(flag == null) 67 flag = checkMandatoryGlobalField(obj); 68 69 //Met les erreurs 70 if(flag) 71 setMandatoryGlobalError(obj, "mandatory", "none"); 72 else 73 setMandatoryGlobalError(obj, "mandatoryFailed", ""); 74 75 //Redefini le canSubmit 76 canSubmit = (canSubmit && flag); 77 } 78 } 79 80 return canSubmit; 81} 82 83//Check si un champs est rempli 84function checkMandatoryGlobalField(obj) 85{ 86 return !(obj.value.trim() == ""); 87} 88 89//Configure l'erreur avec les parametre 90function setMandatoryGlobalError(obj, style, display, numError) 91{ 92 var idObj = ""; 93 //Si c'est un tableau d'element (pour radio avec meme id) 94 if(obj.length >
94 0 && !obj.options) //évite de passer là pour les cbo 95 { 96 for(i=0;i<obj.length;i++) 97 { 98 obj[i].className = style; 99 idObj = obj[i].id; 100 } 101 } 102 else 103 { 104 obj.className = style; 105 idObj = obj.id; 106 } 107 108 if(!numError) 109 numError=""; 110 111 //Affiche du message d'erreur si il existe 112 var error = document.getElementById(idObj + "_error" + numError); 113 if(error) 114 error.style.display = display; 115} 116 117 118//Recuperation de l'objet multilang si il y en a un 119function getMultilangObject(plugID) 120{ 121 try 122 { 123 oMultilang = eval(plugID + "Multilang"); 124 return oMultilang; 125 } 126 catch (err) 127 { 128 return null; 129 } 130} 131 132//Fonction pour facilier la mise en place des styles et affichage des spand'erreur depuis les fct custom 133function setMandatoryCustomError(obj, noError, numError) 134{ 135 if(noError) 136 setMandatoryGlobalError(obj, "mandatoryCustom","none",numError); 137 else 138 setMandatoryGlobalError(obj, "mandatoryCustomFailed","",numError); 139} 140 141/******************* AUTRE FONCTION POUR LE CHIKITA *************************/ 142//Gestion des mots clés obligatoires pour les pages (met en global car peut etre utiliser par page, news...) 143function checkMandatoryKeyword() 144{ 145 var checkMandatory = document.getElementsByName("aKeyword[]"); 146 //Si j'ai pas de mot clé, je retourne true 147 if(checkMandatory.length==0) 148 return true; 149 150 //Boucle pour tester les checked 151 var flag = false; 152 for(i=0;i<checkMandatory.length;i++) 153 flag = (flag || checkMandatory[i].checked); 154 155 //Je lance l'affichage de l'erreur 156 setMandatoryCustomError(checkMandatory, flag); 157 158 return flag; 159} 160 161//Gestion des email pour le send a friend 162function checkMandatorySendAFriend() 163{ 164 165 var mail = document.getElementById("aSend[mailto]"); 166 var flagTo = checkEmailFormat(mail.value); 167 168 //Si le test est ok, je regarde qu'il y a bien un seul mail 169 if(flagTo) 170 flagTo = checkOnlyOneMail(mail.value); 171 172 setMandatoryCustomError(mail, flagTo); 173 174 mail = document.getElementById("aSend[mailfrom]"); 175 var flagFrom = checkEmailFormat(mail.value); 176 177 //Si le test est ok, je regarde qu'il y a bien un seul mail 178 if(flagFrom) 179 flagFrom = checkOnlyOneMail(mail.value); 180 181 setMandatoryCustomError(mail, flagFrom); 182 183 return (flagTo && flagFrom); 184} 185 186function checkOnlyOneMail(mail) 187{ 188 var chaine= mail; 189 var reg=new RegExp("[@]+", "g"); 190 var tableau=chaine.split(reg); 191 192 if(tableau.length !=2) 193 return false; 194 else 195 return true; 196 197} 198 199/*Fonction pour checker les raccourcis*/ 200function checkRaccourci(bParentFlag, oForm) 201{ 202 //Variable 203 var aEl = new Array(); 204 var cpt=0; 205 var param = ""; 206 var bMatch = true; 207 208 //Recup les input et extrait les type text qui ont une valeur 209 var aTmp = oForm.getElementsByTagName("input"); 210 for(i in aTmp) 211 { 212 if(aTmp[i].type=="text") 213 { 214 //J'enleve les precedent message d'erreur et trim la valeur du champs 215 setMandatoryGlobalError(aTmp[i], "","none", "1"); 216 setMandatoryGlobalError(aTmp[i], "","none", "2"); 217 setMandatoryGlobalError(aTmp[i], "","none", "3"); 218 aTmp[i].value = aTmp[i].value.trim(); //trim la valeur 219 220 //rempli le aEl si j'ai une valeur dans le champs 221 if(aTmp[i].value != "") 222 { 223 aEl[cpt] = aTmp[i]; 224 cpt++; 225 } 226 } 227 } 228 229 //Check si pas de caractere illegal 230 for(i in aEl) 231 { 232 //Si le contenu a des caractere speciaux, je met l'erreur 1 233 var bTmp = aEl[i].value.match(/[^a-z0-9_-]/g); 234 bMatch = (bMatch && !bTmp); 235 if(bTmp) 236 setMandatoryCustomError(aEl[i], false,"1"); 237 else 238 { 239 //je check si il y a une valeur identique, alors je met l'erreur 2 240 bTmp = true 241 for(j in aEl) 242 { 243 if(aEl[i].id!=aEl[j].id && aEl[i].value == aEl[j].value) 244 { 245 setMandatoryCustomError(aEl[i], false,"2"); 246 bTmp = false; 247 break; 248 } 249 } 250 251 bMatch = (bMatch && bTmp); 252 if(bTmp) //Si tous les test sont passer je met dans param pour envoyer à la DB 253 param += "&" + aEl[i].id + "=" + aEl[i].value; 254 } 255 } 256 257 //Si j'ai eu des erreur, je retourne false 258 if(!bMatch) 259 return false; 260 261 //Si le param est vide, tous est vide donc return true 262 if(param=="") 263 return true; 264 265 266 //Sinon je check en AJAX si raccourci unique 267 var xhr = getAjaxRequest(); 268 xhr.onreadystatechange=function() 269 { 270 if(xhr.readyState == 4) 271 if(xhr.status == 200) 272 { 273 var xml = xhr.responseXML; 274 var nodes = xml.getElementsByTagName('html')[0]; 275 var result = nodes.firstChild.nodeValue.trim(); 276 if(result == 1) //Si ok, je poste le formulaire 277 oForm.submit(); //document.getElementById("formEditRaccourci").submit(); 278 else 279 { 280 //Met les erreurs 281 aExistingValue = result.split(";"); 282 var aInError = new Array(); 283 for(i in aEl) 284 { 285 for(j=0; j<aExistingValue.length; j++) 286 { 287 if(aEl[i].value == aExistingValue[j]) 288 { 289 setMandatoryCustomError(aEl[i], false, "3"); 290 break; 291 } 292 } 293 } 294 295 //Enleve la rondelle d'attente 296 openboxReady(); 297 } 298 } 299 } 300 301 var url = window.location.href + "?plugin=ajaxmanager-plug-page-fct-isRaccourciUnique" + encodeURI(param); 302 303 //Appelle Ajax 304 xhr.open("get", url, true); 305 xhr.send(null); //PAS DE RETOUR A LA FONCTION DE CALLBACK POUR PAS POSTER LE FORM 306}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.