Calendrier Mini 2.0

Ce plugin ajoute la balise #CALENDRIER_MINI qui insère un petit widget de navigation par mois dans les dates des évènements.

Fonctionnement du mini calendrier

Le mini calendrier présente un mois à la fois. Les jours du mois comportant des évènements sont surlignés. Un clic sur l’un de ces jours permet de naviguer vers une page qui présentera les évènements de ce jour.

Le mini calendrier comporte deux liens de navigation pour passer au mois précédent ou au mois suivant, ainsi que deux champs de sélection pour aller directement à n’importe quel autre mois ou année.

La navigation d’un mois à un autre se fait immédiatement, sans rechargement de la page. La liste des évènements pour le mois en cours est rechargée en tâche de fond et mise à jour sur le mini calendrier (chargement asynchrone au format JSON).

Les évènements affichés par le mini calendrier peuvent être de n’importe quelle nature (publication des articles du site, commentaires, objets évènements du plugin agenda).

A partir de la version 2.3.0, la liste des événements d’une journée est affichée au survol (tooltip).

Accessibilité et alternative
Le mini calendrier insère également une alternative qui permet aux utilisateurs sans javascript ainsi qu’aux robots d’indexation de disposer des liens vers chaque jour (pour peu qu’il contienne un évènement) du mois en cours ainsi que vers le mois précédent ou le mois suivant.

Insertion du mini calendrier

Le mini-calendrier est inséré simplement dans vos squelettes au moyen de la balise #CALENDRIER_MINI

