From 687673c233ff5e2c5f12f3ed9fbb7e6e83feeaa4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi?= Date: Sat, 22 Jun 2013 07:07:19 -0400 Subject: [PATCH] Ajout de la classe elementInputAuto = gestion des champs remplis automatiquement --- WebConfiguration/forms/mail.html | 16 ++++- WebConfiguration/functions/servmail.php | 5 +- WebConfiguration/js/config/autoconfig.js | 68 +++++++++++++++++++++ WebConfiguration/js/config/elements.js | 75 +++++++++++++++++++++--- WebConfiguration/js/config/mail.js | 36 ------------ WebConfiguration/js/config/parametres.js | 49 ++++++++++++---- WebConfiguration/parametres.php | 2 +- 7 files changed, 192 insertions(+), 59 deletions(-) create mode 100644 WebConfiguration/js/config/autoconfig.js delete mode 100644 WebConfiguration/js/config/mail.js diff --git a/WebConfiguration/forms/mail.html b/WebConfiguration/forms/mail.html index 8246af1..8ec8b67 100644 --- a/WebConfiguration/forms/mail.html +++ b/WebConfiguration/forms/mail.html @@ -1,14 +1,14 @@ -

Paramètres

+

Paramètres - mail

- Compte mail + Connection à votre compte
- +
@@ -20,7 +20,10 @@

Paramètres

+
+
+ Paramètres avancés
@@ -28,6 +31,13 @@

Paramètres

+
+ +
+ + +
+
diff --git a/WebConfiguration/functions/servmail.php b/WebConfiguration/functions/servmail.php index f5adedd..1d7739b 100644 --- a/WebConfiguration/functions/servmail.php +++ b/WebConfiguration/functions/servmail.php @@ -2,11 +2,14 @@ /*********************************************************************** * Recherche du serveur mail à l'aide de l'autoconfig mozilla * - Argument "adresse" = deuxième partie de l'adresse mail + * - Argument "champ" = l'élément à chercher (defaut : hostname) * - Argument "protocole" = imap (defaut) ou pop3 ***********************************************************************/ if( !isset($_GET["protocole"]) ) $_GET["protocole"] = "imap"; + if( !isset($_GET["champ"]) ) + $_GET["champ"] = "hostname"; $dom = new DomDocument; @@ -18,7 +21,7 @@ foreach($e as $i) if( $i->hasAttribute("type") ) if( $i->getAttribute("type") == $_GET["protocole"] ){ - echo $i->getElementsByTagName("hostname")->item(0)->nodeValue; + echo $i->getElementsByTagName($_GET["champ"])->item(0)->nodeValue; return; } ?> \ No newline at end of file diff --git a/WebConfiguration/js/config/autoconfig.js b/WebConfiguration/js/config/autoconfig.js new file mode 100644 index 0000000..2d45de7 --- /dev/null +++ b/WebConfiguration/js/config/autoconfig.js @@ -0,0 +1,68 @@ +/******************************************************************************************************************************* +** Gestion de l'autoconfig ** +*******************************************************************************************************************************/ +var autoConfig = { + mail : function(){ + //Quand on enleve le focus de l'adresse mail ca change l'adresse du serveur par defaut + $("#AdresseMail").on("changed", function(){ + var c = $("#AdresseMail"); + var serv = c.val(); + var e = inputs.ServMail; + config.config.mail.username = serv.substring(0, serv.indexOf("@")); //On enregistre le nom d'utillisateur mail dans le json + + serv = serv.substring(serv.indexOf("@")+1, serv.length); //On isole le sufixe de l'adresse mail + + if( (serv !== "") ) //Si quelque chose est entré dans le champ mail et rien dans le serveur, on cherche le serveur mail + $.ajax({ + type: "GET", + url: "functions/servmail.php?adresse=" + serv, + dataType: "text", + success: function(serveur){ + if( (serveur === "") && ($("#ServMail").val() === "") ){ + e.erreur("error", "Impossible de trouver le serveur"); + e.manset("A indiquer manuellement"); + } + else{ + e.autoset(serveur); + e.erreur("success", ""); + } + } + }); + else if( $("#ServMail").val() === "" ){ + e.autoset("Facultatif"); //Si rien n'est inscrit, on reset le champ mail + e.erreur("", ""); + } + }); + }, + port : function(){ + //Quand on enleve le focus de l'adresse mail ca change l'adresse du serveur par defaut + $("#AdresseMail").on("changed", function(){ + var c = $("#AdresseMail"); + var serv = c.val(); + var e = inputs.PortMail; + + serv = serv.substring(serv.indexOf("@")+1, serv.length); //On isole le sufixe de l'adresse mail + + if( (serv !== "") ) //Si quelque chose est entré dans le champ mail + $.ajax({ + type: "GET", + url: "functions/servmail.php?champ=port&adresse=" + serv, + dataType: "text", + success: function(serveur){ + if( (serveur === "") && ($("#PortMail").val() === "") ){ + e.erreur("error", "Impossible de trouver le serveur"); + e.manset("A indiquer manuellement"); + } + else{ + e.autoset(serveur); + e.erreur("success", ""); + } + } + }); + else if( $("#PortMail").val() === "" ){ + e.autoset("Facultatif"); //Si rien n'est inscrit, on reset le champ mail + e.erreur("", ""); + } + }); + } +}; \ No newline at end of file diff --git a/WebConfiguration/js/config/elements.js b/WebConfiguration/js/config/elements.js index c4e878d..a0889bd 100644 --- a/WebConfiguration/js/config/elements.js +++ b/WebConfiguration/js/config/elements.js @@ -4,14 +4,16 @@ function element(_sel, _categorie, _champ){ this.element = _sel; //Selecteur JQuery - this.categorie = _categorie //Categorie pour l'enregistrement + this.categorie = _categorie; //Categorie pour l'enregistrement this.champ = _champ; //Champ pour l'enregistrement this.initialValue = ""; //Sert à retenir la valeur à la prise de focus this.valeure = function(v){ - if( (typeof v) !== "undefined" ) + if( (typeof v) !== "undefined" ){ $(this.element).val(v); + $(this.element).trigger("changed"); + } else return $(this.element).val(); }; @@ -49,13 +51,17 @@ function elementInput(_element, _categorie, _champ, _validation){ this.validation = _validation; //Liste des validateurs this.valeure = function(v){ - if( (typeof v) !== "undefined" ) + if( (typeof v) !== "undefined" ){ $(this.element).val(v); + this.isValid(); + + $(this.element).trigger("changed"); + } else{ if( $(this.element).val() !== "" ) return $(this.element).val(); else - return $(this.element).attr("placeholder"); + return ""; } }; @@ -71,11 +77,66 @@ function elementInput(_element, _categorie, _champ, _validation){ }; this.reconnect = function(){ - var temp = new element("a", "z", "e"); + var temp = new element(); temp.reconnect.call(this); $(this.element).on("changed", function(){ inputs[this.id].isValid(); }); - } -} \ No newline at end of file + }; +} + +/******************************************************************************************************************************* +** Classe élément auto-définis ** +*******************************************************************************************************************************/ + +function elementInputAuto(_element, _categorie, _champ, _validation, _proccess){ + elementInput.call(this, _element, _categorie, _champ, _validation); + this.proccess = _proccess; + this.auto = false; + + this.valeure = function(v){ + var temp = new elementInput(); + temp.valeure.call(this, v); + + if( $(this.element).val() == $(this.element).attr("placeholder") ){ + this.valeure(""); + this.auto = true; + } + else this.auto = false; + + if( typeof v === "undefined" && $(this.element).val() === "" && this.auto) + return $(this.element).attr("placeholder"); + }; + + this.manset = function(v){ + this.auto = false; + $(this.element).attr("placeholder", v); + }; + + this.autoset = function(v){ + this.auto = true; + $(this.element).attr("placeholder", v); + + if( $(this.element).val() == $(this.element).attr("placeholder") ){ + this.valeure(""); + this.auto = true; + } + else this.auto = false; + }; + + this.isValid = function(){ + if( this.auto ) //Si c'est auto ... On s'en tappe !!! + return true; + + var temp = new elementInput(); + return temp.isValid.call(this); + }; + + this.reconnect = function(){ + var temp = new elementInput(); + temp.reconnect.call(this); + + this.proccess(); + }; +}; \ No newline at end of file diff --git a/WebConfiguration/js/config/mail.js b/WebConfiguration/js/config/mail.js deleted file mode 100644 index 9a2c2db..0000000 --- a/WebConfiguration/js/config/mail.js +++ /dev/null @@ -1,36 +0,0 @@ -var mail = { - - connectInputs : function(){ - //Quand on enleve le focus de l'adresse mail ca change l'adresse du serveur par defaut - $("#AdresseMail").focusout(function(){ - var c = $("#AdresseMail"); - var serv = c.val(); - config.config.mail.username = serv.substring(0, serv.indexOf("@")); //On enregistre le nom d'utillisateur mail dans le json - - serv = serv.substring(serv.indexOf("@")+1, serv.length); //On isole le sufixe de l'adresse mail - - if( (serv !== "") ) //Si quelque chose est entré dans le champ mail et rien dans le serveur, on cherche le serveur mail - $.ajax({ - type: "GET", - url: "functions/servmail.php?adresse=" + serv, - dataType: "text", - success: function(serveur){ - if( (serveur === "") && ($("#ServMail").val() === "") ){ - config.erreur("#ServMail", "error", "Impossible de trouver le serveur"); - $("#ServMail").attr("placeholder", "A indiquer manuellement"); - } - else{ - $("#ServMail").attr("placeholder", serveur); - config.erreur("#ServMail", "success", ""); - } - } - }); - else if( $("#ServMail").val() === "" ){ - $("#ServMail").attr("placeholder", "Facultatif"); //Si rien n'est inscrit, on reset le champ mail - config.erreur("#ServMail", "", ""); - } - }); - - } - -}; \ No newline at end of file diff --git a/WebConfiguration/js/config/parametres.js b/WebConfiguration/js/config/parametres.js index 7497f00..eac610d 100644 --- a/WebConfiguration/js/config/parametres.js +++ b/WebConfiguration/js/config/parametres.js @@ -14,10 +14,6 @@ $(function() { //Executé après le chargement $(".hero-unit").load("forms/" + config.onglet + ".html", function(){ //On envoit la requette config.connectAll(); //On connecte les inputs - if(config.onglet == "mail") - mail.connectInputs(); - - inputs.AdresseMail.reconnect(); config.resetForm(); //On met les valeures existantes config.checkForm(); //On colore les champs @@ -53,7 +49,7 @@ var config = { //Pour afficher une erreur en bas de la page generalErreur: function(type, message) { - if(message == "") + if(message === "") $("#generalErreur").addClass("hide"); else{ $("#generalErreur").removeClass("hide alert-success alert-danger alert-info"); @@ -85,10 +81,10 @@ var config = { config.generalErreur("danger", "Formulaire invalide"); return; } - + $("input").each(function(e){ - var champ = inputs[this.id].champ - ,categorie = inputs[this.id].categorie; + var champ = inputs[this.id].champ, + categorie = inputs[this.id].categorie; config.config[categorie][champ] = inputs[this.id].valeure(); }); @@ -157,7 +153,7 @@ var inputs = { "passwd", [ { - "format": /[:alnum:]{1,}/, + "format": /\S+/, "msg": { "type": "error", "text": "Champ obligatoire" @@ -165,9 +161,40 @@ var inputs = { } ] ), - "ServMail": new elementInput("#ServMail", + "ServMail": new elementInputAuto("#ServMail", "mail", "server", - [ ] + [ + { + "format": /\S+/, + "msg": { + "type": "error", + "text": "Veuillez remplir manuellement" + } + } + ], + autoConfig.mail + ), + "PortMail": new elementInputAuto("#PortMail", + "mail", + "port", + [ + { + "format": /\S+/, + "msg": { + "type": "error", + "text": "Veuillez remplir manuellement" + } + }, + { + "format": /^[0-9]{1,5}$/, + "msg": { + "type": "error", + "text": "Le port doit etre un nombre compris entre 1 et 65535" + } + } + + ], + autoConfig.port ) }; \ No newline at end of file diff --git a/WebConfiguration/parametres.php b/WebConfiguration/parametres.php index 2e62807..aca67c7 100644 --- a/WebConfiguration/parametres.php +++ b/WebConfiguration/parametres.php @@ -62,8 +62,8 @@ + -