ldapsaisie/trunk/includes/js/LSformElement.js
Benjamin Renard cc0a009b63 - LSform.js :
-> Refonte complète pour coller au plus près de la réalité
  -> Création des classes LSformElement et LSformElement_field
- LSsession :
  -> Méthode fetchTemplate() : retourne un template compilé
- LSformElement :
  -> Méthode fetchTemplate() : Utilisation des templates pour l'affichage des
     LSformElement.
  -> Méthode isMultiple()
  -> getEmptyField() : méthode d'affichage par défaut d'un champs vide
- LSformElement_textarea :
  -> Utilisation des templates pour l'affichage
  -> Ajout d'un bouton clear()
- LSformElement_text :
  -> Utilisation des templates pour l'affichage
  -> Adpatation pour pouvoir faire des classes filles. Celles-ci hériteront
     des fonctionnalités des champs textes classiques
  -> La méthode de génération est maintenant appliqué à tout les champs et non
     plus simplement au premier
- LSformElement_mail :
  -> Refonte en utilisant l'héritage de LSformElement_text
2008-10-15 17:40:04 +00:00

60 lines
1.8 KiB
JavaScript

var LSformElement = new Class({
initialize: function(LSform,name,ul){
this.LSform=LSform;
this.name=name;
this.ul=ul;
this.fields=[];
this.multiple = this.ul.hasClass('LSformElement_multiple');
this.initializeLSformElement();
},
initializeLSformElement: function(li) {
if (typeof(li) == 'undefined') {
var elements = this.ul.getElements('li');
}
else {
var elements = [li];
}
elements.each(function(li) {
var id='LSformElement_field_'+this.name+'_'+$random(1,1000);
this.fields[id] = new LSformElement_field(this,li,id);
}, this);
},
onAddFieldBtnClick: function(field){
var data = {
template: 'LSform',
action: 'onAddFieldBtnClick',
attribute: this.name,
objecttype: this.LSform.objecttype,
objectdn: this.LSform.objectdn,
idform: this.LSform.idform,
fieldId: field.id
};
LSdebug(data);
data.imgload = varLSdefault.loadingImgDisplay(field.li,'inside');
new Request({url: 'index_ajax.php', data: data, onSuccess: this.onAddFieldBtnClickComplete.bind(this)}).send();
},
onAddFieldBtnClickComplete: function(responseText, responseXML) {
var data = JSON.decode(responseText);
LSdebug(data);
if ( varLSdefault.checkAjaxReturn(data) ) {
var li = new Element('li');
var field = this.fields[data.fieldId];
li.set('html',data.html);
li.injectAfter(field.li);
this.initializeLSformElement(li);
this.LSform.initializeModule(data.fieldtype,li);
}
},
onRemoveFieldBtnClick: function(field) {
if (this.ul.getElements('li').length == 1) {
field.clearValue.bind(field)();
}
else {
field.remove.bind(field)();
}
}
});