Cette version 2.0 du plugin reprend la syntaxe des versions précédentes du plugin «Calendrier mini» : #CALENDRIER_MINI{url, url_json}

  • url désigne l’URL de la page sur laquelle envoyer le visiteur lorsqu’il clique sur un jour (#SELF par défaut)
  • url_json désigne l’URL appelée pour charger la liste en JSON des évènements entre deux dates (#URL_PAGE{calendrier_mini.json} par défaut).

Dans cette syntaxe courte, la variable date utilisée est nommée archives et la date courante est automatiquement capturée d’après #ENV{archives}.
Un exemple d’utilisation est :

#CALENDRIER_MINI{#SELF, #URL_PAGE{mes_evenements.json}}

Le plugin supporte également la syntaxe longue utilisée dans le plugin «Agenda» :
#CALENDRIER_MINI{date, var_date, url, url_json}

  • date est la valeur courante de la date ; le mini calendrier se positionnera sur le mois correspondant ;
  • var_date est le nom de la variable date qui sera passée en argument à la page appelée quand le visiteur clique sur un jour ;
  • url désigne l’URL de la page sur laquelle envoyer le visiteur lorsqu’il clique sur un jour (#SELF par défaut) ;
  • url_json désigne l’URL appelée pour charger la liste en JSON des évènements entre deux dates (#URL_PAGE{calendrier_mini.json} par défaut).

Un exemple d’utilisation de cette syntaxe est :

#CALENDRIER_MINI{#ENV{date}, date, #SELF, #URL_PAGE{evenements_mini.json}}

Exemple: afficher les évènements créés dans le plugin «Agenda»

[(#CALENDRIER_MINI{#ENV{date},
  date, 
  #URL_PAGE{jour},
  #URL_PAGE{calendrier_mini_event.json}})]

Dans cet exemple :

  • on utilise le squelette «calendrier_mini_event.json.html» fourni par le plugin «Agenda» pour récupérer les évènements créés dans l’agenda ;
  • la page d’affichage des évènements lorsque l’on clique sur une date (avec au moins un évènement!) utilise le squelette «jour.html», lui aussi fourni dans le plugin «Agenda» ;
  • le squelette «jour.html» utilisant le paramètre d’environnement date pour boucler dans les évènements, on prend soin de passer date en 2ème paramètre de la balise.

Liste des évènements

Les évènements affichés dans le mini-calendrier sont fournis au format JSON par un squelette qui est appelé à chaque changement de mois du mini calendrier.

Par défaut c’est calendrier_mini.json.html qui génère la liste des articles publiés entre start et end fournis tous deux au format «timestamp» (nombre de secondes depuis 1970) dans l’URL.

Pour modifier la liste des évènements affichés dans le mini calendrier, il suffit de modifier le squelette calendrier_mini.json.html (ou de le copier sous un autre nom en passant ensuite la valeur correspondante pour l’argument url_json).

Le title de chaque événement envoyé par le squelette sert à afficher le tooltip au survol de chaque date. Vous pouvez le personnaliser en le préfixant de l’heure de début par exemple, quand cela est pertinent.

Collecte automatique de id_article, id_rubrique et id_mot

Quand elle est utilisée avec la syntaxe sans l’url de la page JSON, la balise #CALENDRIER_MINI collecte automatiquement (comme elle le faisait auparavant) les #ID_ARTICLE, #ID_RUBRIQUE et #ID_MOT du contexte où elle est appelée. Les valeurs de id_article, id_rubrique et id_mot sont alors passées à l’url de la page JSON par défaut.

Dès que vous précisez en dernier argument de #CALENDRIER_MINI l’url de la page JSON qui fournit les événements, il vous appartient d’y préciser les id_article, id_rubrique ou id_mot que vous souhaitez prendre en compte, car ceux-ci ne sont plus transmis automatiquement.
Ce fonctionnement vous permet ainsi de désactiver la transmission automatique au besoin.

Personnalisation de l’apparence

L’apparence du mini-calendrier est prise en charge par la feuille de style css/minical.css. La feuille de style est minimale afin que le mini-calendrier hérite au maximum de l’apparence de votre site. Cette feuille de style peut être personnalisée dans votre dossier squelettes/.
Voici un autre exemple d’insertion du mini-calendrier sans modification de la feuille de style :

Pour des raisons de performance, la feuille de style est insérée inline dans le HTML de la page qui contient le mini calendrier. Si elle référence des images, celles-ci doivent donc être référencées avec leur URL absolue.

Les boutons pour passer vers les mois précédents ou suivants utilisent l’image css/img/month_prev_next-32x16.png qui peut être personalisée dans votre dossier squelettes/.

Le pied du mini-calendrier qui contient le bouton aujourd’hui peut-être masqué simplement en CSS.

En dernier recours, si c’est vraiment nécessaire pour la personnalisation, vous pouvez aussi modifier le squelette formulaires/calendrier_mini.html. Toutefois ceci est déconseillé car hypothèque la compatibilité de votre squelette avec les évolutions futures du plugin.

updated on 6 April 2020

Discussion

104 discussions

  • Bonjour et merci pour ce plugin

    J’utilise
    [(#CALENDRIER_MINI#ENVdate,
    date,
    #SELF,
    #URL_PAGEcalendrier_mini_event.json
    )]

    avec une page affichant x évenements
    Comment faire que lorsqu’on clique dans le calendrier sur une date on arrive directement sur la même page à l’évenement concerné (par ex par une ancre)

    Bruno

    Reply to this message

  • Clement

    Bonjour ! Est-il possible d’afficher un calendrier mini dans un squelette article, en listant uniquement les événements rattachés à cet article ?

    Merci !!

    Reply to this message

  • Bonjour, j’ai un petit souci avec le plugin calendrier mini v.2.3.8 (SPIP 3.0.17).
    J’affiche le mini calendrier dans la page principale de mon site

    #CALENDRIER_MINI{
      #ENV{date},
      date,
      #URL_PAGE{giorno},
      #URL_PAGE{calendrier_mini.json}
    }

    et, comme prévu, le calendrier s’ouvre sur le mois courant et le jour courant est mis en évidence grâce à la classe CSS .ui-datepicker-today.
    Lorsque je clique sur un jour j’arrive sur une page comme celle-ci

    #URL_SITE/spip.php?page=giorno&date=2015-04-02

    qui contient la liste des événements du jour sélectionné et le mini calendrier ouvert sur le mois correspondent (avril 2015 dans l’exemple).
    Dans cette page je voudrais mettre en évidence le jour courant (le 2 avril), mais je n’y arrive pas.
    Comment dois-je faire ?

    Reply to this message

  • Bonjour,
    J’aime beaucoup ce mini calendrier, mais j’ai évidemment une demande spéciale que je n’arrive pas à mettre en oeuvre.
    Le calendrier renvoie sur des articles.
    Le problème c’est que ce sont 365 articles, et qu’il faut donc tourner chaque année, autrement dit l’année n’a pas d’importance.
    Je veux que chaque 17 mars on ait l’article du 17 mars.
    Je ne sais pas où changer quoi, ou bien quels paramètres passer à la balise pour pouvoir, effectivement, afficher l’article du 17 mars tous les 17 mars.
    J’ai une erreur actuellement sans rien toucher à l’original, juste l’affichage de la balise : le clic renvoie une erreur 404 au lieu d’aller dans l’article, même si on est dans la bonne année.
    Et, donc, il faudrait que ça marche même si l’article est daté d’une autre année. I faudrait que l’année soit non significative.
    Merci beaucoup

    Reply to this message

  • Bonjour,
    depuis deux jours et quelques manip de ma part,
    mon mini-calendrier en page d’accueil est vide alors qu’il y a des évènements à venir.
    J’ai déjà eu ce problème mais je ne sais plus comment je l’avais résolu !

    Voici l’adresse du site :
    http://www.clg-villon-stgelydufesc.ac-montpellier.fr/spip/?var_mode=calcul

    Merci d’avance pour votre aide.
    Stéphane

    Reply to this message

  • 5
    Jaseur Boreal

    Bonjour,

    Comment faire pour un questionnaire qui ajoute directement un évènement par lecteurs non inscrits

    Avec mini-calendrier, ajouter un événement quand on ést déjà rédacteur répertorié et inscrit dans le site : c’est simple, avec :
    Ajouter un évènement (Accès réservé)

    Mais proposer à ses lecteurs d’ajouter directement l’évènement en remplissant un questionnaire formidable, plutôt qu’avoir à extirper d’un courriel les informations de l’évènenement, cela serait mieux.

    Comment faut-il procéder, pour qu’un questionnaire type formidable (protégé par antispam) enregistre les informations d’un lecteur qui signale un évènement en l’ayant rempli avec quelques précisions minimum ?

    Un exemple est donné ici sous un autre CMS : http://www.avantchoeur.com/index.php?option=com_icagenda&view=submit&Itemid=245

    Comment dois-je procéder dans SPIP ?

    Merci de tous vos conseils et suggestions.

    • Salut,

      Moi je regarderais le code du plugin Formitable : qui permet d’enregistrer les résultats dans d’autres tables que spip_formulaires

      en fait c’est tout simple tu récupère tes datats en array, et ensuite tu fait ton job dans la partie traitement

    • Jaseur Boreal

      Bonjour,

      Merci pour les suggestions,

      Pour un spipeur novice dans la mécanique des codes comment faudrait-il faire pour :

      • Enregistrer les résultats d’un formidable-formulaire dans d’autres tables .
      • Par exemple enregistrer titre, descriptif et contenu d’une info-événement proposée dans la table article
      • Qu’un lien existe pour apparaitre avec mini-calendrier-agenda
      • Enregistrer auteur, coordonnées du lecteur-signataire dans une table autre que rédacteur

      Excusez mes faibles connaissances, mais je ne sais pas ce que veux dire “datas en array”, ce n’est pas simple pour tout le monde.

      Ensuite comment fait-on pour récupérer les datas ? ’en “array” ?
      Et comment traiter ces “datas en array” pour qu’elles deviennent articles proposés ?

      Merci de votre aide.

    • Ha oui, pardon c’est vrai que ça fait extra-terrestre ! datas=>données , array=>tableau en générale en php comme dans les autres langages on stocke les données a préparer dans un tableau/array ... ou un objet (mieux, plus class ^^, mais peut courant chez spip)

      La pour le coup il faut faire du php même sans avoir un niveau élevé, y’a pas moyen de faire sans.

      Par exemple : http://contrib.spip.net/Formulaire-de-participation

      Nous montre comment utiliser ou ajouter a un formulaire formidable des traitements :
      en ajoutant un dossier traiter et les fichiers correspondants :

      http://zone.spip.org/trac/spip-zone/browser/_plugins_/formidable_participation/traiter/participation.php?rev=86847

      et le Yaml qui s’occupe de l’affichage du formulaire des traitements :

      http://zone.spip.org/trac/spip-zone/browser/_plugins_/formidable_participation/traiter/participation.yaml?rev=86847

      c’est donc dans le fichier traiter/xxx.php que l’on peut, utiliser l’API editer_objet, ou enregistrer dans une autre tables les données .... pour faire ce que vous souhaitez.

    • Jaseur Boreal

      Merci
      de toutes ces précisions qui offrent pour 2015
      quelques directions pour améliorer nos spipiennes connaissances.
      Une étape à la fois, et c’est “formidable”
      ;-)

    • ;-) Cela dit le post devrait du coup plutôt être sur le forum de Formidable, une autre doc qui peut être utile sur les traitements :

      Carnet FormiTable

      je m’en suis déjà servi comme base sur un projet de demandes de devis, dont certains formulaires avaient des parties/saisies communes, et ou on utilisait le stockage des réponses formidable ET la création de contacts, organisations, GIS, + une table externe

      donc ce que vous souhaitez faire est faisable/réalisable, bon courage et bonne année 2015

    Reply to this message

  • 2

    Bonjour

    je nage depuis quelques heures, et je butte sur un problème qui à l’air trés basique mais je ne trouve pas de solutions.

    Config : Spip 3.0.17 / Mini Calendrier 2.3.6 / Agenda 3.14.4

    Sur la home page de mon site j’affiche un mini-calendrier, je souhaite faire pointer les liens présents dans mon calendrier sur une page détaillés de mon événements et pas une liste d’événements.

    J’utilise

    [(#CALENDRIER_MINI{#ENV{date},
    date,
    #URL_PAGE{agenda},
    #URL_PAGE{calendrier_mini_event.json}})]

    qui me génére des urls de type
    www.monsite.com/spip.php?page=agenda&date=2014-10-31

    Une fois dans mon squelette agenda.html, je ne sais pas comment faire une boucle EVENEMENTS qui boucle uniquement sur mon événement, impossible de trouver un critère de date qui fonctionne.

    Si je retourne dans mon admin /ecrire/?exec=evenement&id_evenement=1 en cliquant sur Voir en ligne
    j’arrive sur une URL
    www.monsite.com/spip.php?evenement1
    et avec un squelette événement.html j’ai exactement ce qu’il me faut l’id en paramètre d’url

    Bref comment faire en sorte que ma balise #CALENDRIER_MINI envoi les liens sur une url avec l’id de l’événement en paramètre ?

    • Bonjour,

      Si tu n’as qu’un événement par jour tu peux modifier le squelette jour pour y inclure les détails de ton événement. ou alors modifier #URL_PAGE{page-jour} ci-dessous en #URL_PAGE{page-evenement}

      (je n’ai pas testé)

      La doc dit :
      [(#REM) mini calendrier :
      1er arg la date,
      2eme le nom de la variable date (optionel : ’date’ par defaut)
      3eme l’url sur laquelle boucler (optionel : url courante par defaut) ]

                  [(#CALENDRIER_MINI{#ENV{date},
                          date,
                          #URL_PAGE{page-jour},
                          #URL_PAGE{calendrier_mini_event.json}})]

      dd

    • ok merci

      ça marche

    Reply to this message

  • 1

    Bonjour à tous,

    Je souhaiterais apporter une modification au Calendrier mini affiché sur mon site mais je ne vois pas où changer le code pour que ça fonctionne comme je le souhaite.

    En fait, je souhaite remplacer le select des mois et années pour ne simplement afficher que le mois et l’année sans ascenseur de sélection.

    Si vous avez une piste pour éclairer ça serait bien urbain

    En vous remerciant d’avance !

    F.

    • Je m’auto-réponds, c’est une option de configuration du mini calendrier !

      Pourquoi toujours chercher les complications alors que c’est si simple ;-)

      F.

    Reply to this message

  • Merci Franky

    Tu me dépannes bien sur ce coup là !

    http://contrib.spip.net/Calendrier-...

    Reply to this message

  • Est-il possible d’exploiter les “url” qui sont définies dans le fichier json, car sauf erreur elles n’ont pas d’usage.

    Reply to this message

Ajouter un commentaire

Who are you?
  • [Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom