ldapsaisie/src/includes/js/LSformElement_password_field.js

282 lines
9.9 KiB
JavaScript
Raw Normal View History

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();
},
2020-04-29 15:54:21 +02:00
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');
}
2020-04-29 15:54:21 +02:00
// 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');
2020-04-29 15:54:21 +02:00
}
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);
}
}
2020-04-29 15:54:21 +02:00
// 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);
2020-04-29 15:54:21 +02:00
// 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');
}
2020-04-29 15:54:21 +02:00
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');
}
2020-04-29 15:54:21 +02:00
this.initialize_input();
if (this.params['confirmChange']) {
varLSform.addEvent(
'submit',
this.onLSformSubmit.bind(this),
'LSformElement_password('+this.name+') :: confirmChange',
);
}
},
2020-04-29 15:54:21 +02:00
initialize_input: function() {
// Verify
if (this.params['verify']) {
this.verifyFx = new Fx.Tween(this.input,{property: 'background-color',duration:600});
}
},
2020-04-29 15:54:21 +02:00
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');
}
},
2020-04-29 15:54:21 +02:00
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));
}
2020-04-29 15:54:21 +02:00
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);
},
2020-04-29 15:54:21 +02:00
onLSmailClose: function(LSmail) {
LSdebug('LSformElement_password : close LSmail');
this.LSmail_open = 0;
},
2020-04-29 15:54:21 +02:00
onLSmailValid: function(LSmail) {
LSdebug('LSformElement_password : valid LSmail');
this.setMail(LSmail.getMail());
},
2020-04-29 15:54:21 +02:00
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);
}
},
2020-04-29 15:54:21 +02:00
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();
},
2020-04-29 15:54:21 +02:00
onGenerateBtnClickComplete: function(responseText, responseXML) {
var data = JSON.decode(responseText);
if ( varLSdefault.checkAjaxReturn(data) ) {
this.input.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;
}
if (this.input.type=='password') {
var newType = 'text';
this.viewBtn.src=varLSdefault.imagePath('hide');
varLSdefault.setHelpInfo(this.viewBtn,'LSformElement_password','hide');
}
else {
var newType = 'password';
this.viewBtn.src=varLSdefault.imagePath('view');
varLSdefault.setHelpInfo(this.viewBtn,'LSformElement_password','view');
}
var newInput = new Element('input');
newInput.setProperty('name',this.input.getProperty('name'));
newInput.setProperty('type',newType);
newInput.setProperty('class',this.input.getProperty('class'));
newInput.setProperty('value',this.input.getProperty('value'));
newInput.injectAfter(this.input);
this.input.destroy();
this.input = newInput;
this.initialize_input();
return newInput;
},
2020-04-29 15:54:21 +02:00
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();
},
2020-04-29 15:54:21 +02:00
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();
},
2020-04-29 15:54:21 +02:00
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) {
// If no new password set, just confirm
if (!this.input.value) {
on_confirm();
return;
}
// Otherwise, ask user confirmation
this.confirmBox = new LSconfirmBox({
text: this.params.confirmChangeQuestion,
startElement: this.input,
onConfirm: on_confirm,
onCancel: (function(){
this.confirmBox=false;
on_cancel();
}).bind(this)
});
}
});