/** * sérialisation d'un objet au format json * @access public * @return string **/ function serialize(obj) { var serialized =""; //pour chaque attribut de l'objet for(var att in obj){ if(typeof obj[att] != "function" && typeof att != "undefined" && !isnull(att) && !empty(att)){ if(!empty(serialized)) serialized += ", " ; serialized += "\""+att+"\" : "; if(typeof obj[att] == "object")serialized += serialize(obj[att]); else if (typeof obj[att] != "string") serialized += "\""+obj[att].toString()+"\""; else if (typeof obj[att] == "string") serialized += "\""+obj[att]+"\""; } } return "{"+serialized+"}"; } /** * transform un formulaire en objet * @access public * @return obj **/ function transformFormToObj(formName, obj){ // on initialise l'objet de réception if(obj != null){ if(!isset(obj.text) || !isset(obj.hidden) || !isset(obj.radio) || !isset(obj.textarea) || !isset(obj.select_one) || !isset(obj.select_multiple) || !isset(obj.password) || !isset(obj.checkbox)){ obj = {"text" :{}, "hidden" :{}, "checkbox" :{}, "radio" :{}, "textarea" :{}, "select_one" :{}, "select_multiple" :{}, "password" :{} }; } }else{ obj = {"text" :{}, "hidden" :{}, "checkbox" :{}, "radio" :{}, "textarea" :{}, "select_one" :{}, "select_multiple" :{}, "password" :{} }; } // on récupère les formulaires qui ont le nom formName var temp = document.getElementsByName(formName); if(temp.length == 0) temp = [getElement(formName)]; // pour chaque valeur for(var k = 0; k < temp.length; k++){ // on vérifie que k est défini if(typeof temp[k] == "object"){ // on vérifie que temp[k] est un formulaire if (temp[k].nodeName.toUpperCase() == "FORM") { // pour chaque input du formulaire for(var i = 0; i < temp[k].elements.length; i++){ // on vérifie que c'est une information à transformer if(["text", "hidden", "radio", "textarea", "select-one", "select-multiple", "password"].inArray(temp[k].elements[i].type.toLowerCase())) { // vérification qu'il y ai un nom à donné au champ if(!empty(temp[k].elements[i].name)){ var name = temp[k].elements[i].name.match(/[A-Za-z]*[^\[]/); // on vérifi si le tableau n'est pas présent if(!isset(obj[temp[k].elements[i].type.replace(/\-/, '_').toLowerCase()][name])){ // on ajoute le tableau obj[temp[k].elements[i].type.replace(/\-/, '_').toLowerCase()][name] = []; } // si le champ à un id if(!empty(temp[k].elements[i].id)){ // on ajoute la valeur dans l'id obj[temp[k].elements[i].type.replace(/\-/, '_').toLowerCase()][name][temp[k].elements[i].id] = temp[k].elements[i].value; }else{ // on ajoute la valeur obj[temp[k].elements[i].type.replace(/\-/, '_').toLowerCase()][name].push(temp[k].elements[i].value); } }else if(!empty(temp[k].elements[i].id)){ // on ajoute la valeur dans l'id obj[temp[k].elements[i].type.replace(/\-/, '_').toLowerCase()][temp[k].elements[i].id] = temp[k].elements[i].value; }else{ // on ajoute la valeur dans le tableau obj[temp[k].elements[i].type.replace(/\-/, '_').toLowerCase()].push(temp[k].elements[i].value); } }else if(["checkbox"].inArray(temp[k].elements[i].type.toLowerCase())){ // vérification qu'il y ai un nom à donné au champ if(!empty(temp[k].elements[i].name)){ var name = temp[k].elements[i].name.match(/[A-Za-z]*[^\[]/); // on vérifi si le tableau n'est pas ajouté if(!isset(obj[temp[k].elements[i].type.replace(/\-/, '_').toLowerCase()][name])){ // on ajoute le tableau obj[temp[k].elements[i].type.replace(/\-/, '_').toLowerCase()][name] = []; } // si le champ à un id if(!empty(temp[k].elements[i].id)){ // on ajoute la valeur if(temp[k].elements[i].checked){ // on ajoute la valeur dans l'id obj[temp[k].elements[i].type.replace(/\-/, '_').toLowerCase()][name][temp[k].elements[i].id] = temp[k].elements[i].value; }else{ // on ajoute la valeur dans l'id obj[temp[k].elements[i].type.replace(/\-/, '_').toLowerCase()][name][temp[k].elements[i].id] = "false"; } }else{ // on ajoute la valeur if(temp[k].elements[i].checked){ obj[temp[k].elements[i].type.replace(/\-/, '_').toLowerCase()][name].push(temp[k].elements[i].value); }else{ obj[temp[k].elements[i].type.replace(/\-/, '_').toLowerCase()][name].push("false"); } } }else if(!empty(temp[k].elements[i].id)){ // on ajoute la valeur associé à l'id obj[temp[k].elements[i].type.replace(/\-/, '_').toLowerCase()][temp[k].elements[i].id] = temp[k].elements[i].value; }else{ // on ajoute la valeur au tableau obj[temp[k].elements[i].type.replace(/\-/, '_').toLowerCase()].push(temp[k].elements[i].value); } } } } } } return obj; }