Fork me on GitHub




(1) 2 3 »


Module Birthday et Xoops en général: Dates antérieures à 1900 ?
Semi pro
Inscrit: 13/04/2006 23:26
De Aix en Provence
Messages: 1751
Je créée ce nouveau fil de discussion pour parler d'un problème que je découvre avec Birthday mais qui va plus loin que ce module ...

Tout d'abord je serais vraiment intéressé de pouvoir saisir des dates plus anciennes que 1901 !!!! Pour entrer des évènements historiques ...

Mais le module ne sait pas faire ... apparemment jscalendar ne sait pas gérer les dates antérieures à 1901. Première année possible: 1902.

Et il me semble que le problème concerne tous les modules appelant jscalendar qui est intégré à xoops !

J'ai donc une requête et une remarque:

- requête: pouvoir saisir des dates antérieures à 1902 dans Birthday.

- remarque: ne serait-il pas judicieux de modifier le système de calendrier intégré à xoops pour augmenter la plage de dates possibles !? Car c'est une limitation gênante pour une fonctionnalité générale au site !

Posté le : 22/08/2014 12:36

signé: LionHell
Partager Twitter Partagez cette article sur GG+
Re: Module Birthday et Xoops en général: Dates antérieures à 1900 ?
Semi pro
Inscrit: 13/04/2006 23:26
De Aix en Provence
Messages: 1751
Citation de alain01 :

Hello,

- Dans le fichier include/calendarjs.php ligne 37, on trouve :
cal.setRange(19002100);



