mirror of
https://gitlab.easter-eggs.com/ee/ldapsaisie.git
synced 2024-11-16 23:39:07 +01:00
293 lines
10 KiB
JavaScript
293 lines
10 KiB
JavaScript
var LSformElement_password_field = new Class({
|
|
initialize: function(name,input){
|
|
this.name = name;
|
|
this.input = input;
|
|
this.params = varLSdefault.getParams(this.name);
|
|
this.initialiseLSformElement_password_field();
|
|
},
|
|
|
|
initialiseLSformElement_password_field: function() {
|
|
// ViewHashBtn
|
|
if (this.params.viewHash && varLSform.objectdn!= "") {
|
|
this.viewHashBtn = new Element('img');
|
|
this.viewHashBtn.src = varLSdefault.imagePath('view_hash');
|
|
this.viewHashBtn.addClass('btn');
|
|
this.viewHashBtn.addEvent('click',this.onViewHashBtnClick.bind(this));
|
|
this.viewHashBtn.injectAfter(this.input);
|
|
varLSdefault.addHelpInfo(this.viewHashBtn,'LSformElement_password','viewHash');
|
|
}
|
|
|
|
// Mail
|
|
if (this.params.mail) {
|
|
if ((this.params.mail.canEdit==1)||(!$type(this.params.mail.canEdit))) {
|
|
this.editMailBtn = new Element('img');
|
|
this.editMailBtn.src = varLSdefault.imagePath('mail-edit');
|
|
this.editMailBtn.addClass('btn');
|
|
this.editMailBtn.addEvent('click',this.onEditMailBtnClick.bind(this));
|
|
this.LSmail_open = 0;
|
|
this.editMailBtn.injectAfter(this.input);
|
|
varLSdefault.addHelpInfo(this.editMailBtn,'LSformElement_password','editmail');
|
|
}
|
|
if (this.params.mail.ask) {
|
|
this.mailBtn = new Element('img');
|
|
this.mailBtn.addClass('btn');
|
|
this.mailBtn.addEvent('click',this.onMailBtnClick.bind(this));
|
|
this.mailInput = new Element('input');
|
|
this.mailInput.setProperties({
|
|
name: 'LSformElement_password_' + this.name + '_send',
|
|
type: 'hidden'
|
|
});
|
|
if (this.params.mail.send) {
|
|
this.mailInput.value = 1;
|
|
this.mailBtn.src = varLSdefault.imagePath('mail');
|
|
varLSdefault.addHelpInfo(this.mailBtn,'LSformElement_password','mail');
|
|
}
|
|
else {
|
|
this.mailInput.value = 0;
|
|
this.mailBtn.src = varLSdefault.imagePath('nomail');
|
|
varLSdefault.addHelpInfo(this.mailBtn,'LSformElement_password','nomail');
|
|
}
|
|
this.mailBtn.injectAfter(this.input);
|
|
this.mailInput.injectAfter(this.mailBtn);
|
|
}
|
|
}
|
|
|
|
// ViewBtn
|
|
this.viewBtn = new Element('img');
|
|
if (this.params.clearEdit) {
|
|
this.viewBtn.src = varLSdefault.imagePath('hide');
|
|
varLSdefault.addHelpInfo(this.viewBtn,'LSformElement_password','hide');
|
|
}
|
|
else {
|
|
this.viewBtn.src = varLSdefault.imagePath('view');
|
|
varLSdefault.addHelpInfo(this.viewBtn,'LSformElement_password','view');
|
|
}
|
|
this.viewBtn.addClass('btn');
|
|
this.viewBtn.addEvent('click',this.changeInputType.bind(this));
|
|
this.viewBtn.injectAfter(this.input);
|
|
|
|
// Verify
|
|
if (this.params.verify) {
|
|
this.bgColor = this.input.getStyle('background-color');
|
|
this.verifyFx = new Fx.Tween(this.input,{property: 'background-color',duration:600});
|
|
this.verifyBtn = new Element('img');
|
|
this.verifyBtn.src = varLSdefault.imagePath('verify');
|
|
this.verifyBtn.addClass('btn');
|
|
this.verifyBtn.addEvent('click',this.onVerifyBtnClick.bind(this));
|
|
this.verifyBtn.injectAfter(this.input);
|
|
varLSdefault.addHelpInfo(this.verifyBtn,'LSformElement_password','verify');
|
|
}
|
|
|
|
if (this.params.generate) {
|
|
this.generateBtn = new Element('img');
|
|
this.generateBtn.src = varLSdefault.imagePath('generate');
|
|
this.generateBtn.addClass('btn');
|
|
this.generateBtn.addEvent('click',this.onGenerateBtnClick.bind(this));
|
|
this.generateBtn.injectAfter(this.input);
|
|
varLSdefault.addHelpInfo(this.generateBtn,'LSformElement_password','generate');
|
|
}
|
|
|
|
this.initialize_input();
|
|
|
|
if (this.params.confirmInput || this.params.confirmChange) {
|
|
if (this.params.confirmInput) {
|
|
this.input_confirm = this.input.getNext('div.LSformElement_password_confirm').getElement('input');
|
|
}
|
|
varLSform.addEvent(
|
|
'submit',
|
|
this.onLSformSubmit.bind(this),
|
|
'LSformElement_password('+this.name+') :: onLSformSubmit'
|
|
);
|
|
}
|
|
},
|
|
|
|
initialize_input: function() {
|
|
// Verify
|
|
if (this.params.verify) {
|
|
this.verifyFx = new Fx.Tween(this.input,{property: 'background-color',duration:600});
|
|
}
|
|
},
|
|
|
|
onMailBtnClick: function() {
|
|
if (this.mailInput.value==0) {
|
|
this.mailInput.value = 1;
|
|
this.mailBtn.src = varLSdefault.imagePath('mail');
|
|
varLSdefault.setHelpInfo(this.mailBtn,'LSformElement_password','mail');
|
|
}
|
|
else {
|
|
this.mailInput.value = 0;
|
|
this.mailBtn.src = varLSdefault.imagePath('nomail');
|
|
varLSdefault.setHelpInfo(this.mailBtn,'LSformElement_password','nomail');
|
|
}
|
|
},
|
|
|
|
onEditMailBtnClick: function(btn) {
|
|
if(!$type(this.LSmail)) {
|
|
this.LSmail = new LSmail();
|
|
this.LSmail.addEvent('close',this.onLSmailClose.bind(this));
|
|
this.LSmail.addEvent('valid',this.onLSmailValid.bind(this));
|
|
}
|
|
|
|
var mails = [];
|
|
if ($type(this.params.mail.mail_attr)=='array') {
|
|
this.params.mail.mail_attr.each(function(a) {
|
|
this.append(varLSform.getValue(a));
|
|
},mails);
|
|
}
|
|
else {
|
|
mails.append(varLSform.getValue(this.params.mail.mail_attr));
|
|
}
|
|
|
|
this.LSmail_open = 1;
|
|
this.LSmail.setMails(mails);
|
|
this.LSmail.setSubject(this.params.mail.subject);
|
|
this.LSmail.setMsg(this.params.mail.msg);
|
|
this.LSmail.open(this.editMailBtn);
|
|
},
|
|
|
|
onLSmailClose: function(LSmail) {
|
|
LSdebug('LSformElement_password : close LSmail');
|
|
this.LSmail_open = 0;
|
|
},
|
|
|
|
onLSmailValid: function(LSmail) {
|
|
LSdebug('LSformElement_password : valid LSmail');
|
|
this.setMail(LSmail.getMail());
|
|
},
|
|
|
|
setMail: function(mail) {
|
|
if ($type(mail)) {
|
|
if (!$type(this.msgInput)) {
|
|
this.msgInput = new Element('input');
|
|
this.msgInput.setProperties({
|
|
name: 'LSformElement_password_' + this.name + '_msg',
|
|
type: 'hidden'
|
|
});
|
|
this.msgInput.injectAfter(this.editMailBtn);
|
|
}
|
|
this.msgInput.value = JSON.encode(mail);
|
|
}
|
|
},
|
|
|
|
onGenerateBtnClick: function() {
|
|
var data = {
|
|
attribute: this.name,
|
|
objecttype: varLSform.objecttype,
|
|
objectdn: varLSform.objectdn,
|
|
idform: varLSform.idform
|
|
};
|
|
data.imgload=varLSdefault.loadingImgDisplay(this.generateBtn);
|
|
new Request({url: 'ajax/class/LSformElement_password/generatePassword', data: data, onSuccess: this.onGenerateBtnClickComplete.bind(this)}).send();
|
|
},
|
|
|
|
onGenerateBtnClickComplete: function(responseText, responseXML) {
|
|
var data = JSON.decode(responseText);
|
|
if ( varLSdefault.checkAjaxReturn(data) ) {
|
|
this.input.value=data.generatePassword;
|
|
if (this.input_confirm) {
|
|
this.input_confirm.value = data.generatePassword;
|
|
}
|
|
this.changeInputType('view');
|
|
}
|
|
},
|
|
|
|
changeInputType: function(state) {
|
|
if (((this.input.type=='password')&&(state=='hide'))||((this.input.type=='text')&&(state=='view'))) {
|
|
return this.input;
|
|
}
|
|
|
|
var newType;
|
|
if (this.input.type=='password') {
|
|
newType = 'text';
|
|
this.viewBtn.src=varLSdefault.imagePath('hide');
|
|
varLSdefault.setHelpInfo(this.viewBtn,'LSformElement_password','hide');
|
|
}
|
|
else {
|
|
newType = 'password';
|
|
this.viewBtn.src=varLSdefault.imagePath('view');
|
|
varLSdefault.setHelpInfo(this.viewBtn,'LSformElement_password','view');
|
|
}
|
|
|
|
this.input.setProperty('type', newType);
|
|
if (this.input_confirm) {
|
|
this.input_confirm.setProperty('type', newType);
|
|
}
|
|
return this.input;
|
|
},
|
|
|
|
onVerifyBtnClick: function() {
|
|
var data = {
|
|
attribute: this.name,
|
|
objecttype: varLSform.objecttype,
|
|
idform: varLSform.idform,
|
|
objectdn: varLSform.objectdn,
|
|
fieldValue: this.input.value
|
|
};
|
|
LSdebug(data);
|
|
data.imgload=varLSdefault.loadingImgDisplay(this.verifyBtn);
|
|
new Request({url: 'ajax/class/LSformElement_password/verifyPassword', data: data, onSuccess: this.onVerifyBtnClickComplete.bind(this)}).send();
|
|
},
|
|
|
|
onVerifyBtnClickComplete: function(responseText, responseXML) {
|
|
var data = JSON.decode(responseText);
|
|
if ( varLSdefault.checkAjaxReturn(data) ) {
|
|
if (data.verifyPassword) {
|
|
// ok
|
|
this.verifyFx.start('#73F386');
|
|
}
|
|
else {
|
|
// nok
|
|
this.verifyFx.start('#f59a67');
|
|
}
|
|
(function(){this.verifyFx.start(this.bgColor);}).delay(1000, this);
|
|
}
|
|
},
|
|
|
|
onViewHashBtnClick: function() {
|
|
var data = {
|
|
attribute: this.name,
|
|
objecttype: varLSform.objecttype,
|
|
objectdn: varLSform.objectdn
|
|
};
|
|
data.imgload=varLSdefault.loadingImgDisplay(this.viewHashBtn);
|
|
new Request({url: 'ajax/class/LSformElement_password/viewHash', data: data, onSuccess: this.onViewHashBtnClickComplete.bind(this)}).send();
|
|
},
|
|
|
|
onViewHashBtnClickComplete: function(responseText, responseXML) {
|
|
var data = JSON.decode(responseText);
|
|
if ( varLSdefault.checkAjaxReturn(data) ) {
|
|
if (data.hash) {
|
|
// ok
|
|
this.input.value=data.hash;
|
|
this.changeInputType('view');
|
|
}
|
|
}
|
|
},
|
|
|
|
onLSformSubmit: function(form, on_confirm, on_cancel) {
|
|
// Handle confirmInput feature
|
|
if (this.params.confirmInput && this.input.value != this.input_confirm.value) {
|
|
varLSform.addError(this.params.confirmInputError, this.name);
|
|
on_cancel();
|
|
return;
|
|
}
|
|
|
|
// If confirmChange feature not enabled or no new password set, just confirm
|
|
if (!this.params.confirmChange || !this.input.value) {
|
|
on_confirm();
|
|
return;
|
|
}
|
|
|
|
// Otherwise, ask user confirmation for password change
|
|
this.confirmBox = new LSconfirmBox({
|
|
text: this.params.confirmChangeQuestion,
|
|
startElement: this.input,
|
|
onConfirm: on_confirm,
|
|
onCancel: (function(){
|
|
this.confirmBox=false;
|
|
on_cancel();
|
|
}).bind(this)
|
|
});
|
|
},
|
|
|
|
});
|