Project

General

Profile

Actions

Feature #4000

closed

Centralisation et standardisation des outillages de vérifications de dates côté client

Added by Yohann Chastagnier about 9 years ago. Updated almost 9 years ago.

Status:
Closed
Priority:
Normal
Category:
-
Start date:
12/04/2012
Due date:
% Done:

100%

Estimated time:
Livraison en TEST:
Livraison en PROD:

Description

Le code de vérification des dates saisies par les utilisateurs, dans les différentes pages WEB, est souvent identique.
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
Actions #1

Updated by Yohann Chastagnier almost 9 years ago

  • Status changed from In progress... to 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éthode isDateValid 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 est 01/01/2012 04:56, une erreur est levée si la date/heure saisie est 01/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éthode isDateValid est d'abord exécutée pour chacune des deux dates/heures
  • isPeriodEndingInFuture : 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éthodes isPeriodValid et isDateFuture
Par défaut :
  • 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++;
});

Actions #2

Updated by Nicolas Eysseric almost 9 years ago

  • Status changed from Resolved to Closed
  • % Done changed from 0 to 100

OK. Validé et intégré...

Actions

Also available in: Atom PDF