Dans le fichier include/function.php, ligne 32, on trouve
function listeannee ($name$fin$select="1930") {
    
$liste "<select name="$name">";
    for (
$i=1930$i<=$fin$i++) {
        if (
$select==$i) {


A tester...

Ma réponse:

J'ai modifié les dates aux endroits indiqués ... mais ça ne change rien !

Par contre je note que dans calendarjs.php ligne 8 il y a :

<script type="text/javascript" src="<?php echo XOOPS_URL.'/include/calendar.js';?>"></script>




Et si l'on va voir dans calendar.js :

ligne 26 :
this.minYear 1970;




et ligne 1088 dans la fonction parseDate :
if (b[i] == "y") {
parseInt(a[i]);
if (
71) { y+2000;}
else {
y+1900;}
}



Suite de ma réponse :

Pour tester j'ai supprimé l'appel à jscalendar dans le champ date, pour obliger de saisir manuellement la date ...

J'ai essayé de modifier BD_XoopsFormTextDateSelect (dans le module) et XoopsFormTextDateSelect (noyau de xoops). Dans les deux cas l'affichage du calendrier de saisie n'est plus appelé mais ça ne change rien, c'est donc le traitement du contenu de ce champ date qui est en cause !

Et ça se situe dans le noyau de XOOPS !!!! Ca veut dire que dans tous les modules il est impossible de saisir des dates antérieures à 1902 (j'ai testé et 1900 et 1901 ne passent pas) !!!!

Ne serait-ce pas un gros manque dans xoops !!!!???

Posté le : 22/08/2014 12:43

signé: LionHell
Partager Twitter Partagez cette article sur GG+
Re: Module Birthday et Xoops en général: Dates antérieures à 1900 ?
Admin Frxoops
Inscrit: 04/03/2011 09:10
De Lot
Messages: 2611
Par principe, je crois ne pas qu'il y ait beaucoup d'utilisateurs (ou d'utilisatrices) ayant plus de 112 ans. Car, après tout, la fonction est surtout utilisée pour les dates de naissances, les agendas, etc...

De plus, il faut savoir que la fonction date de PHP a des limites (c'est celle qui s'occupe de convertir le "timestamp" généré par le formulaire en date format MySQL).
L'intervalle de validité d'un "timestamp" va généralement du Vendredi 13 Décembre 1901 20:45:54 GMT au Mardi 19 Janvier 2038 03:14:07 GMT.


Posté le : 22/08/2014 13:23
Partager Twitter Partagez cette article sur GG+
Re: Module Birthday et Xoops en général: Dates antérieures à 1900 ?
Semi pro
Inscrit: 13/04/2006 23:26
De Aix en Provence
Messages: 1751
Citation :
Par principe, je crois ne pas qu'il y ait beaucoup d'utilisateurs (ou d'utilisatrices) ayant plus de 112 ans.


On écarte donc tous ceux qui veulent faire de la généalogie, de l'histoire, des inventaires patrimoniaux, et j'en passe ... cette fonction n'est pas dédiée à un module d'anniversaire mais intégrée à xoops ... elle est donc susceptible d'être utilisée pour bien d'autres choses.

Je ne cherche pas à polémiquer, simplement à savoir si elle peut facilement être modifiée pour accepter une plage de dates plus grande !? Sinon modifier le module pour faire ce que je veux.

Posté le : 22/08/2014 20:33

signé: LionHell
Partager Twitter Partagez cette article sur GG+
Re: Module Birthday et Xoops en général: Dates antérieures à 1900 ?
Admin Frxoops
Inscrit: 04/03/2011 09:10
De Lot
Messages: 2611
Citation :

De plus, il faut savoir que la fonction date de PHP a des limites (c'est celle qui s'occupe de convertir le "timestamp" généré par le formulaire en date format MySQL).
L'intervalle de validité d'un "timestamp" va généralement du Vendredi 13 Décembre 1901 20:45:54 GMT au Mardi 19 Janvier 2038 03:14:07 GMT.


Donc en plus clair, visiblement, c'est dur pour cette fin de vacances ;) .
Xoops, comme la quasi totalité des modules, programmes et autres ayant des champs "date", utilisent la fonction PHP 'date()', celle-ci a les limites fixées ci-dessus.
Pour avoir des dates en dehors de ce champs, il faut créer les fonctions spécifiques pour gérer et afficher des dates en dehors de ces limites (MySQL permet d'entrée des dates de l'an 1000 à 9999 si mes souvenirs sont bons, donc pour le stockage pas de soucis)

A mon avis, il est inutile d'alourdir Xoops avec des fonctions que seule les férues d'histoire utiliseront. Donc il te reste, au choix de créer un module ou de modifier un module existant, en lui adjoignant les fonctions spécifiques que du dois créer pour cette utilisation spécifique

Posté le : 22/08/2014 20:58
Partager Twitter Partagez cette article sur GG+
Re: Module Birthday et Xoops en général: Dates antérieures à 1900 ?
Admin Frxoops
Inscrit: 05/03/2005 05:20
De Vaucluse
Messages: 959

Posté le : 22/08/2014 21:01

Open in new window

Xoops 2.5.7.2 - Debian 8.2 - Apache 2.4.10 - MySQL 5.5.47 - Php 5.6.17
Partager Twitter Partagez cette article sur GG+
Re: Module Birthday et Xoops en général: Dates antérieures à 1900 ?
Admin Frxoops
Inscrit: 04/03/2011 09:10
De Lot
Messages: 2611
Le problème, c'est que chaque langage à ses propres limites, on fini par s’emmêler les pinceaux. Sans compter qu'avec tout ce qu'il y a dans ma tête, les choses, de temps en temps se mélangent un peu

Posté le : 22/08/2014 21:05
Partager Twitter Partagez cette article sur GG+
Re: Module Birthday et Xoops en général: Dates antérieures à 1900 ?
Semi pro
Inscrit: 13/04/2006 23:26
De Aix en Provence
Messages: 1751
Je viens de trouver une page très intéressante sur les dates avec les nouvelles fonctions de php5.3 !!! quasi plus de limite !

http://julien-pauli.developpez.com/tutoriels/php/dates/




Posté le : 22/08/2014 21:22

signé: LionHell
Partager Twitter Partagez cette article sur GG+
Re: Module Birthday et Xoops en général: Dates antérieures à 1900 ?
Admin Frxoops
Inscrit: 04/03/2011 09:10
De Lot
Messages: 2611
Par exemple, la class de gestion de date est une possibilité.
Mais pas forcement pour tout le monde, sur certain hébergement où PECL n'est pas forcément installé les limites reviennent a celle de la fonction date.
La syntaxe est très différente par rapport aux fonctions de base comme date() et il faut impérativement utilisé l'orientation objet pour obtenir de bons résultats sur le temps d'exécution.

Posté le : 22/08/2014 21:53
Partager Twitter Partagez cette article sur GG+
Re: Module Birthday et Xoops en général: Dates antérieures à 1900 ?
Semi pro
Inscrit: 13/04/2006 23:26
De Aix en Provence
Messages: 1751
Déjà au niveau de la BDD le champ date est de type DATE et couvre une plage de l'an 1000 à l'an 9999.

Ce n'est pas au niveau de la BDD. Il n'y a plus qu'à se pencher sur les scripts.

Posté le : 23/08/2014 10:14

signé: LionHell
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant
(1) 2 3 »




Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

43 Personne(s) en ligne (32 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 43 | Plus ...