ldapsaisie/trunk/includes/js/LSmail.js
Benjamin Renard d75a8823c2 - LSview : ajout de input hidden pour contenir les informations du type et du
DN de l'objet affiché.
- LSmail : Ajout d'une fonctionalité d'envoie de mail depuis l'interface.
  -> Modification de LSformElement_mail pour utiliser cette fonctionalité
  -> Agrémentation du fichier index_ajax.php
  -> Ajout d'un LSaddons :: mail
- LSsession :
  -> Ajout d'une méthode getEmailSender()
  -> Utilisation de la méthode getEmailSender() pour la partie de récupération
     de mot de passe
  -> Revue des méthodes loadLSaddon() et loadLSaddons()
- LSconfirmBox :
  -> Ajout de binding onClose() et onCancel()
- LSsmoothbox :
  -> Déport de la creation de la structure dans la méthode build()
  -> Suppression du principe de refreshElement au profit de binding sur les
     évenements onClose, onValid et onCancel
      -> Ajout des méthodes addEvent() et fireEvent()
      -> Suppression de la méthode setRefreshElement()
  -> Ajout de la méthode asNew() pour remettre l'objet dans son état d'origine
     pour l'utilisation simultané de l'objet par plusieurs autres
  -> Vérification lors du clique sur le closeBtn qu'une précédente confirmBox
     n'est pas déjà ouvert
  -> La méthode close() ne fait plus que fermer la LSsmoothbox et les méthodes
     valid() et cancel() gère les cas de fermeture et lance la méthode close()
  -> Ajout de la méthode openHTML() pour l'ouverture de la LSsmoothbox avec un
     code HTML passé en paramètre
  -> Ajout de la méthode setOption()
- LSrelation & LSformElement_select_object :
  -> Utilisation du principe d'évenement de la LSsmoothbox plutôt que du
     refreshElement
  -> Utilisation de la méthode asNew() pour eviter tout problème de concurence
- LSdefault : Ajout de la méthode displayInfos()
2008-09-25 15:15:33 +00:00

128 lines
3.5 KiB
JavaScript

var LSmail = new Class({
initialize: function(mails,msg){
this.href = "LSmail.php";
this.setMails(mails);
this.setMsg(msg);
this.object = {};
this.opened = 0;
this.listeners = {
close: new Array(),
valid: new Array()
};
},
setMails: function(mails) {
if ($type(mails)) {
this.mails = mails;
}
else {
this.mails = new Array();
}
},
setMsg: function(msg) {
if ($type(msg)) {
this.msg = msg;
}
else {
this.msg = "";
}
},
setObject: function(type,dn) {
this.object = {
type: type,
dn: dn
};
},
open: function(startElement) {
if (this.opened==0) {
var data = {
template: 'LSmail',
action: 'display',
object: this.object,
mails: this.mails,
msg: this.msg
};
if ($type(startElement)) {
this.startElement = startElement;
data.imgload=varLSdefault.loadingImgDisplay(startElement,'inside');
}
new Request({url: 'index_ajax.php', data: data, onSuccess: this.onOpenGetHtmlComplete.bind(this)}).send();
}
},
onOpenGetHtmlComplete: function(responseText, responseXML) {
var data = JSON.decode(responseText);
if ( varLSdefault.checkAjaxReturn(data) ) {
//varLSsmoothbox.setRefreshElement(this);
varLSsmoothbox.asNew();
varLSsmoothbox.addEvent('valid',this.onLSsmoothboxValid.bind(this));
varLSsmoothbox.addEvent('close',this.onLSsmoothboxClose.bind(this));
varLSsmoothbox.openHTML(data.html,{startElement: this.startElement, width: 580, height: 150});
}
},
onLSsmoothboxValid: function(LSsmoothbox) {
if($type(LSsmoothbox.frame)) {
this.sendInfos = {
mail: LSsmoothbox.frame.getElementById('LSmail_mail').value,
subject: LSsmoothbox.frame.getElementById('LSmail_subject').value,
msg: LSsmoothbox.frame.getElementById('LSmail_msg').value
};
}
this.fireEvent.bind(this)('valid');
},
onLSsmoothboxClose: function(LSsmoothbox) {
this.opened=0;
this.fireEvent.bind(this)('close');
},
send: function() {
if ($type(this.sendInfos)) {
var data = {
template: 'LSmail',
action: 'send',
infos: this.sendInfos
};
LSdebug(data);
data.imgload=varLSdefault.loadingImgDisplay(this.startElement,'inside');
new Request({url: 'index_ajax.php', data: data, onSuccess: this.onSendComplete.bind(this)}).send();
}
},
onSendComplete: function(responseText, responseXML) {
var data = JSON.decode(responseText);
if ( varLSdefault.checkAjaxReturn(data) ) {
if ($type(data.msgok)) {
varLSdefault.displayInfos(data.msgok);
}
}
},
addEvent: function(event,fnct) {
if ($type(this.listeners[event])) {
if ($type(fnct)=="function") {
this.listeners[event].include(fnct);
}
}
},
fireEvent: function(event) {
LSdebug('LSmail :: fireEvent('+event+')');
if ($type(this.listeners[event])) {
this.listeners[event].each(function(fnct) {
try {
fnct(this);
}
catch(e) {
LSdebug('LSmail :: '+event+'() -> rater');
}
},this);
}
}
});