Skip to content

Commit

Permalink
Ajout de la classe elementInputAuto
Browse files Browse the repository at this point in the history
= gestion des champs remplis automatiquement
  • Loading branch information
remi-dupre committed Jun 22, 2013
1 parent 3f93ab7 commit 687673c
Show file tree
Hide file tree
Showing 7 changed files with 192 additions and 59 deletions.
16 changes: 13 additions & 3 deletions WebConfiguration/forms/mail.html
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
<h1>Paramètres</h1>
<h1>Paramètres - mail</h1>
<p>
<form class="form-horizontal">

<fieldset>
<legend>Compte mail</legend>
<legend>Connection à votre compte</legend>

<div class="control-group">
<label class="control-label" for="AdresseMail">Adresse email</label>
<div class="controls">
<input type="text" id="AdresseMail" class="first_focus" placeholder="Exemple : name@exemple.com">
<input type="email" id="AdresseMail" class="first_focus" placeholder="Exemple : name@exemple.com">
<span class="help-inline"></span> <!-- Message d'erreur -->
</div>
</div>
Expand All @@ -20,14 +20,24 @@ <h1>Paramètres</h1>
<span class="help-inline"></span> <!-- Message d'erreur -->
</div>
</div>
</fieldset>

<fieldset>
<legend>Paramètres avancés</legend>
<div class="control-group">
<label class="control-label" for="ServMail">Serveur mail</label>
<div class="controls">
<input type="text" id="ServMail" placeholder="Facultatif">
<span class="help-inline"></span> <!-- Message d'erreur -->
</div>
</div>
<div class="control-group">
<label class="control-label" for="PortMail">Port</label>
<div class="controls">
<input type="number" id="PortMail" min="0" max="65535" placeholder="Facultatif">
<span class="help-inline"></span> <!-- Message d'erreur -->
</div>
</div>
</fieldset>

<div class="input-prepend input-append offset6">
Expand Down
5 changes: 4 additions & 1 deletion WebConfiguration/functions/servmail.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
}
?>
68 changes: 68 additions & 0 deletions WebConfiguration/js/config/autoconfig.js
Original file line number Diff line number Diff line change
@@ -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("", "");
}
});
}
};
75 changes: 68 additions & 7 deletions WebConfiguration/js/config/elements.js
Original file line number Diff line number Diff line change
Expand Up @@ -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();
};
Expand Down Expand Up @@ -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 "";
}
};

Expand All @@ -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();
});
}
}
};
}

/*******************************************************************************************************************************
** 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();
};
};
36 changes: 0 additions & 36 deletions WebConfiguration/js/config/mail.js

This file was deleted.

49 changes: 38 additions & 11 deletions WebConfiguration/js/config/parametres.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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");
Expand Down Expand Up @@ -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();
});

Expand Down Expand Up @@ -157,17 +153,48 @@ var inputs = {
"passwd",
[
{
"format": /[:alnum:]{1,}/,
"format": /\S+/,
"msg": {
"type": "error",
"text": "Champ obligatoire"
}
}
]
),
"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
)
};
2 changes: 1 addition & 1 deletion WebConfiguration/parametres.php
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,8 @@
<script src="js/bootstrap.min.js"></script>

<script type="text/javascript" src="js/config/elements.js"></script>
<script type="text/javascript" src="js/config/autoconfig.js"></script>
<script type="text/javascript" src="js/config/parametres.js"></script>
<script type="text/javascript" src="js/config/mail.js"></script>

<script type="text/javascript" src="js/dialogs.js"></script>
</body>
Expand Down

0 comments on commit 687673c

Please sign in to comment.