ldapsaisie/trunk/includes/js/LSform.js

367 lines
14 KiB
JavaScript
Raw Normal View History

var LSform = new Class({
initialize: function(){
$$('img.LSform-add-field-btn').each(function(el) {
el.addEvent('click',this.onAddFieldBtnClick.bind(this,el));
}, this);
$$('img.LSform-remove-field-btn').each(function(el) {
el.addEvent('click',this.onRemoveFieldBtnClick.bind(this,el));
}, this);
$$('div.LSform_image').each(function(el) {
el.addEvent('mouseenter',this.onMouseEnterImage.bind(this));
}, this);
$$('div.LSform_image').each(function(el) {
el.addEvent('mouseleave',this.onMouseLeaveImage.bind(this));
}, this);
$$('img.LSform_image_action_zoom').each(function(el) {
el.addEvent('click',this.zoomImg.bindWithEvent(this,el.getParent().getParent().getNext().src));
}, this);
$$('img.LSform_image_action_delete').each(function(el) {
el.addEvent('click',this.onImageDeleteBtnClick.bind(this,el));
}, this);
this.LSformElement_password_generate_inputHistory = [];
$$('img.LSformElement_password_generate_btn').each(function(el) {
el.addEvent('click',this.onLSformElement_password_generate_btnClick.bind(this,el));
}, this);
$$('img.LSformElement_password_view_btn').each(function(el) {
el.addEvent('click',this.onLSformElement_password_view_btnClick.bind(this,el));
}, this);
this.LSformElement_password_background_color = [];
this.initialiseLSformElement_password_generate();
$$('img.LSformElement_password_verify_btn').each(function(el) {
el.addEvent('click',this.onLSformElement_password_verify_btnClick.bind(this,el));
}, this);
this.initialiseLSformElement_select_object();
},
initialiseLSformElement_select_object: function() {
$$('a.LSformElement_select_object_addBtn').each(function(el) {
el.addEvent('click',this.onLSformElement_select_object_addBtnClick.bindWithEvent(this,el));
}, this);
$$('img.LSformElement_select_object_deleteBtn').each(function(el) {
el.addEvent('click',this.LSformElement_select_object_deleteBtn.bind(this,el));
}, this);
},
initialiseLSformElement_password_generate: function() {
$$('input.LSformElement_password_generate').each(function(el) {
this.LSformElement_password_background_color[el.id] = el.getStyle('background-color');
el.addEvent('click',this.onLSformElement_password_verify_inputClick.bind(this,el));
el.addEvent('keyup',this.onLSformElement_password_generate_inputKeyUp.bind(this,el));
}, this);
},
zoomImg: function(event, src) {
new Event(event).stop();
varLSsmoothbox.openImg(src);
},
onAddFieldBtnClick: function(img){
var getAttrName = /LSform_add_field_btn_(.*)_.*/
var attrName = getAttrName.exec(img.id)[1];
LSdebug(attrName);
var data = {
template: 'LSform',
action: 'onAddFieldBtnClick',
attribute: attrName,
objecttype: $('LSform_objecttype').value,
objectdn: $('LSform_objectdn').value,
idform: $('LSform_idform').value,
img: img.id
};
LSdebug(data);
data.imgload = varLSdefault.loadingImgDisplay(img);
new Ajax('index_ajax.php', {data: data, onComplete: this.onAddFieldBtnClickComplete.bind(this)}).request();
},
onAddFieldBtnClickComplete: function(responseText, responseXML) {
var data = Json.evaluate(responseText);
LSdebug(data);
if ( data ) {
if ( typeof(data.LSerror) != "undefined" ) {
varLSdefault.loadingImgHide(data.imgload);
varLSdefault.displayError(data.LSerror);
return;
}
else {
varLSdefault.loadingImgHide(data.imgload);
var li = new Element('li');
var img = $(data.img);
li.setHTML(data.html);
li.injectAfter(img.getParent());
li.getElements('img[class=LSform-add-field-btn]').each(function(el) {
el.addEvent('click',this.onAddFieldBtnClick.bind(this,el));
}, this);
li.getElements('img[class=LSform-remove-field-btn]').each(function(el) {
el.addEvent('click',this.onRemoveFieldBtnClick.bind(this,el));
}, this);
}
}
},
onRemoveFieldBtnClick: function(img) {
if (img.getParent().getParent().getChildren().length == 1) {
img.getPrevious().getPrevious().value='';
}
else {
img.getParent().remove();
}
},
onMouseEnterImage: function() {
$$('ul.LSform_image_actions').each(function(el) {
el.setStyle('visibility','visible');
}, this);
},
onMouseLeaveImage: function() {
$$('ul.LSform_image_actions').each(function(el) {
el.setStyle('visibility','hidden');
}, this);
},
onImageDeleteBtnClick: function(img) {
$$('form.LSform').each(function(el) {
var input = new Element('input');
input.type = 'hidden';
var getInputId = /LSform_image_action_delete_(.*)/
input.name = $(getInputId.exec(img.id)[1]).name + '_delete';
input.value='delete';
input.injectInside(el);
},this);
img.getParent().getParent().getParent().remove();
},
onLSformElement_select_object_addBtnClick: function(event,a) {
new Event(event).stop();
var getFieldId = /a_(.*)/
var fieldId = getFieldId.exec(a.id)[1];
var getId = /a_LSformElement_select_object_.*_([0-9]*)$/
var Id = getId.exec(a.id)[1];
values = new Array();
$$('input.LSformElement_select_object').each(function(el) {
values.push(el.getProperty('value'));
}, this);
var data = {
template: 'LSselect',
action: 'refreshSession',
objecttype: $('LSformElement_select_object_objecttype_'+Id).value,
values: Json.toString(values),
href: a.href
};
LSdebug(data);
data.imgload=varLSdefault.loadingImgDisplay(a,'inside');
this.refreshFields=fieldId;
new Ajax('index_ajax.php', {data: data, onComplete: this.onLSformElement_select_object_addBtnClickComplete.bind(this)}).request();
},
onLSformElement_select_object_addBtnClickComplete: function(responseText, responseXML) {
var data = Json.evaluate(responseText);
if ( data ) {
if ( typeof(data.LSerror) != "undefined" ) {
varLSdefault.displayError(data.LSerror);
return;
}
else {
varLSdefault.loadingImgHide(data.imgload);
varLSsmoothbox.openURL(data.href,this);
}
}
},
refresh: function() {
var getAttrName = /LSformElement_select_object_(.*)_[0-9]*/
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
};
LSdebug(data);
data.imgload=varLSdefault.loadingImgDisplay($('a_' + this.refreshFields));
new Ajax('index_ajax.php', {data: data, onComplete: this.onRefreshComplete.bind(this)}).request();
},
onRefreshComplete: function(responseText, responseXML) {
var data = Json.evaluate(responseText);
if ( data ) {
if ( typeof(data.LSerror) != "undefined" ) {
varLSdefault.loadingImgHide(data.imgload);
varLSdefault.displayError(data.LSerror);
return;
}
else {
varLSdefault.loadingImgHide(data.imgload);
$(this.refreshFields).getParent().setHTML(data.html);
this.initialiseLSformElement_select_object();
}
}
},
LSformElement_select_object_deleteBtn: function(img) {
img.getParent().remove();
},
onLSformElement_password_generate_btnClick: function(img) {
var getAttrNameAndId = /LSformElement_password_generate_btn_(.*)_([0-9]*)/
var getAttrNameAndIdValues = getAttrNameAndId.exec(img.id);
var attrName = getAttrNameAndIdValues[1];
var fieldId = 'LSformElement_password_' + attrName + '_' + getAttrNameAndIdValues[2];
var viewBtnId = 'LSformElement_password_view_btn_' + attrName + '_' + getAttrNameAndIdValues[2];
var data = {
template: 'LSform',
action: 'generatePassword',
attribute: attrName,
objecttype: $('LSform_objecttype').value,
idform: $('LSform_idform').value,
viewBtnId: viewBtnId,
fieldId: fieldId
};
data.imgload=varLSdefault.loadingImgDisplay(img);
new Ajax('index_ajax.php', {data: data, onComplete: this.onLSformElement_password_generate_btnClickComplete.bind(this)}).request();
},
onLSformElement_password_generate_btnClickComplete: function(responseText, responseXML) {
var data = Json.evaluate(responseText);
if ( data ) {
if ( typeof(data.LSerror) != "undefined" ) {
varLSdefault.loadingImgHide(data.imgload);
varLSdefault.displayError(data.LSerror);
return;
}
else {
varLSdefault.loadingImgHide(data.imgload);
this.changeInputType($(data.fieldId),'text');
$(data.fieldId).value=data.generatePassword;
$(data.viewBtnId).setProperty('src','templates/images/hide.png');
this.LSformElement_password_generate_inputHistory[data.fieldId]=data.generatePassword;
}
}
},
onLSformElement_password_generate_inputKeyUp: function(input) {
if (input.type=='text') {
if((this.LSformElement_password_generate_inputHistory[input.id]!=input.value)&&(typeof(this.LSformElement_password_generate_inputHistory[input.id])!='undefined')&&(this.LSformElement_password_generate_inputHistory[input.id]!='')) {
this.onLSformElement_password_generate_inputModify(input);
}
}
},
onLSformElement_password_generate_inputModify: function(input) {
input.value='';
input = this.changeInputType(input,'password');
var getAttrNameAndId = /LSformElement_password_(.*)_([0-9]*)/
var attrNameAndId = getAttrNameAndId.exec(input.id);
var viewBtnId = 'LSformElement_password_view_btn_' + attrNameAndId[1] + '_' + attrNameAndId[2];
$(viewBtnId).setProperty('src','templates/images/view.png');
this.LSformElement_password_generate_inputHistory[input.id]='';
input.focus();
},
onLSformElement_password_view_btnClick: function(img) {
var getAttrNameAndId = /LSformElement_password_view_btn_(.*)_([0-9]*)/
var getAttrNameAndIdValues = getAttrNameAndId.exec(img.id);
var attrName = getAttrNameAndIdValues[1];
var fieldId = 'LSformElement_password_' + attrName + '_' + getAttrNameAndIdValues[2];
input = $(fieldId);
if (input.type=='password') {
input = this.changeInputType(input,'text');
img.setProperty('src','templates/images/hide.png');
}
else {
input = this.changeInputType(input,'password');
img.setProperty('src','templates/images/view.png');
}
input.focus();
},
changeInputType: function(input,newType) {
var newInput = new Element('input');
newInput.setProperty('name',input.getProperty('name'));
newInput.setProperty('type',newType);
newInput.setProperty('class',input.getProperty('class'));
newInput.setProperty('id',input.getProperty('id'));
newInput.setProperty('value',input.getProperty('value'));
newInput.injectAfter(input);
input.remove();
this.initialiseLSformElement_password_generate();
return newInput;
},
onLSformElement_password_verify_btnClick: function(img) {
var getAttrNameAndId = /LSformElement_password_verify_btn_(.*)_([0-9]*)/
var getAttrNameAndIdValues = getAttrNameAndId.exec(img.id);
var attrName = getAttrNameAndIdValues[1];
var fieldId = 'LSformElement_password_' + attrName + '_' + getAttrNameAndIdValues[2];
var verifyBtnId = 'LSformElement_password_verify_btn_' + attrName + '_' + getAttrNameAndIdValues[2];
var data = {
template: 'LSform',
action: 'verifyPassword',
attribute: attrName,
objecttype: $('LSform_objecttype').value,
idform: $('LSform_idform').value,
fieldId: fieldId,
fieldValue: $(fieldId).value,
objectdn: $('LSform_objectdn').value
};
LSdebug(data);
data.imgload=varLSdefault.loadingImgDisplay(img);
new Ajax('index_ajax.php', {data: data, onComplete: this.onLSformElement_password_verify_btnClickComplete.bind(this)}).request();
},
onLSformElement_password_verify_btnClickComplete: function(responseText, responseXML) {
var data = Json.evaluate(responseText);
if ( data ) {
if ( typeof(data.LSerror) != "undefined" ) {
varLSdefault.loadingImgHide(data.imgload);
varLSdefault.displayError(data.LSerror);
return;
}
else {
varLSdefault.loadingImgHide(data.imgload);
if (data.verifyPassword) {
// ok
$(data.fieldId).setStyle('background-color','#73F386');
}
else {
// nok
$(data.fieldId).setStyle('background-color','#f59a67');
}
}
}
},
onLSformElement_password_verify_inputClick: function(input) {
input.setStyle('background-color',this.LSformElement_password_background_color[input.id]);
}
});
window.addEvent(window.ie ? 'load' : 'domready', function() {
varLSform = new LSform();
});