Feature #4000
ferméCentralisation et standardisation des outillages de vérifications de dates côté client
100%
Description
Il y a donc ici la possibilité de centraliser ce traitement de manière à :
- simplifier la vérification des dates dans chaque page WEB
- posséder une seule implémentation de la vérification de date
Mis à jour par Yohann Chastagnier il y a environ 12 ans
- Statut changé de In progress... à Resolved
Le plugin silverpeas-datechecker.js a été mis en place.
Il s'installe automatiquement via la taglib <view:includePlugin name="datepicker"/>
du ViewGenerator
.
Ce plugin permet de pratiquer des vérifications sur des dates/heures saisies par les utilisateurs sans que le développeur ait à se soucier de la partie algorithme de vérification. Il suffit simplement de spécifier quelles sont les vérifications à effectuer sur les valeurs saisies.
Quelques méthodes rapides d'utilisation sont à disposition (ce nombre augmentera en fonction des besoins) :isDateValid
: permet de vérifier la bonne saisie d'une date/heure (obligatoire ou non, bon format selon la langue de l'utilisateur et date/heure qui existe)isDateFuture
: permet de vérifier que la date/heure saisie est supérieure ou égale à la date du jour. La méthodeisDateValid
est exécutée dans un premier temps. Si une heure est saisie par l'utilisateur, alors la date/heure est comparée à la date/heure du jour (par exemple, si la date/heure du jour est01/01/2012 04:56
, une erreur est levée si la date/heure saisie est01/01/2012 04:00
)isPeriodValid
: permet de vérifier qu'une date/heure de début d'une période est inférieure ou égale à celle de fin. La méthodeisDateValid
est d'abord exécutée pour chacune des deux dates/heuresisPeriodEndingInFuture
: permet de vérifier qu'une date/heure de début d'une période est inférieure ou égale à celle de fin et que la date de fin est supérieure ou égale à la date du jour. Le traitement enchaîne l'appel des méthodesisPeriodValid
etisDateFuture
- pour chacune des méthodes de vérification, si aucune date/heure n'est saisie par l'utilisateur, aucune vérification d'erreur n'est effectuée. Il est cependant possible de spécifier à l'outillage de vérification que les dates/heures sont obligatoires
- pour les méthodes de vérification d'une date/heure par rapport à une autre, aucune erreur n'est levée dans le cas où les dates/heures comparées sont égales. Il est possible de spécifier à ce niveau que les dates/heures ne doivent pas être égales
Chacune des méthodes de vérifications de dates/heures prend en paramètre un ou deux contextes de date et retourne un tableau vide si aucune erreur, ou, contenant un ou plusieurs objets d'erreur si une ou plusieurs erreurs sont détectées. Les définitions de contexte de date et d'objet d'erreur sont indiquées dans le fichier silverpeas-datechecker.js.
Il est possible de passer en paramètre d'une méthode de vérification uniquement l'identifiant du TAG HTML qui contient la date. Dans un tel cas, un contexte de date est automatiquement calculé par le plugin à partir des éléments accessibles depuis l'identifiant (la date et le libellé du champ date).
Les messages d'erreur sont générés par le plugin, et ce, par rapport à la langue de l'utilisateur.
Exemples de mises en place dans publicationManager.jsp
:
/**
* Dans cet exemple sont saisies deux dates (pas d'heure) : champs avec identifiants "beginDate" et "endDate".
* Il est vérifié ici que la période définie par les deux dates est valide et que la date de fin est supérieure ou égale à la date du jour.
* Les éléments sont récupérés via les identifiants des TAG HTML.
*/
var dateErrors = isPeriodEndingInFuture("beginDate", "endDate");
$(dateErrors).each(function(index, error) {
errorMsg += " - " + error.message + "\n";
errorNb++;
});
/**
* Dans cet exemple sont saisies deux dates/heures : "PubDateDebut" et "PubDateFin".
* Une première vérification consiste à s'assurer que "PubDateFin" est supérieure ou égale à "PubDateDebut".
* Une seconde permet de vérifier que "PubDateFin" est supérieure ou égale à la date/heure du jour.
* La méthode "concat", des tableaux en JavaScript, permet d'écrire en une seule instruction l'appel des deux méthodes de vérification.
* (la méthode isPeriodEndingInFuture devrait dans ce cas être utilisée, mais cet exemple montre également comment agréger les erreurs de différents appels de méthode de vérification de ce plugin).
*/
var beginDate = {label : "'<%=resources.getString("PubDateDebut")%>'", date : document.pubForm.BeginDate.value, hour : document.pubForm.BeginHour.value};
var endDate = {label : "'<%=resources.getString("PubDateFin")%>'", date : document.pubForm.EndDate.value, hour : document.pubForm.EndHour.value};
var dateErrors = isPeriodValid(beginDate, endDate).concat(isDateAfterNow(endDate));
$(dateErrors).each(function(index, error) {
errorMsg += " - " + error.message + "\n";
errorNb++;
});
/**
* Dans cet exemple sont saisies deux dates/heures obligatoires : "PubDateDebut" et "PubDateFin".
* Une première vérification consiste à s'assurer que "PubDateFin" est supérieure strictement à "PubDateDebut".
* Une seconde permet de vérifier que "PubDateFin" est strictement supérieure à la date/heure du jour.
*/
var beginDate = {
label : "'<%=resources.getString("PubDateDebut")%>'",
date : document.pubForm.BeginDate.value,
hour : document.pubForm.BeginHour.value,
isMandatory : true,
isMandatoryHour : true,
canBeEqualToAnother : false
};
var endDate = {
label : "'<%=resources.getString("PubDateFin")%>'",
date : document.pubForm.EndDate.value,
hour : document.pubForm.EndHour.value,
isMandatory : true,
isMandatoryHour : true,
canBeEqualToAnother : false
};
var dateErrors = isPeriodEndingInFuture(beginDate, endDate);
$(dateErrors).each(function(index, error) {
errorMsg += " - " + error.message + "\n";
errorNb++;
});
Mis à jour par Nicolas Eysseric il y a presque 12 ans
- Statut changé de Resolved à Closed
- % réalisé changé de 0 à 100
OK. Validé et intégré...