Page 1 sur 1

Enfin un calendrier simple et efficace !

Posté : 22 sept. 2006, 09:53
par Cobaye
Bonjour,

Après plusieurs recherches de scripts de calendrier, j'ai décidé de développer ma propre class, voici une présentation :
- Affichage possible, en popup, en inclusion, en div ...
- Afficher un évènement avec le titre en rollover sur une date
- Afficher un évènement s'étalant sur une période avec le titre en rollover sur une date
- Définir un évènement par défaut
- Affiche ou pas une sélection pour une semaine
- Changer de mois sans recherger la page (merci ajax)
- ...

Le code est simple et très documenté ! et même si j'ai prévu pas mal de personnalisation par feuille de style etc... un développeur n'aura aucun mal à modifier à souhait ce calendrier.

Mais bon j'ai assez parlé : voici la page de test avec lien vers la doc et les source.
http://www.olecorre.com/calendar

exemple de code pour l'utiliser :

Code : Tout sélectionner

$mois = isset($_GET['mois']) ? $_GET['mois'] : date('m'); $annee = isset($_GET['annee']) ? $_GET['annee'] : date('Y'); /** * création du calendrier */ $calendrier = new calendrier($annee, $mois); /** * définit les boutons suivant, précédent et l'évènement pas défaut */ $calendrier->affec_previous($mois, $annee, "mois_prec.jpg"); $calendrier->affec_next($mois, $annee,"mois_suiv.jpg"); $calendrier->affec_event_default("test",time()); /** * ajout d'évènement * affec_day($day, $link='#', $class='',$titre='') */ $jour1 = mktime(0,0,0,9,18,2006); $jour2 = mktime(0,0,0,9,20,2006); $calendrier->affec_day($jour1, '#','','test event'); $calendrier->affec_day($jour2, '#','','test event 2'); /** * ajout d'évènement sur plusieurs jours * affec_periode($debut, $fin, $link='#', $class='',$titre='') */ $debut1 = mktime(0,0,0,9,18,2006); $fin1 = mktime(0,0,0,9,25,2006); $debut2 = mktime(0,0,0,9,28,2006); $fin2 = mktime(0,0,0,10,4,2006); $calendrier->affec_periode($debut1,$fin1, '#', '', 'test periode 1'); $calendrier->affec_periode($debut2,$fin2, '#', '', 'test periode 2'); /** * Affiche une première colonne permettant de sélectionner la semaine * affec_semaine($affiche=true, $link='#', $variable1="datedebut", $variable2="datefin", $titre=">") */ $calendrier->affec_semaine(false); /** * Affiche le calendrier */ echo $calendrier->affiche();
Cdt

PS: Merci à Cyrano pour la doc et les tests de cette class

Posté : 12 oct. 2006, 12:10
par jojolapine
Je suis actuellement dans la recherche d'un bon calendrier ou je peut rajouter des évènements, ne pas recharger la page, etc... le tient me convient très bien, seulement je viens de voir une erreur sur ta page de démonstration...
si on clique sur la flèche mois suivant (ou même précédent), on voit le calendrier se décaler sur la droite et en bas et si on regarde le source, on voit qu'il y a des <table> qui apparraises à outrance...
Voilà, dans l'attente d'une correction :wink: et je prend ce beau calendrier
merci

Posté : 12 oct. 2006, 14:08
par Cobaye
Effectivement une bug sous mozilla, je l'ai corrigé.

Posté : 12 oct. 2006, 14:19
par jojolapine
Merci! je m'en vais de suite l'intégrer!! :wink:

Posté : 12 oct. 2006, 15:19
par jojolapine
rebonjour!
je viens humblement apporter quelques modifications pour rendre valide xhtml le calendrier:
j'ai remplacer les lignes:
$previous = "<span class=\"".$class."\"><a href=\"javascriptDEUX_POINTS go(".$precedentmois.",".$precedentannee.");\">";
et
$next = "&nbsp;<span class=\"".$class."\"><a href=\"javascriptDEUX_POINTS  go(".$suivantmois.", ".$suivantannee.");\">";
Remplacer DEUX_POINTS par : (je sais pas pourquoi ça passait pas dans le php)
par :
$previous = "<span class=\"".$class."\"><a href=\"index.php\" onClick=\"go(".$precedentmois.",".$precedentannee."); return false;\">";
et
$next = "&nbsp;<span class=\"".$class."\"><a href=\"index.php\" onClick=\"go(".$suivantmois.", ".$suivantannee."); return false;\">";
et j'ai aussi remplacer (mais ça ne fait pas partie du code à proprement parler juste des exemples):
<span id="calendrier">
<?php
include "./includes/calendrier.php";
?>
</span>
par
<div id="calendrier">
<?php
include "./includes/calendrier.php";
?>
</div>
voilà ce ne sont pas desmodifications majeures, juste deux petites améliorations quand aux standards du web.
Je rajoute une chose, que je n'ai pas eu le temps de dévelloper, si à la place de index.php que j'ai mis dans le href, on met une url avec des gets qui vont bien, on peut rendre accéssible le calendrier aux personnes et/ou navigateurs qui n'acceptent pas l'ajax. à dévellopez ça serait un bon plus :wink:

