modification d'un script

Invité
Invité n'ayant pas de compte PHPfrance

30 avr. 2008, 15:52

bonjour,

j'ai pris sur internet un script permettant de faire afficher un calendrier. Mais celui ci s'affiche sur le mois en cours. je souhaiterai qu'il saffiche sur un mois donnée a partir d'un variable. Le souci c'est que je n'ai pas tout compris au script. Ce script est http://www.toulouse-renaissance.net/c_o ... ulaire.htm

les variables sont :
var ARR_MONTHS = ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin",
		"Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"];
// week day titles as they appear on the calendar
var ARR_WEEKDAYS = ["Di", "Lu", "Ma", "Me", "Je", "Ve", "Sa"];
// day week starts from (normally 0-Su or 1-Mo)
var NUM_WEEKSTART = 1;
// path to the directory where calendar images are stored. trailing slash req.
var STR_ICONPATH = '../image/calendrier/';

var re_url = new RegExp('datetime=(\\-?\\d+)');
var dt_current = (re_url.exec(String(window.location))
	? new Date(new Number(RegExp.$1)) : new Date());
var re_id = new RegExp('id=(\\d+)');
var num_id = (re_id.exec(String(window.location))
	? new Number(RegExp.$1) : 0);
var obj_caller = (window.opener ? window.opener.calendars[num_id] : null);

donc je suppose que c'est a ce niveau qu'il faut que j'indique ma date :
var dt_current = (re_url.exec(String(window.location))
	? new Date(new Number(RegExp.$1)) : new Date());
mais je n'ai aucune idée de comment procéder.

Pourriez vous m'aiguiller ?

Merci d'avance

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

30 avr. 2008, 17:13

Ce que tu veux est un objet date à la date que tu auras choisie...
Regarde la fonction date() et passe lui les paramètres (jour, mois, année...) qui vont bien pour créer ton objet.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Invité
Invité n'ayant pas de compte PHPfrance

03 mai 2008, 19:01

ok mais a quel endroit dans le code je dois l'inclure. Et a quel variable?
merci

Invité
Invité n'ayant pas de compte PHPfrance

05 mai 2008, 10:48

c'est a cet endroit
var re_url = new RegExp('datetime=(\\-?\\d+)');
que je dois indiquer le mois a prendre en compte ?

merci

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

05 mai 2008, 10:57

non... je supposais que tu savais où modifier mais pas par quoi étant donné que tu as montré la ligne a modifier :
var dt_current = (re_url.exec(String(window.location))
    ? new Date(new Number(RegExp.$1)) : new Date()); 
revient à :
var dt_current;
if(re_url.exec(String(window.location)))
    dt_current = new Date(new Number(RegExp.$1));
else
    dt_current =  new Date(); // doit être pour l'initialisation... donc tu dois passer les paramètres ici new Date(annee, mois, jour,...)

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Invité
Invité n'ayant pas de compte PHPfrance

05 mai 2008, 11:13

je vais regarder se que tu viens de me dire

mais sinon j'étais en train de regarder sur la fenêtre d'appel, ça ne serai pas a cet endroit plutot ?
var obj_calwindow = window.open(
		'calendar.html?datetime=' + this.dt_current.valueOf()+ '&id=' + this.id,
		'Calendar', 'width=200,height='+(this.time_comp ? 215 : 190)+
		',status=no,resizable=no,top=200,left=200,dependent=yes,alwaysRaised=yes'
	);
a la place de this.dt_current.valueOf()

mais je cherchais ou etait initialiser dt_current mais je ne trouve pas.

Merci je regarde se que tu ma dis

Invité
Invité n'ayant pas de compte PHPfrance

05 mai 2008, 12:03

j'ai beau changer le new Date()); rien ne change.
J'ai donc essayer de chercher au niveau this.dt_current.valueOf()

quand j'affiche la fenetre cela m'indique http://localhost/Base/calendar.html?dat ... 00718&id=1
mais je ne voie pas a quoi cela correspond j'ai essayer avec strtotime, time, mais je ne retombe jamais sur ce chiffre. Auriez vous une idée du format auquel se champ est utiliser

merci

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

05 mai 2008, 15:28

Si "datetime" est passé dans l'url dans tous les cas alors le 1er cas du if() sera tujours exécuté tant qu'un numérique lui est associé.

1209981600718 correspond à un timestamp.

tu as donc une autre possibilité d'initialiser ton calendrier en passant le timestamp correspondant à ta date en lieu et place de this.dt_current.valueOf().

Mais comme je n'ai pas la totalité du code sous le nez et que limite j'en ai même pas envie je t'invite simplement à chercher de ce coté.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute