ldapsaisie/trunk/includes/js/LSformElement_select_object.js
Benjamin Renard ab7120b589 - LSform :
-> Redimentionnement des dt pour laisser plus de place aux labels
- LSformElement_boolean, LSformElement_select : Ajout d'un bouton clear
- L'ajout des boutons javascript a été déporté dans le code javascript :
  -> LSformElement_url
  -> LSformElement_mail
  -> LSformElement_rss
  -> LSformElement_xmp
- LSformElement_select_object
  -> Activation du champ de formulaire directement dans le javascript
2008-09-27 00:55:58 +00:00

132 lines
4.8 KiB
JavaScript

var LSformElement_select_object = new Class({
initialize: function(){
this.initialiseLSformElement_select_object();
},
initialiseLSformElement_select_object: function(el) {
if (!$type(el)) {
el = document;
}
el.getElements('ul.LSformElement_select_object').each(function(ul) {
var params = varLSdefault.LSjsConfig[ul.id];
if ($type(params)) {
if (!params.freeze) {
// Class du UL
ul.addClass('LSformElement_select_object_edit');
// Delete btns
ul.getElements('a.LSformElement_select_object').each(function(a){
var btn = new Element('img');
btn.addClass('btn');
btn.setProperties({
src: 'templates/images/delete.png',
alt: params.deleteBtns.alt
});
btn.addEvent('click',this.LSformElement_select_object_deleteBtn.bind(this,btn));
btn.injectAfter(a);
},this);
// li
ul.getElements('li').each(function(li){
li.addClass('LSformElement_select_object');
},this);
// Head
var li = new Element('li');
li.addClass('LSformElement_select_object_addBtn');
var addBtn = new Element('a');
addBtn.addClass('LSformElement_select_object');
addBtn.addClass('LSformElement_select_object_addBtn');
addBtn.setProperties({
href: params.addBtn.href,
id: params.addBtn.id
});
addBtn.set('html',params.addBtn.label);
addBtn.addEvent('click',this.onLSformElement_select_object_addBtnClick.bindWithEvent(this,addBtn));
addBtn.injectInside(li);
var input = new Element('input');
input.setProperties({
type: 'hidden',
name: params.inputHidden.name,
id: params.inputHidden.id,
value: params.inputHidden.value,
});
input.injectInside(li);
li.inject(ul,'top');
}
}
}, this);
},
onLSformElement_select_object_addBtnClick: function(event,a) {
new Event(event).stop();
var getAttrName = /a_LSformElement_select_object_(.*)/
var attrName = getAttrName.exec(a.id)[1];
var fieldId = 'LSformElement_select_object_'+attrName;
values = new Array();
a.getParent().getParent().getElements('input.LSformElement_select_object').each(function(el) {
values.push(el.getProperty('value'));
}, this);
var data = {
template: 'LSselect',
action: 'refreshSession',
objecttype: $('LSformElement_select_object_objecttype_'+attrName).value,
values: JSON.encode(values),
href: a.href
};
data.imgload=varLSdefault.loadingImgDisplay(a,'inside');
this.refreshFields=fieldId;
new Request({url: 'index_ajax.php', data: data, onSuccess: this.onLSformElement_select_object_addBtnClickComplete.bind(this)}).send();
},
onLSformElement_select_object_addBtnClickComplete: function(responseText, responseXML) {
var data = JSON.decode(responseText);
if ( varLSdefault.checkAjaxReturn(data) ) {
varLSsmoothbox.asNew();
varLSsmoothbox.addEvent('valid',this.onLSsmoothboxValid.bind(this));
varLSsmoothbox.displayValidBtn();
varLSsmoothbox.openURL(data.href,{width: 615});
}
},
onLSsmoothboxValid: function() {
var getAttrName = /LSformElement_select_object_(.*)/
var attrName = getAttrName.exec(this.refreshFields)[1];
var data = {
template: 'LSform',
action: 'refreshField',
attribute: attrName,
objecttype: $('LSform_objecttype').value,
objectdn: $('LSform_objectdn').value,
idform: $('LSform_idform').value,
ul: this.refreshFields
};
data.imgload=varLSdefault.loadingImgDisplay($('a_' + this.refreshFields));
new Request({url: 'index_ajax.php', data: data, onSuccess: this.onLSsmoothboxValidComplete.bind(this)}).send();
},
onLSsmoothboxValidComplete: function(responseText, responseXML) {
var data = JSON.decode(responseText);
if ( varLSdefault.checkAjaxReturn(data) ) {
var dd = $(this.refreshFields).getParent();
dd.set('html',data.html);
this.initialiseLSformElement_select_object(dd);
}
},
LSformElement_select_object_deleteBtn: function(img) {
img.getParent().destroy();
}
});
window.addEvent(window.ie ? 'load' : 'domready', function() {
varLSformElement_select_object = new LSformElement_select_object();
});