Posté : 01 févr. 2007, 23:10
par momox
Juste une question, comment faire pour que en cliquant sur une date du calendrier, celle-ci soit reportée dans un champ input ?
Parce que actuellement, je me vois mal affecter tous les jours un par un...
Merci d'avance ;)

Posté : 01 févr. 2007, 23:59
par jojolapine
ben si le champ input à un id fixe..., il doit y avoir moyen de trifouiller dans la source, pour que chaque date soient comme ça:
<td onClick="put_in_input(this.innerHTML);">28</td>
et après à toi de faire la fonction put_in_input en conséquence...
ça me parait pas trop difficile ;-)

Posté : 11 avr. 2007, 05:45
par Pierre AP
Bonjour à tous,

Vraiment intéressant pour moi, vos échanges.

Mais jojolapine tu trouves que faire la fonctionput_in_put n'est pas trop difficile... Mais aurais-tu un petit exemple, comme à l'école.

Merci, Pierre AP

Posté : 11 avr. 2007, 11:57
par jojolapine
bonjour,
la fonction put_in_input, ressemblerai à ça:

Code : Tout sélectionner

function put_in_input(what,id='valeur_par_defaut'){ document.getElementByID(id).value=what; }
après pour que celà fonctionne, il faut que ton calendrier soit généré comme j'avais dis plus haut...
et il faut que tu ai un input avec pour id 'valeur_par_defaut'... et hop ça fonctionne
(à noter que si tu ne veux pas t'embeter à faire une fonction un peu trop générique, et que n'en aura pas besoin, c'est à dire si tu n'as qu'un input à remplir et qu'il aura toujours le même id, tu peux enlever le deuxième argument de la fonction et noter en dur l'id dans la fonction getElementByID() )
voilou ;-)

Posté : 11 avr. 2007, 14:55
par Pierre AP
Merci beaucoup jojolapine !
J'essaye...

Amitiés, Pierre AP

Posté : 28 nov. 2007, 11:56
par profy
pareil merci beaucoup j'essai aussi :wink:

Posté : 22 janv. 2008, 12:06
par jojolapine
Bonjour,
Je reviens parler de ce calendrier après plusieurs mois, car j'ai perdu une partie des sources...
Et je me retrouve face à un problème...
J'ai à partir de quelques sujet sur phpfrance reconstitué le tout...
L'affichage php fonctionne, sauf que la partie javascript pose problème...
J'ai une erreur qui me dit que la fonction go() n'est pas définie...
Et je ne me rappel pas qu'il fallait inclure un fichier .js... bref je suis un peu perdu!
Une petite demande supplémentaire: serait-il possible de remettre les codes en entier dans le premier message, vu que l'url n'est plus à jour...?
Merci d'avance!

cobaye

Posté : 31 janv. 2008, 12:53
par bruno.rotrou
slt
j'essais d'aller sur ta page de test et vers les code de ta class mais la page ne fonctionne pas
pb serveur apparement

voila bonne continuation et merci pour toutes ces contributions

Posté : 02 févr. 2008, 18:55
par Cobaye
Je viens de remettre la page de test et le code source en ligne, je dois avoir une nouvelle version plus complète du calendrier et encore plus personnalisable, j'essaierai de la mettre en place bientot. en tout cas j'ai utilisé ce calendrier sur une vingtaine de site et ca tourne nikel.

Posté : 18 juin 2008, 14:31
par BaLiSTiK
Bonjour,
je dois gérer une application pour gerer les congés, missions etc de divers chercheurs et je trouve que ton script conviendrais bien. Par contre, j'aimerai savoir, comment le modifier pour que le calendrier des jours ne s'étale que sur une ligne, et non une ligne par semaine.
J ai un peu essayer de modifier qq trucs mais le résultat est loin d'atteindre les espérences escomptés :(.
J ai cherché sur le net ce genre de script mais malheureusement je n'en ai pas trouvé (si quelqu'un en a un, je suis preneur).
Merci d'avance ;)