SPIP 3, Agenda et FullCalendar

Ceci est une « contribution pédagogique », qui montre par l’exemple comment développer une nouvelle fonctionnalité pour SPIP.

Depuis SPIP 3, l’affichage d’un agenda sous forme de calendrier par jour/semaine/mois à changé. Les filtres |agenda_memo et apparentés sont désormais obsolètes. Il en est de même pour les filtres agendafull_memo et apparentés du plugin Agenda.

Désormais, l’affichage d’un calendrier s’appuie sur la librairie javascript FullCalendar. Voici un tutoriel pour comprendre comment s’en servir avec Agenda 3.0.

Pour une première approche, vous pouvez utiliser le plugin Agenda Fullcalendar facile.

Attention : le présent tutoriel n’est plus adapté aux version de SPIP > 3.2, car cette dernière change la version de fullcalendar utilisée.. Vous pouvez utiliser la nouvelle version du tutoriel.

Souhait

Nous souhaitons afficher tous les événements (publiés) du site sous forme calendaire, en proposant d’abord un affichage par mois, avec possibilité de basculer en affichage par semaine ou par jour.

Agenda souhaité au final

Pré-requis

  • SPIP 3.0.x, en ayant conservé l’organiseur dans plugins-dist.
  • Plugin Agenda 3.6.11 minimum.
  • Compréhension de la mécanique des squelettes de SPIP.
  • Quelques évènements à afficher.

Vous n’avez pas besoin d’installer la librairire FullCalendar : elle est livrée avec SPIP.

Principe de base

Pour afficher notre agenda nous allons :

  1. créer un squelette agenda.html, avec un div dont l’attribut id est agenda.
  2. appeler dans le squelette le script fullcalendar et ses feuilles de styles.
  3. utiliser ce script pour afficher l’agenda dans dans la div#agenda.
  4. créer un squelette agenda.json.html fournissant au script les données à afficher dans l’agenda.

Fichiers manipulés

 
Dans cet article nous manipulons deux fichiers squelettes : 

  • agenda.html (qui contient le code nécessaire à l’affichage du calendrier).
  • agenda.json.html (qui nous permet de générer une liste d’événements compatible avec le script fullcalendar).

Si l’un de ces squelette existe déjà, je vous invite à utiliser le mécanisme de surcharge de SPIP.

Création du squelette

Il nous faut créer un squelette agenda.html complet (à savoir une page SPIP classique avec les balises <head><body> etc), dans lequel nous mettons un div dont l’attribut id est agenda à l’endroit où nous souhaitons que l’agenda s’affiche.

Au dessus de ce div, nous allons appeler :

  • la version compressée du script fullcalendar
  • les styles associés à ce script.

Pour ce faire, nous utilisons la balise #CHEMIN :

<link rel='stylesheet' type='text/css' href='#CHEMIN{lib/fullcalendar/fullcalendar.css}' />
<script type='text/javascript' src='#CHEMIN{lib/fullcalendar/fullcalendar.min.js}'></script>
<div id="agenda">
</div>

Appel à l’agenda

Nous allons maintenant ajouter les fonctions javascript qui permette d’afficher l’agenda. Pour ce faire, nous allons mettre au dessus du div (cela pourrait être dedans ou en dessous, cela importe peu) le code suivant, que je vais commenter :

<script type="text/javascript">/*<![CDATA[*/
jQuery(document).ready(function() {

	
	jQuery('#agenda').fullCalendar({
			editable: false,
			events: "[(#URL_PAGE{agenda.json})]",
			header: {
				left: 'prevYear,prev,next,nextYear today',
				center: 'title',
				right: 'month,agendaWeek,agendaDay'
			},
			firstDay: 1,
			monthNames:['<:date_mois_1|attribut_html:>','<:date_mois_2|attribut_html:>','<:date_mois_3|attribut_html:>','<:date_mois_4|attribut_html:>','<:date_mois_5|attribut_html:>','<:date_mois_6|attribut_html:>','<:date_mois_7|attribut_html:>','<:date_mois_8|attribut_html:>','<:date_mois_9|attribut_html:>','<:date_mois_10|attribut_html:>','<:date_mois_11|attribut_html:>','<:date_mois_12|attribut_html:>'],
			monthNamesShort:['<:date_mois_1_abbr|attribut_html:>','<:date_mois_2_abbr|attribut_html:>','<:date_mois_3_abbr|attribut_html:>','<:date_mois_4_abbr|attribut_html:>','<:date_mois_5_abbr|attribut_html:>','<:date_mois_6_abbr|attribut_html:>','<:date_mois_7_abbr|attribut_html:>','<:date_mois_8_abbr|attribut_html:>','<:date_mois_9_abbr|attribut_html:>','<:date_mois_10_abbr|attribut_html:>','<:date_mois_11_abbr|attribut_html:>','<:date_mois_12_abbr|attribut_html:>'],
			dayNames:['<:date_jour_1|attribut_html:>','<:date_jour_2|attribut_html:>','<:date_jour_3|attribut_html:>','<:date_jour_4|attribut_html:>','<:date_jour_5|attribut_html:>','<:date_jour_6|attribut_html:>','<:date_jour_7|attribut_html:>'],
			dayNamesShort:['<:date_jour_1_abbr|attribut_html:>','<:date_jour_2_abbr|attribut_html:>','<:date_jour_3_abbr|attribut_html:>','<:date_jour_4_abbr|attribut_html:>','<:date_jour_5_abbr|attribut_html:>','<:date_jour_6_abbr|attribut_html:>','<:date_jour_7_abbr|attribut_html:>'],
			buttonText: {
					today: '<:date_aujourdhui|attribut_html:>',
					month: '<:organiseur:cal_par_mois|attribut_html:>',
					day: '<:organiseur:cal_par_jour|attribut_html:>',
					week: '<:organiseur:cal_par_semaine|attribut_html:>'
			},
			weekMode : 'liquid',
			loading: function(bool) {
				if (bool) $('#calendrier-loading').show();
				else $('#calendrier-loading').hide();
			},
			timeFormat: {
				
				agenda: "H'h'mm{ - H'h'mm}", 
				
				'': "H'h'(mm)" 
			},
			axisFormat: "H'h'(mm)",
			allDayText:'<:organiseur:cal_jour_entier|attribut_html:>',
			columnFormat: {
				month: 'ddd',    
				week: 'ddd d/M', 
				day: 'dddd d/M'  
			},
			titleFormat: {
				month: 'MMMM yyyy',                             
				week: "d [ MMM] [ yyyy]{ '&#8212;' d MMM yyyy}", 
				day: 'dddd d MMM yyyy'                  
			},
			dayClick: function(date, allDay, jsEvent, view) {
				if(view.name=='month'){
					$('.fc-button-agendaWeek').click();
					$('#calendrier').fullCalendar( 'gotoDate', date );
				}
				else
					if(view.name=='agendaWeek'){
						$('.fc-button-agendaDay').click();
						$('#calendrier').fullCalendar( 'gotoDate', date );
					}
			},
			isRTL : [(#LANG_DIR|=={rtl}|?{true,false})]
	})

});
/*]]>*/</script>
  • l. 2 jQuery(document).ready(function() signifie qu’à la fin du chargement du document, le navigateur va exécuter la fonction dans les accolades qui suivent.
  • l. 5 $('#agenda').fullCalendar signifie que nous allons demander à javascript de modifier le div dont l’id est égale à agenda pour y mettre à la place .…l’agenda.
  • Le code entre parenthèse puis accolade correspond aux options passées à l’agenda (l. 5-59) :
    • l. 6 : on ne peut éditer les évènements depuis l’agenda.
    • l. 7 : on récuperera la liste des évènements via un squelette agenda.json.html, nous détaillerons ce squelette dans la partie suivante
    • l. 8-12 : qu’affiche-t-on dans l’entête de l’agenda ? :
      • l. 9 : à gauche, on met les boutons de navigation par mois/semaines/jours (selon le type de calendrier) et par années (dans tout les cas).
      • l. 10 : au centre, on affiche le titre de l’agenda, correspondant à la période affichée (par ex. « Août 2012 »).
      • l. 11 : à droite, on affiche la bascule vers l’agenda en mode mois, semaine ou jour.
    • l. 13 : le premier jour de la semaine est le lundi (=1)
    • l. 14 : noms des mois, définis avec les chaînes de langues de SPIP.
    • l. 15 : noms des mois en abrégé.
    • l. 16 : noms des jours.
    • l. 17 : nom des jours en abrégé.
    • l. 18-23 : textes des boutons.
    • l. 24 : selon les mois, on affichera 4, 5 ou 6 semaines, mais en faisant varier visuellement la hauteur des semaines, pour avoir un mois dont la hauteur est constante. Je renvoie à la documentation sur weekMode.
    • l. 25-27 : permet d’afficher un contenu le temps que l’agenda se charge. Nous en parlerons plus loins.
    • l. 29-34 : formatage des heures dans l’agenda :
      • l. 31 : lorsqu’on est par semaine ou par jour, on affiche l’heure et les minutes.
      • l. 33 : dans les autres cas, juste l’heure.
    • l. 35 : formatage des heures sur l’axe vertical (pour l’affichage par jours).
    • l. 36 : texte indiquant qu’un événement dure une journée entière.
    • l. 37-41 : formatage des dates dans les entêtes de colonnes :
      • l. 38 : pour l’affichage par mois.
      • l. 39 : pour l’affichage par semaines.
      • l. 40 : pour l’affichage par jours.
    • l. 42-46 : titre de l’agenda :
      • l. 43 : lors de l’affichage par mois.
      • l. 44 : lors de l’affichage par semaines.
      • l. 46 : lors de l’affichage par jours.
    • l. 47-57 : action à executer lorsqu’on clique sur un jour.
    • l. 58 : notre agenda doit-il se lire de gauche à droite ou de droite à gauche ?

D’autres options sont bien sûr possible : on se reportera à la documentation de FullCalendar.

Sélection des évènements à afficher

Pour pouvoir afficher les évènements, il va falloir nous fabriquer un squelette agenda.json.html (cf. l. 7) qui retournera les évènements qui nous intéreressent sous forme de donnée JSON.

La page spip.php?page=agenda.json sera automatiquement appelée par FullCalendar, qui lui passera deux arguments, variant selon la période demandée :

  • start, correspondant au timestamp de la date de début.
  • end, correspondant au timestamp de la date de fin.

Dans le squelette agenda.json.html correspondant à cette page, nous pourrons récuperer ces informations via : #ENV{start} et #ENV{end} (voir mon article sur la balise #ENV). On pourrait éventuellement passer d’autres arguments, en appliquant le filtre |parametre_url sur #URL_PAGE{agenda.json}.

Voilà un squelette agenda.json.html basique :

#HTTP_HEADER{Content-Type: application/json; charset=#CHARSET}
[<BOUCLE_evenements(EVENEMENTS){', '}{par date_debut}	
{agendafull date_debut,date_fin, periode,
	#VAL{Y}|date{#ENV{start}}, #VAL{m}|date{#ENV{start}},     #VAL{d}|date{#ENV{start}},
	#VAL{Y}|date{#ENV{end}}, #VAL{m}|date{#ENV{end}}, #VAL{d}|date{#ENV{end}}}
	>
					[(#ARRAY{id,#ID_EVENEMENT,
title,[(#TITRE|html2unicode|unicode2charset)],
allDay,[(#HORAIRE|=={non}|?{#EVAL{true},#EVAL{false}})],
start,#DATE_DEBUT,
end,#DATE_FIN,
url,#URL_ARTICLE,
description,[(#DESCRIPTIF|html2unicode|unicode2charset)]}|json_encode)]
</BOUCLE_evenements>]

Je commente rapidement ce squelette :

  • l. 1. On demande à SPIP de :
    • Ne pas insérer de boutons d’administration.
    • Dire au navigateur que la page retournée est du json, et fournir le charset.
    • l. 2 et l .15, les crochets servent à indiquer que nous retournons plusieurs objets JSON, chacun correspondant à un évènements.
    • l. 2 nous bouclons sur les évènements. Entre chaque élèment de la boucle, nous affichons une virgule ({", "}). Nous trions par date de début : ceci servira plus loin lors de l’affichage des données sans Javascript.
    • l. 3-5 pour sélectionner les évènements, nous utilisons le critère agendafull. Les options de ce critère nous indique :
      • date_debut : que le champ date_debut servira pour repérer … date de début de sélection.
      • date_fin : que le champ date_fin servira pour repérer … date de fin de sélection.
      • periode que la période sélectionné sera déterminée par les options suivantes.
      • #VAL{Y}|date{#ENV{start}}, #VAL{m}|date{#ENV{start}},     #VAL{d}|date{#ENV{start}} que le début de la période correspond à la date passée dans #ENV{start}. La syntaxe un peu absconse que vous voyiez issu permet d’extraire, respectivement, l’année, le mois et la jour depuis un timestamp.
      • #VAL{Y}|date{#ENV{end}}, #VAL{m}|date{#ENV{end}}, #VAL{d}|date{#ENV{end}}</cpde> que la fin de la période correspond à la date passée dans <code>#ENV{end}.
  • l. 7-14 : nous remplissons un tableau SPIP via #ARRAY, puis nous le transformons en objet JSON, via le filtre ||json_encode. Ce tableau comprend les entrées suivantes :
    • id : identifiant unique pour FullCalendar. Ca tombe bien, SPIP attribut un identifiant à chaque évenement : #ID_EVENEMENT
    • title : le titre. On transforme les entité HTML en caractère unicode (|html2unicode) puis on s’assure de proposer des données avec le bon charset (|unicode2charset).
    • allDay : on précise si l’évènement dure toute la journée. Utilisée pour l’affichage par jour. Pour préciser cela, on s’appuie sur le champ #HORAIRE qui contient justement cette information. On utilise #EVAL pour indiquer qu’on insére une valeur booléenne et non pas textuelle.
    • start : date de début. On garde le format SQL.
    • end : date de fin. On garde le format SQL.
    • url : lien. Pour le coup, on renvoie vers l’article.
    • description : description de l’évènement. Là encore, on converti en Unicode, puis dans le charset correct.

À noter que l’on pourrait définir d’autres données pour chaque évènement : on se refera à la documentation de l’objet Event de FullCalendar. Par exemple, on pourrait indiquer des classe HTML en fonction de la rubrique.

Il vous faut également créer un fichier agenda.json_fonctions.php contenant les lignes suivantes :

<?php

include_spip('inc/json');
?>

Ceci assurera que le filtre json_encode est bien chargé [1].

Et pour les personnes sans Javascript ?

Et oui, tout le monde n’a pas de Javascript. Comment on fait alors ? La solution consiste à afficher un calendrier sous forme de liste dans un div dont l’id est calendrier-loading. Si Javascript est activé, FullCalendar va masquer ce div.

Comme on a déjà fabriqué une boucle dans le squelette agenda.json.html, nous allons nous en reservir, afin d’éviter de dupliquer les critères. Pour ce faire, nous allons utiliser la boucle DATA de SPIP 3.

Nous mettons donc dans le squelette agenda.html :

<B_agenda>
<div id="calendrier-loading">
<p class="pagination">#PAGINATION</p>
<BOUCLE_agenda(DATA){source json, #PRODUIRE{fond=agenda.json, start=0,end=2147483647,_=#REM|time}}{pagination 15}>
    <dl>
        [<dt><:agenda:evenement_titre:></dt>
        <dd><a href="#VALEUR{url}">(#VALEUR{title})</a></dd>]
        
        [<dt><:agenda:evenement_date:></dt>
        <dd>(#VALEUR{start}|Agenda_affdate_debut_fin{#VALEUR{end},#VALEUR{allDay}|=={true}|?{non,oui}})</dd>]
        
        [<dt><:agenda:evenement_descriptif:></dt>
        <dd>(#VALEUR{description})</dd>]
    </dl>
</BOUCLE_agenda>
<p class="pagination">#PAGINATION</p>
</div>
</B_agenda>
  • l. 1-3 : partie optionnelle avant de la boucle, avec la pagination éventuelle.
  • l. 4 : code de la boucle. Nous bouclons sur des données ((DATA)) au format json ({source json) extrait du fichier produit (#PRODUIRE) par le squelette agenda.json.html avec la valeur de start égale à 0, c’est à dire au 1 janvier 1970 à minuit, et la valeur end égale à 2147483647, c’est à dire à la date maximale gérée par les ordinateurs actuel, le 19 janvier 2038, 3h14m7s [2]. Ainsi, nous sommes sûr de récuperer tout les évènements de l’agenda. L’option _=#REM|time permet de s’assurer de ne pas avoir de cache, puisque nous passons comme argument le moment d’appel (|time). Nous paginons de 15 en 15.
  • l. 5-14 : nous affichons les données pour chaque évènement, via #VALEUR{donne}. Ces données sont tirées du JSON.
  • l. 16 et suivante ; partie optionelle arrière de la boucle.

On obtient alors un agenda, certe sommaire, mais au moins existant sans Javascript :

Agenda pour les personnes sans Javascript

Conclusion

Vous voilà maintenant prêt à avoir un agenda avec FullCalendar. Bien sûr, il y aurait beaucoup de chose à améliorer, cependant cet article aborde déjà beaucoup de notions :
-  produire du JSON avec SPIP.
-  le formatage de FullCalendar.
-  les boucles DATA.

Notes

[1Dans certain cas, que je n’ai pas encore réussi à déterminer précisément, il n’y a pas besoin de cela...

[2Voir l’article sur le bug de l’an 2038.

Discussion

65 discussions

  • 2

    Bonjour,
    Merci pour votre plugin. J’essaye d’afficher le nom des participants à un événement directement sur l’agenda. Je n’arrive pas à placer ma boucle.... directement dans l’agenda.

    Est-ce possible ?

    • 1. Oui c’est possible, en utilisant une boucle sur la table evenements_participants
      2. Cela étant cela pose des soucis de confidentialité et respect de la vie privé/RGPD. A reflechri donc très sérieusement avant de mettre en œuvre.

    • Hello :)
      Je ne l’affiche qu’en étant connecté en admin (pas sur la partie public) sous forme de tableau.

      <BOUCLE_evenement(EVENEMENTS){id_article}>
      				<BOUCLE_personnes_inscrites(spip_evenements_participants){id_evenement}{par date}{mois_relatif=0-6}>
      				<tr class="row_odd odd">
      				<td headers="id57dd_c0">[(#DATE_DEBUT|affdate{'d-m-Y'})]</td>
      				<td headers="id57dd_c1">[(#DATE_DEBUT|heures)] : [(#DATE_DEBUT|minutes)]</td>
      				<td headers="id57dd_c2">#NOM</td>
      				<td headers="id57dd_c3">#EMAIL</td>
      				<td headers="id57dd_c4"><a class="btn btn-primary btn-sm" role="button" href="?exec=agenda_inscriptions&id_evenement=#ID_EVENEMENT">Modifier</a>
      				</td></tr>
      				</BOUCLE_personnes_inscrites>
      				</BOUCLE_evenement>

      Pour l’affichage sur l’agenda, je duplique donc le agenda.json.html en agenda2.json.html je modifie le squelette de l’agenda pour recherche cette boucle. J’arrive à afficher les évenéments, mais je bloque pour l’affichage des participants (sur l’agenda). La boucle BOUCLE_personnes_inscrites" est bien à placer dans le json ?

    Répondre à ce message

  • à partir des éléments téléchargés sur la version gratuite de Full Calendar https://fullcalendar.io/
    J’ai adapté ainsi le code pour spip 4 en m’inspirant du fichier full-height.html que vous trouverez dans le dossier Examples

    <html>
    <head>
    [<link rel="stylesheet" href="(#CHEMIN{css/main.css})" type="text/css" />]
    [<script src="(#CHEMIN{js/main.js})" type="text/javascript"></script>]
    [<script src="(#CHEMIN{js/locales/fr.js})" type="text/javascript"></script>]
    <script>
    
      document.addEventListener('DOMContentLoaded', function() {
        var calendarEl = document.getElementById('calendar');
    
        var calendar = new FullCalendar.Calendar(calendarEl, {
    	eventClick: function(info) {
        info.jsEvent.preventDefault(); // don't let the browser navigate
    
        if (info.event.url) {
          window.open(info.event.url, "_top");
        }
      },
    		locale: 'fr',
          height: '100%',
          expandRows: true,
          slotMinTime: '08:00',
          slotMaxTime: '20:00',
          headerToolbar: {
            left: 'prev,next today',
            center: 'title',
            right: 'dayGridMonth'
          },
    		buttonText: {
    		 today:    'aujourd\'hui',
      		month:    'mois',
      		week:     'semaine',
      		day:      'jour',
      		list:     'liste'
          },
          initialView: 'dayGridMonth',
          initialDate: '[(#DATE|affdate{'Y-m-d'})]',
          navLinks: true, // can click day/week names to navigate views
          editable: true,
          selectable: true,
          nowIndicator: true,
          dayMaxEvents: true, // allow "more" link when too many events
    <B_agenda>events: [
    <BOUCLE_agenda(EVENEMENTS){age<0}{par date}{statut=publie}>
    {
    title: '[(#TITRE|textebrut)]',
    start: '[(#DATE_DEBUT|annee)-][(#DATE_DEBUT|affdate{'m'})-][(#DATE_DEBUT|affdate{'d'})]',
    end: '[(#DATE_FIN|annee)-][(#DATE_FIN|affdate{'m'})-][(#DATE_FIN|affdate{'d'})]',
    url: '#URL_ARTICLE'
    }[(#COMPTEUR_BOUCLE|=={#TOTAL_BOUCLE}|?{'',','})]
    </BOUCLE_agenda>]
    </B_agenda>
        });
    
        calendar.render();
      });
    
    </script>
    <style>
    
      html, body {
        overflow: hidden; /* don't do scrollbars */
      }
    a {
    	color: #403153;
    }
      #calendar-container {
        position: fixed;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
      }
    
      .fc-header-toolbar {
        /*
        the calendar will be butting up against the edges,
        but let's scoot in the header's buttons
        */
        padding-top: 1em;
        padding-left: 1em;
        padding-right: 1em;
      }
    
    </style>
    </head>
    
    <body class="pas_surlignable page_rubrique">
    
    <div id='calendar-container'>
        <div id='calendar'></div>
      </div> </body>
    </html>

    Répondre à ce message

  • 14

    Je ne trouve pas comment faire pour mettre des styles perso aux cases de l’agenda Full Calendar.
    Pas moyens de trouver comment styler les fonds des cases et la couleurs des liens textes.
    Voir le problème sur https://www.ricochets.cc/spip.php?page=agenda
    Mes liens visités étant bleu, ça fait du bleu sur bleu, donc pas visibles sauf au survol.

    J’ai essayé par exemple ça, sans résultat :
    #contenu #agenda td .fc-title a:visited {color: #000;}

    merci pour les pistes éventuelles

    • il y confusion, si on regarde le html (avec par ex l’inspecteur firefox), .fc-title se trouve dans les liens, pas l’inverse.

      je ferais une selection beaucoup plus simple

      #agenda a:visited{color:#000;

      tous les liens visitiés dans l’id agenda.

      ou encore mieux

      .fc a:visited{color:#000;

      tous les liens visité dans full calendar, ca évite de dépendre d’un id potentiellement varable

    • Merci, j’avais pas bien capté les styles des différents niveaux...
      J’ai pu changer aussi les fonds couleurs des liens événements dans le tableau avec
      a.fc-event { background: #20A29F;}

      Au fait, y a t-il moyen de faire afficher le texte de descriptif (au moins les X premiers caractères) de l’événement au survol des événements du tableau ?
      Doit falloir changer le fichier qui code le tableau, sans doute que c’est trop compliqué ?

    • En regardant rapidement la doc de full calendar, je pense avoir une piste.

      Deja avec ce code, la description est bien associé en json aux evenements.
      Donc rien à changer côté json.

      Côte javascript, ajouter un action eventRender

      en s’inspirant de https://fullcalendar.io/docs/event-tooltip-demo (on peut voir le code en cliauqnt sur le bouton en haut à droite)

    • oui j’avais vu que les textes de description étaient déjà dans le code html de la page, dans des balises dd.
      merci pour la piste

      J’ai tenté de copier le code suivant dans le fichier fullcalendar_facile/modeles/agenda_fullcalendar.html :

      eventRender: function(eventObj, $el) {
            $el.popover({
              title: eventObj.title,
              content: eventObj.description,
              trigger: 'hover',
              placement: 'top',
              container: 'body'
            });
          },

      Mais il ne se passe rien.
      je l’ai mis avant le code pour events, comme ceci :

      	$('#agenda').fullCalendar({
      			locale: '[(#LANG|strtolower)]',
      			editable: false,
      			navLinks: true,
      			eventLimit: true,
      			firstDay: #CONFIG{calendriermini/jour1,1},
      			
      			eventRender: function(eventObj, $el) {
            $el.popover({
              title: eventObj.title,
              content: eventObj.description,
              trigger: 'hover',
              placement: 'top',
              container: 'body'
            });
          },
      			
      			
      			events: "[(#URL_PAGE{agenda.json}|parametre_url{couleur,#ENV{couleur},&})]",
      			header: {
      				left: [(#LANG_DIR|=={ltr}|?{"'prevYear,prev,next,nextYear today'","'listMonth,month,agendaWeek,agendaDay'"})],
      				center: 'title',
      				right: [(#LANG_DIR|=={ltr}|?{"'agendaDay,agendaWeek,month,listMonth'","'today nextYear,next,prev,prevYear'"})]
      				},

      C’était peut-être pas le bon fichier à modifier ?
      peut-être le fichier jquery-ui.multidatespicker.js du plugin agenda ?
      Comme je n’y connais rien en javascript, je vois pas...

      merci

    • bah deja fallait dire que vous utilisiez fullcalendar facile et pas votre propre fullcalendar. Parcer que là, vous risquez de perdre votre modif à la prochaine mise à jour du plugin.

      Bon, normalement c’est censé être là, dans ce fichier. Mais j’ai pas le temps de voire plus en profondeur. je regarde cet après midi.

    • J’ai le même problème, deux ans plus tard, et je n’arrive pas à trouver le connecteur css qu’il faut.
      L’exemple ci-dessus ne marche pas pour moi.

    • heu, connecteur css ? exemple ci dessus ? j’ai plus tout en texte. est-ce que tu peux dire ce que tu fais et où cela coince ?

    • Avec l’inspecteur de firefox je change le css comme je le veux, et ça marche.
      Si je reporte ce changement dans perso.css ça n’est pas pris en compte.
      Que ce soit a.fc-event background : xxxxxxxxx ; ou d’autres.

    • ah ! là franchement c’est des compétences css que eje n’ai pas.

    • Mais normalement perso.css devrait prendre le pas sur les styles de l’agenda mensuel en case, non ?
      http://yonneencommunavallon.org/?Agenda

    • bah heu, je vienms de regarder. là chez moi j’ai bien le bacground en noir comme tu l’a demandé dans ta feuille de style...

    • C’est

      background-color: #AD181D;


      et ça a fini par marcher (je ne sais pas pourquoi),
      en revanche le

       color: #FFFFFF;

      ne marche toujours pas.

    • t’a juste un pb de cache au niveau de ton navigateur :)

      quand tu appel tes feuilles de style (via #CHEMIN{tonchemin}, met un filtre |timestamp

    • Merci beaucoup :).

    Répondre à ce message

  • 2

    Bonjour
    Avec le squelette Escal, l’agenda pleine page s’affiche très bien sur un spip3.2 mais pas sur un spip3.3 où rien n’est affiché.
    La page agenda inclus le fichier /contenu/calendrier.html dont le code est visible ici : https://git.spip.net/spip-contrib-squelettes/escal/src/branch/master/contenu/calendrier.html
    En effet, celui-ci va chercher dans /plugins-dist/organiseur/lib

    • un dossier /moment
    • les fichiers fullcalendar.min.css et fullcalendar.min.js
      qui ne sont plus présents dans spip3.3

    Donc comment faire pour que l’agenda pleine page s’affiche sur spip 3.3 comme sur spip 3.2 ?

    Répondre à ce message

  • 1

    Bonjour, j’aimerais ajouter de la couleur mais... ca ne marche po. Auriez vous un tuto complet sur cette problématique ? Merci !

    • ca veut dire quoi ca marche po ? qu’avez vous essayé ? sur quoi doit se baser la couleur ?

    Répondre à ce message

  • Bonjour, Meilleurs vœux !
    La boucle ci-dessous affiche les 4 1er événements trouvés mais l’objectif est d’afficher les 4 prochains événements à partir de la date actuelle.
    La balise #DATE fournit la date actuelle mais quel critère pourrait réaliser cette fonction ?
    Cordialement.
    Norbert

    Répondre à ce message

  • 15

    Bonjour,
    Suite au passage en SPIP 3.2 le fichier agenda.html ci-dessous n’affiche plus l’agenda.
    J’ai lu les messages et testé les fichiers agenda.html, agenda.json.html, et agenda.json_fonction.php de la contribution sans amélioration.
    Plugins actifs : Agenda 3.18.6 et Mini Calendrier 2.4.1
    PHP Version 5.6.19

    • Oui, la version 3.2 a changé la version de Fullcalendar, ce qui a cassé la compatibilité, car les paramètres passés ne sont plus les mêmes.

      pas eu le temps d’écrire un article actualisé.

      Mais vous pouvez corriger en vous inspirant des corrections que j’ai apportées à fullcalendar facile.

      https://zone.spip.org/trac/spip-zone/changeset/107067

      et

      https://zone.spip.org/trac/spip-zone/changeset/107068

    • Un grand merci pour les indications et la célérité de la réponse !
      L’affichage de mensuel est réapparu :-)
      Il y une erreur dans la boucle Evenement mais peut-être est-ce un paramètre obsolète pour fullcalendar ?

      04 #SETstart,#ENVstart|strtotime
      05 #SETend,#ENVend|strtotime
      06 #HTTP_HEADERContent-type:text/javascript ;
      07 [ 08 {agendafull date_debut,date_fin, periode,
      09 #VAL{Y}|date{#{start}},
      10 #VAL{Y}|date{#{end}}},
      11 #VAL{Y}|date{#GET{start}}, #VAL{m}|date{#GET{start}}, #VAL{d}|date{#GET{start}},
      12 #VAL{Y}|date{#GET{end}}, #VAL{m}|date{#GET{end}}, #VAL{d}|date{#GET{end}}}
      13 >
      14 [(#ARRAYid,#ID_EVENEMENT,
      15 title,[(#TITRE|html2unicode|unicode2charset)],
      16 allDay,[(#HORAIRE|==non| ?#EVALtrue,#EVALfalse)],
      17 start,#DATE_DEBUT,
      18 end,#DATE_FIN,
      19 url,#URL_ARTICLE,
      20 description,[(#DESCRIPTIF|html2unicode|unicode2charset)]
      |json_encode)]
      21 ]

    • Quelle erreur ?

    • Une erreur en ligne 7 dans le fichier « agenda.json.html » qui était dans le message précédent.

      Voir la copie d’écran.

    • bah du coup c’est une erreur de syntaxe dans ton squelette, rien a voir avec fullcalendar. A toi de fouiller pour trovuer l’erreur exacte,.

    • Etrange cette erreur car les modifications sont les lignes supplémentaires ci-dessous :
      04 #SETstart,#ENVstart|strtotime
      05 #SETend,#ENVend|strtotime
      ...
      11 #VALY|date#GETstart, #VALm|date#GETstart, #VALd|date#GETstart,
      12 #VALY|date#GETend, #VALm|date#GETend, #VALd|date#GETend

      Et la modification de ces 2 suivantes comme dans la révision « 107068 »
      09 #VALY|date#start,
      10 #VALY|date#end,

      L’instruction, d’origine, ci-dessous est particulière. Je vais rechercher son détail
      13 >
      14 [(#ARRAYid,#ID_EVENEMENT,

    • Bonjour,

      Avec le cache vidé il n’y a plus d’erreur de squelette :-)

      Il reste 1 défaut, le texte du mois est corrompu :
      janvier 2018undefinedundefined

      Le choix de la langue d’affichage est configurable, non ?

    • Le choix de la langue d’affichage se fait via le paramètre locale

      cf

      https://zone.spip.org/trac/spip-zone/changeset/107067

      Je ne sais pas d’Ou vient le undefined, sans doute d’un paramètre non passé.

    • Bonjour Maïeul,
      Je ne comprend pas. Les évènements ne sont pas récupérés...
      Quelle piste faut il suivre ???

      Norbert

    • En l’absence de vrai site de démo pour voir le problème + du squelette, je peux difficilement t’aider.

    • Le site est en ligne : http://www.ffmc73.org/spip.php?page=agenda depuis hier soir... Ou j’ai cru avoir résolu l’erreur ;-)

    • Bonjour,

      Est-ce qu’il serait possible d’avoir un avis, une piste de recherche, par rapport au dysfonctionnement constaté en ligne ?
      Il y a 2 cas :
      -  soit il n’y a pas eu de calcul de la page agenda et le calendrier affiché est réduit à une fenêtre de 20px,
      -  soit la page est recalculée ou un nouvel évènement ajouté et là une erreur s’affiche en rouge.

      Cordialement.

      Norbert

    • Non, pas d’avis et peu de temps à passer dessus.

    • Dommage. Je vais devoir supprimer cette agenda en attendant que le plugin soit compatible.

    • 1. Présentement nous ne somme pas sur un plugin.
      2. Il est parfaitement possible d’utiliser fullcalendar et un agenda sous SPIP 3.2. Iil faut juste adapter le JS. Mais je n’ai pas le temps de me pencher sur votre JS....

    Répondre à ce message

  • Bonjour Maïeul,

    Tout d’abord un grand remerciement pour l’animation de ce forum !
    Je n’y comprends rien et je suis béotien en JS ! L’agenda a toujours un problème de récupération des événements. J’ai vérifié la fonction de tout les paramètres utilisés dans le script sur « https://fullcalendar.io/docs » et la syntaxe du script exécuté dans « agenda.html ».
    La boucle agenda ci-dessous ne renvoie pas d’erreur. Mais il y a un problème avec la lecture de la variable « #TITRE » qui provoque le message « UNDEFINED ».
    La console Firefox indique
    TypeError : jQuery(...).parents(...).formulaire_dyn_ajax is not a function

    http://192.168.1.13/prive/javascript/ajaxCallback.js:1032:2
    mightThrow
    http://192.168.1.13/prive/javascript/jquery.js:3583:21
    resolve/</process<
    http://192.168.1.13/prive/javascript/jquery.js:3651:12
    TypeError : jQuery(...).not(...).attr(...).colorbox is not a function
    mediaboxInit
    http://192.168.1.13/plugins-dist/mediabox/javascript/spip.mediabox.js:25:3
    mightThrow
    http://192.168.1.13/prive/javascript/jquery.js:3583:21
    resolve/</process<
    http://192.168.1.13/prive/javascript/jquery.js:3651:12
    TypeError : jQuery.spip is undefined
    onAjaxLoad
    http://192.168.1.13/prive/javascript/ajaxCallback.js:21:3

    http://192.168.1.13/local/cache-js/jsdyn-javascript_porte_plume_start_js-c2e14539.js:272:2
    dispatch
    http://192.168.1.13/prive/javascript/jquery.js:5205:16
    add/elemData.handle
    http://192.168.1.13/prive/javascript/jquery.js:5014:6

    Norbert

    Répondre à ce message

  • 18

    Hello

    J’adapte peu à peu ma version de calendrier_quete_json.html pour spip 3.2

    Me reste un souci avec l’affichage de l’heure : si un événement commence à 9h, l’affichage est « 09 » et je préférerais « 09h » ou mieux « 09h00 »

    Et j’aimerais aussi afficher l’heure de fin de l’événement.

    Est-ce possible ?

    • Sans doute, il faut regarder dans la doc de fullcalendar

    • sans doute mais elle est en anglais et je n’y comprends donc pas grand-chose.

    • Si je lis bien
      https://fullcalendar.io/docs/text/timeFormat/
      et
      https://fullcalendar.io/docs1/utilities/formatDate/
      tu peux mettre dans ton js après la description des evenements :

       timeFormat: "H'h'mm" 

      (non testé, mais H veut dire heure sur 24 h, le h de séparation est protégé par les guillemets

      et pour afficher la date de fin

      https://fullcalendar.io/docs/text/displayEventEnd/

      displayEventEnd:true

      a tester

    • Ah j’aurais du expliquer mieux : je n’ai pas de js, j’utilise le plugin agenda et la seule personnalisation que je fais tient dans le calendrier_quete_json.html

      Je n’y connais rien en js mais je pourrais essayer. Quel serait donc le js à copier et à surcharger ?

    • bah calendrier_quete_json.html cela produit du json, format js

    • Bonsoir,
      pour le problème des minutes qui ne s’affiche pas, j’ai modifié le fichier modèle agenda_fullcalendar.html comme suit :

      	$('#agenda').fullCalendar({
      			locale: '[(#LANG|strtolower)]',
      			editable: false,
      			navLinks: true,
      			eventLimit: true,
      			timeFormat: 'HH:mm',

      et ça fonctionne en affichant l’heure sous la forme 09:00

      Bonne soirée.

    • @ Maîeul : je ne comprends pas le « tu peux mettre dans ton js après la description des evenements ». A quel endroit du fichier json écrire ce que tu proposes ? J’ai essayé de rajouter

            timeFormat,"H'h'mm",
            displayEventEnd,true,

      dans le ARRAY mais aucun changement.

      @ edouard1964 : je n’utilise pas le plugin fullcalendar_facile dont le fichier dont tu parles semble issu.

    • le mieux serait encore que tu nous envoie un lien vers la description de ton json, parce que je ne suis pas sûr de voir ce que tu fais.

    • Pas de souci, voici le fichier où je joue avec les mots-clés pour la couleur de chaque évènement.

      #SET{start,#ENV{start}|strtotime} 
      #SET{end,#ENV{end}|strtotime} 
      
      #HTTP_HEADER{Content-type:text/javascript;}
          [<BOUCLE_evenements(EVENEMENTS){', '}{par date_debut}{titre_mot?}{lang}
          {agendafull date_debut, date_fin, periode,
      		#VAL{Y}|date{#GET{start}}, #VAL{m}|date{#GET{start}}, #VAL{d}|date{#GET{start}},
      		#VAL{Y}|date{#GET{end}}, #VAL{m}|date{#GET{end}}, #VAL{d}|date{#GET{end}}} 
            >
          <BOUCLE_mot(MOTS){id_evenement}{type=Agenda_couleur}{0,1}>
            [(#ARRAY{
            id,#ID_EVENEMENT,
            title,[(#_evenements:TITRE|html2unicode|unicode2charset)],
            allDay,[(#HORAIRE|=={non}|?{#EVAL{true},#EVAL{false}})],
            start,#DATE_DEBUT,end,#DATE_FIN,
            url,#URL_EVENEMENT,
            color,[(#DESCRIPTIF|PtoBR|html2unicode|unicode2charset)]
            }|json_encode)]
          </BOUCLE_mot>
          </B_mot>
            [(#ARRAY{
            id,#ID_EVENEMENT,
            title,[(#_evenements:TITRE|html2unicode|unicode2charset)],
            allDay,[(#HORAIRE|=={non}|?{#EVAL{true},#EVAL{false}})],
            start,#DATE_DEBUT,end,#DATE_FIN,
            url,#URL_EVENEMENT,
            color,#336699
            }|json_encode)]
          <//B_mot>
          </BOUCLE_evenements>]
    • Arf, je viens de m’apercevoir qu’avec ce fichier calendrier_quete_json.html, rien ne s’affiche dans le mini-calendrier. Je sèche complet là !

    • Envoie moi un mail privé pour faire le point, je suis perdu.

    • Bon,

      déjà, ce n’est pas dans le fichier json que doit se régler le format de date, mais bien dans le javascript appellant.

      Après

      events: "[(#URL_PAGE{agenda.json})]",

      ajouter

      			timeFormat: '<monformat>',

      Ensuite la doc que j’ai envoyé est obsolète (pas hyper pratique de trouver la bonne doc). Les règles de formatages des dates ont changés. Cela utilise désormais les règles de « Moment » (un script js, si j’ai bien compris).

      http://momentjs.com/docs/#/displaying/format/

      du coup tu devrais faire quelque chose comme

      			timeFormat: 'H[h]mm',

      pour avoir l’heure (sur 24h, avec un seul chiffre si besoin) suivi du caractère h suivi des minutes (toujours sur deux chiffres, si tu veux un seul chiffre, mais un seul m).

      Après dans ton mail, tu demande d’afficher aussi l’heure de fin : c’est déjà le cas pour la vue par semaine et par jour, pas pour celle par mois car trop étroit par défaut.

      Mais tu peux ajouter

      			displayEventEnd: true, 

      après le formatage de ta date.

    • ok j’ai eu un peu de mal à trouver le javascript appelant car il s’agit d’un html plus précisément /plugins-dist/organiseur/contenu/calendrier.html

      Mais cool, voici un fichier avec lequel je vais pouvoir jouer.

      Mille mercis pour ton aide précieuse.

    • Hello

      J’ose une autre question : est-il possible de séparer l’horaire de début et l’horaire de fin. En fait je voudrais avoir l’heure de début à gauche et l’heure de fin à droite.

      Possible ou pas ?

    • pas compris, parce que c’est déjà ce que fait displayEventEnd:true

    • displayEventEnd : true permet d’afficher l’heure fin mais le code retourné est

      <span class="fc-time">8h00 - 19h00</span>

      On ne peut donc pas jouer avec ...

      J’aurais préféré un truc du genre

      <span class="fc-time-start">8h00</span>
      <span class="fc-time-end">19h00</span>
    • C’est peut être possible, mais tu ne coupera pas à la documentation en anglais.... en tous cas pour moi, je n’irai pas chercher plus loin.

    • Je suis dessus mais bon ...

      En tout cas, je te réitère mes remerciements.

    Répondre à ce message

  • 26

    Bonjour, J’aurais aimé, dans fullcalendar, pouvoir gérer la couleur des événements en fonction de leur nature. Pourriez-vous me dire comment faire, sachant que je n’y connais rien en programmation. Actuellement, les événements sont en couleur, mais de façon très aléatoire.
    Merci de votre aide.

    Nous utilisons spip 3.2, Agenda FullCalendar facile 2.0.0, Agenda 2.18.6 et Soyez Créateurs Rebirth 4.2.13.

    • Deja vous n’utiliser pas cette contribution, mais fullcalendar facile, ce qui est autre chose (qui volontairement ne propose pas trop d’option).

      Ensuite il faudrait en savoir plus sur la manière dont vous comptez déterminer les couleurs des évenements. Par article ? par rubrique ? pour chaque evt ?

    • Ah bon... ce n’est pas le bon fullcalendar ? Eh bien on peut le changer, si « le vrai » va avec notre configuration... où puis-je le trouver alors ?
      Je pensais faire une couleur par événement : par exemple toutes nos « sorties » d’une couleur. Les « expositions » d’une autre, le travail sur logiciels d’une troisième, etc. Mais s’il faut faire autrement on essaiera de s’adapter... :-)

    • Bah vous utiliser le plugin fullcalendar facile, qui est documenté à cette article 6866, alors qu’ici vous êtes sur une documentation technique pour faire votre fullcalendar à votre sauce. C’est juste que vous avez posé votre question au mauvais endroit. D’un point de vue technique, cela ne change pas grand chose.

      Si je reviens à votre problème, vous ne faites pas une couleur par évenement, mais une couleur par type d’évenement. D’où la question suivante : est-ce que tous vos évènements sont rattachés au même article ? Ou bien est-ce que vous avez un article par type d’évenement ? Ou encore une rubrique par type d’evenement ?

    • Oups, l’article du full calenard facile est article 4883

    • Nous avons une rubrique pas type d’événement

    • Bon, c’est deja un premier pas. J’ai modifié le plugin agenda fullcalendar facile.

      Il vous faut la version 2.1.0 qui sera disponible en zip.

      Pour régler les couleurs il vous faut :

      • avoir le plugin Couleur d’Objet activé, en version 0.3.0 minimum et les couleurs réglées
      • passer en paramètre du modèle l’objet sur lequel on prend la couleur :
        • <agenda_fullcalendar|couleur=rubrique> prend la couleur associé à la rubrique où se trouve l’évènement.
        • <agenda_fullcalendar|couleur=article> prend la couleur associé à l’article où se trouve l’évènement.
        • <agenda_fullcalendar|couleur=evenement > prend la couleur associé à l’évènement lui-même.
    • ps : les deux plugins seront disponibles dans leurs derniers versions peu après 18h15

    • Wahou ! Super ! GRAND Merci pour cette réactivité... J’ai téléchargé Couleur d’objet 0.3.0
      Je suppose que c’est sur la page de Agenda Fullcalendar facile que je trouverai sa mise à jour. Je surveille :-)
      Encore un très grand merci.

    • Si vous avez pu telecharger la version 0.3.0 de couleur d’objet, alors sur agenda fullcalendar facile vous devriez pouvoir telecharger la dernière version du plugin (même si les données affichées sur la page ne sont pas à jour, le zip, lui, le sera).

      Cela étant, je vous conseilleriait d’utiliser le système d’installation et de mis à jour automatique des plugins intégré à SPIP.

    • Dans mes plugins, je vois Fullcalendar Facile 2.1.0 déjà installé. Cela signifie que les mises à jour se font automatiquement ? C’est super !

    • Voilà, tout est installé. Mais que signifie « et les couleurs réglées » ? Je ne vois pas comment les régler les couleurs...

    • Ça y est, j’ai trouvé comment mettre une couleur dans un objet !

      Mais je n’ai pas compris ce que signifie « passer en paramètre du modèle l’objet sur lequel on prend la couleur : ».
      J’ai mis une couleur à la rubrique dans laquelle se trouvent les articles (auxquels j’ai mis la même couleur) qui sont associés à des événements auxquels j’ai aussi mis cette couleur.
      Mais rien n’a changé dans mon calendrier . =(
      Il y a donc quelque chose que je n’ai pas fait ! Probablement ce passage en paramètre du modèle...

    • A la place de saisire

      <agenda_fullcalendar>

      mettre

      <agenda_fullcalendar|couleur=rubrique>
    • AH. Mais où faut-il que je saisisse <agenda_fullcalendar|couleur=rubrique> ? Quand je crée un événement, je dis simplement la date, l’heure éventuellement le lieu.
      Là où je dois saisir la couleur, je n’ai que la place pour la couleur. Alors je ne vois pas où je dois écrire...
      Je viens d’écrire ce code dans le « descriptif » de l’événement... et hop ! un calendrier remplace la formule ! Magique !
      Sauf que... Cet agenda affiche des nombres (en plus des jours du mois bien sûr !) auxquels je ne comprends pas grand chose :
      « +2 en plus » « +1 en plus » quand je clique sur ces nombres, ça me ça me déroule une fenêtre avec des lignes numérotées :
      67
      67
      67
      67
      67
      73
      73
      qui ressemblent à des numéros d’articles. Mais pourquoi le même article sur tant de lignes ?
      C’est bien curieux tout ça... Les couleurs n’apparaissent toujours pas dans full calendar... Bon, la nuit porte conseil... Peut-être que demain l’affichage ne sera pas aussi fantaisiste... ou que j’en comprendrai les mystères... :-)

    • Bah c’est vous qui me dites que vous utilisez full calendar facile, qui implique de mettre un code dans l’article où l’on veut voir le calendrier... relisez la documentation....

    • Bonjour Maïeul
      Ah ! Alors je n’y comprends plus rien... Qu’est ce que ce grand calendrier où s’affichent nos événements si ce n’est pas full calendar ? Nous avons un « mini calendrier » dans notre menu, et lorsqu’on clique sur le mois de ce mini calendrier, une grand calendrier plus détaillé s’affiche en grand sur la page. Dans nos plugins, nous avons « full calendar facile ». Ce n’est donc pas lui qui s’affiche ??

    • C’est moi qui ne comprend plus rien. Le plus simple serait que vous m’envoyiez une url de la page à laquelle vous pendez pour que je sache ce qu’il en est exactement.

    • Ce n’est clairement pas du fullcalendar (voir la copie d’écran sur cet articlee). Je ne sais pas si c’est une fonctionnalité du squelette soyez createur ou si c’est quelque chose qui a été ajouté par quelqu’un pour une version personnalisé de ce squelette, mais en tout cas ce n’est pas du Fullcalendar.

    • Le site a été repris d’un site en spip 2. ... passé en spip 3.2. et refondu... Ça vient peut-être de là. Mais je ne sais pas comment « faire le ménage » !
      En tout cas, merci pour cette aide. Et désolée pour le travail supplémentaire dans fullcalendar facile.

    • Bah la refonte n’a pas pu ajouter automatiquenet un calendrier ;-) Il y a bien quelqu’un qui l’a ajouté cette page....

    • Ben... C’est sans doute moi ! C’est moi qui ai fait le transfert. Mais personne de chez nous n’a « écrit le code » qui génère la page !

    • bah du coup c’est sans doute une fonctionnalité native de soyezcreateur, je vous invite à vous tourner vers l’auteur de ce squelette

    • Très bien. Merci infiniment. Bon week-end

    • J’ai suivi tes conseils. Effectivement, j’ai eu confirmation qu’il y a bien un code spécifique pour un agenda dans soyez créateurs.
      Cordialement

    Répondre à ce message

  • 3

    bonjour, dans spip 3.2 fullcalendar propose pas mal de possibilités d’interaction, dont la saisie et l’édition d’évènements en cliquant sur un jour dans le calendrier, la méthode employée fait appel en ajax à un fichier add_events.php chargé d’enregistrer les données en base :

    $.ajax({
    	   url: 'add_events.php',
    	   data: 'title='+ title+'&start='+ start +'&end='+ end,
    	   type: "POST",
    	   success: function(json) {
    	   alert('Added Successfully');
    	   }
      	 });

    ma question c’est peut on et comment à ce niveau faire appel à l’action editer_evenement du plugin agenda ?
    merci et bonne soirée

    • Intérressant. Mais honntement pas le temps de me pencher sur la question ;-)

    • De toute facon il faudrait adapter le tutoriel pour la 3.2

    • merci pour tes réponses Maïeul, on peut aussi penser que l’organiseur va s’organiser ;) alors patience... et mille Merci à tous

    Répondre à ce message

  • 4

    Bonjour,
    J’ai un problème : Je n’arrive pas à insérer des événements. Une fois j’ai eu dans une côté le message : Erreur SQL1054 Unknown column ’attendee’ in ’filedlist’ SELECT attendee, origin, notes FROM spip_evenements WHERE id_evenements=4.

    J’ai ne comprends pas la raison. J’ai effectué la mise au jours de toutes le plugins, ....et j’utilise spip 3.0.20.

    Pourrez m’aider, s’il vous plait ?
    Merci
    Riccardo

    • Bonjour,

      il s’agit plus d’un problème du plugin agenda que de cette contribution, qui concerne uniquement l’affichage. Donc la page idéal pour cette question serait https://contrib.spip.net/Agenda-2-0

      Cela étant attendee me fait penser au plugins import ics.

      L’utilisez vous.

    • Bonjour,
      Désolé d’avoir confondu de contribution. No je n’utilise pas de plugins import ics, mais j’ai une plugins champs extra...
      J’utilise le kitcnrs 5.3.8 et le couteau suisse.
      Merci.
      Dois-je poser ma question sur la contribution Agenda-2-0

    • a oui, le kit cnrs est à l’origine du champ attendee.

      Le mieux serait de contacter son auteur. En attendant, vous pouvez créer ce champ manuellement avec PHP my admin

    • OK.
      Merci beaucoup !

    Répondre à ce message

  • bonjour, le pipeline agenda quete_calendrier_prive qui liste les évènements dans l’organiseur privé sélectionne aussi les évènements en cours de rédaction, c’est justifié ou on peut restreindre aux évènements publiés ? merci

    Répondre à ce message

  • 4
    Patrick

    Bonjour,
    Je recherche l’affichage d’une modal au survol de l’évenement comme ici au click :
    http://imagesetpeche.free.fr/BS3/
    Il s’agit d’un fullcalendar externe au spip
    Ici, par contre,
    http://imagesetpeche.free.fr/spip.p...
    je n’arrive pas à activer la modalbox.
    Quelqu’un l’a dejà fait.
    Je cherche une piste...
    Bonne journée

    • je ne comprend pas : si vous arrivé à le faire sur un fullcalendar externe, pourquoi n’arrivez vous pas à le faire sur un full calendar interne ?
      il faudrait reprendre juste le code non ?

    • Patrick

      Bonjour et merci pour votre réponse.
      J’utilise un code très court dans les deux dans l’ajax3
      Les fichiers json ne sont pas en cause.
      C’est dans l’ajax qu’il y a l’appel a la modalbox.

      			eventClick:  function(event, jsEvent, view) {
      			//set the values and open the modal
      			  $('#modalTitle').html(event.title);
      			  $('#modalBody').html(event.description);
      			  $("#startTime").html(moment(event.start).format('Do MMMM hh:mm'));
      			  $("#endTime").html(moment(event.end).format('Do MMMM'));
      			  $("#eventContent").dialog({ modal: true, title: event.title,width:300});
      			}

      et dans le body le contenu de la modal :

      <div id="eventContent" title="Event Details" style="display:none;">
          Du:	 <span id="startTime"></span><br>
          Au:	 <span id="endTime"></span> <br>	
          Descritif:	<p id="modalBody"></p>
      </div>

      Je n’arrive pas à les intégrer à la page agenda.html de mon squelettes.

    • dans la version SPIP, vous n’avez pas mis d’evenement .eventclick.

      je ne comprend non plus pourquoi vous n’arrivez pas à intégrer le body de votre modal dans le squelette.

    • Patrick

      Bonjour et merci pour la réponse et les conseils.
      Je vois tout ça en local.
      Bonne journée

    Répondre à ce message

  • 2
    crazyspip

    Bonjour,

    J’utilise agenda 3 avec Agenda Fullcalendar facile, ça fonctionne super, merci pour les plugins. J’aimerais cependant :

    1- pouvoir créer un événement sans lien vers un article.
    En cherchant, j’ai trouvé qu’il était possible d’utiliser une constante _AGENDA_AUTORISER_ORPHELINS dans mes_options.php mais quelle syntaxe faut-il utiliser au juste ?

    2- pouvoir, surtout, créer un événement dont le lien point hors du site Spip.
    Mon agenda répertorie des actions organisées par diverses associations et je ne souhaite pas nécessairement écrire mon propre article sur telle ou telle action mais pointer vers la page de leur site, par exemple.
    Jusqu’à présent, je n’ai que quelques entrées dans l’agenda et j’utilise une parade qui est de créer un article virtuel sur Spip qui lui-même redirige vers le site extérieur mais ce n’est pas très efficient comme méthode, surtout lorsque les dates se multiplieront.

    Pouvez-vous m’aider ? Grand merci !

    • Je ne sais pas. Cet article est vraiment consacré à l’utilisation d’agenda en combinaison avec Fullcalendar. Je vous suggère de poser la question sur la page du plugin agenda directement : Agenda 2.0 et ultérieur. Je sais que l’option est ajouté depuis peu, mais je ne m’en suis jamais servi.

    • crazyspip

      Bonjour Maïeul,
      Merci pour la réponse. J’avais hésité sur l’endroit où poser ma question mais comme la page agenda 2 renvoie vers celle-ci...
      Pas de souci, je copie/colle là-bas. Bonne soirée.

    Répondre à ce message

  • 4

    Bonjour,

    déjà, merci pour la doc’ qui m’a bien aidée jusqu’à présent, mais voila que je calle... Et impossible de trouver ce que je cherche sur le net...

    Mon objectif est assez simple, ajouter une classe (Via un className) dans le json afin de pouvoir varier le Background-color en fonction de l’emplacement de l’évènement dans mon arborescence, via les stylesheets (Et ce sans toucher au JS, tant que possible... :x).

    Donc, voila déjà mon json :

    #HTTP_HEADER{Content-type:text/javascript;}
    [
    <BOUCLE_presse(EVENEMENTS){id_rubrique=6}{', '}{par date_debut}	
    {agendafull date_debut,date_fin, periode,
    	#VAL{Y}|date{#ENV{start}}, #VAL{m}|date{#ENV{start}}, #VAL{d}|date{#ENV{start}},
    	#VAL{Y}|date{#ENV{end}}, #VAL{m}|date{#ENV{end}}, #VAL{d}|date{#ENV{end}}}
    	>
    					[(#ARRAY{id,#ID_EVENEMENT,
    title,[(#TITRE|html2unicode|unicode2charset)],
    allDay,[(#HORAIRE|=={non}|?{#EVAL{true},#EVAL{false}})],
    start,#DATE_DEBUT,
    end,#DATE_FIN,
    url,#URL_ARTICLE,
    className,jaune,
    description,[(#DESCRIPTIF|html2unicode|unicode2charset)]}|json_encode)]
    </BOUCLE_presse>
    ,
    <BOUCLE_evenements(EVENEMENTS){id_rubrique!=6}{', '}{par date_debut}{doublons}
    {agendafull date_debut,date_fin, periode,
    	#VAL{Y}|date{#ENV{start}}, #VAL{m}|date{#ENV{start}},     #VAL{d}|date{#ENV{start}},
    	#VAL{Y}|date{#ENV{end}}, #VAL{m}|date{#ENV{end}}, #VAL{d}|date{#ENV{end}}}
    	>
    					[(#ARRAY{id,#ID_EVENEMENT,
    title,[(#TITRE|html2unicode|unicode2charset)],
    allDay,[(#HORAIRE|=={non}|?{#EVAL{true},#EVAL{false}})],
    start,#DATE_DEBUT,
    end,#DATE_FIN,
    url,#URL_ARTICLE,
    description,[(#DESCRIPTIF|html2unicode|unicode2charset)]}|json_encode)]
    </BOUCLE_evenements>]

    De base, aucun soucis, mon calendrier s’affiche correctement, les couleurs suivent... Mais, lorsque je regarde les évènements passés, je découvre que l’agenda n’affiche simplement pas les évènements de la période octobre 2015 à octobre 2016...

    Concernant le fichier HTML, il reste sensiblement le même que celui servant d’exemple ici, à la différence que j’ai adapté les chemins, bien sur...

    Des idées, des pistes, des erreurs à relever ?

    Merci d’avance !

    • a priori la question des couleurs et celle des évènements passés sont indépendantes.

      il faudrait ouvrir le fichier .json produit pour voir si les evenements y sont bien. Si ce n’est pas le cas, sans doute un problème dans le passage des paramètres.

    • Désolé pour le double post, mais j’ai oublié un détail intéressant :

      suivant l’identifiant de rubrique, le résultat n’est pas le même... Par exemple, si dans la deuxième boucle, j’utilise un « id_rubrique !=40 », pas de soucis, tout s’affiche, tandis qu’un « id_rubrique=40 » me renverra la même erreur que le « id_rubrique !=6 »... Et non, je ne me suis pas trompé, le problème s’inverse bien suivant l’ID rubrique, alors que rien ne le justifie dans mon arbo’...

    • honnetement, sans site de démo, je ne peux pas savoir. Il faut vraiment regarder le résultat du .json et vérifier que tout y est.

    • il faudrait ouvrir le fichier .json produit pour voir si les evenements y sont bien.

      Je l’ai fait, et oui, ils y sont... Je vais me pencher sur le passage des paramètres, du coup... En espérant ne pas y rester des jours.

      Merci !

    Répondre à ce message

  • 11

    Bonjour,
    Serait-il possible, sous SPIP, de réaliser un agenda partagé multi-utilisateurs ?
    Il servirait à plusieurs associations pour afficher leurs prévisions de manifestations, activités, événements, afin de pouvoir éventuellement se concerter pour éviter de programmer des activités pouvant se concurrencer le même jour ou à la même période.
    Merci par avance,
    Cordialement,
    Patrick

    • Bah, heu oui, c’est possible. Il suffit d’un site SPIP avec le plugin agenda.

    • Cassius36

      Merci mais cela suffira-t-il pour que plusieurs associations utilisatrices aient chacune une ligne pour y inscrire (ou pas) leurs événements ? C’est d’un agenda MULTI-UTILISATEURS dont j’aurais besoin

    • bah heu… il suffit de créer un compte par association. je vois pas trop le souci.

    • Cassius36

      Tu veux dire que plusieurs utilisateurs peuvent utiliser un seul et même agenda (donc avec une ligne chacun dans un seul et même tableau) ? Car si plusieurs associations devaient toutes ouvrir l’agenda des autres pour savoir les événements qu’elles projettent, ça serait pas vraiment pratique !

    • oui. il y a une page qui résume tous les evenements dans l’espace privé. Tu peux selon ton arrangement mettre l’agenda sur un seul article, ou bien sur un article par association et la page récapitulative évite les chevauchement.

    • Bonsoir,

      J’ai ajouté le plugin Agenda 3 (avec son associé Calendrier mini qui l’accompagne automatiquement mais ça ne me fait pas apparaître pour autant un agenda quelque part...

      Comment faire ?

      Les explications ci-dessus sont largement hors de portée de ma comprenoire de total débutant !

      Cordialement,
      Cassius

    • quel squelette utilisez vous ?

    • Le squelette de base de SPIP.
      adresse : lasociale.lautre.net
      Et je n’y comprends rien !
      Je peux vous donner le mot de passe pour y entrer si vous voulez car c’est pour le moment un site d’essai.

      Cordialement,
      Cassius
      PS : Mais dans l’immédiat je vais dîner chez des amis...

    • Il faut juste savoir qu’il est normal que rien n’apparaisse, puisque cela relève du squelette de faire apparaître quelque chose… et que le squelette standard n’est pas prévu pour l’agenda, puisque celui-ci n’est pas livré avec SPIP.

      je vais essayer de fabriquer un plugin clickdrome pour installer cela automatiquement. Cela prend pas trop de temps normalement, mais pas avant ce week-end.

    • Merci beaucoup !

      Je pense que cela rendra bien service à de nombreux débutants comme moi et même à SPIP car ce genre de difficulté est de nature à détourner les gens de ce logiciel.

      Cordialement,
      Cassius

    • voilà, je t’invite à lire cet article : Agenda Fullcalendar facile.

    Répondre à ce message

  • 2
    Christophe

    Bonjour,

    J’essaie d’éditer un formulaire de saisie des événements depuis l’interface publique (http://mnelille.lautre.net/spip.php?page=agenda_formulaire) mais je n’arrive pas à afficher les calendriers des dates comme dans l’interface privée et à faire en sorte que le calendrier des répétitions soit caché tant que je n’ai pas cliqué sur répétition. Certainement une fonction qu’il faut appeler mais je n’arrive pas trouver quoi...
    Merci par avance,
    Cordialement,

    Christophe

    • Ce message ne concerne pas cet article qui traite uniquement de l’affichage fullcalendar.

      Je vous suggère la prochaine fois de poser la question sur la liste des utilisateurs de SPIP.

      je n’ai aucune idée pour votre problème, mais je vous suggère de regarder ce que donne un &var_mode=inclure dans l’espace privé pour voir les squelettes utilisés et s’en inspirer.

      Bien à vous

    • Christophe

      Ah oui désolé, j’ai vu Agenda 3 dans le titre et je me suis arrêté à ça.
      Cordialement,

    Répondre à ce message

  • 1

    Bonjour,
    y a t’il un moyen d’afficher le fullcalendar (affichage du calendrier) par année ??? si on choisit une année il y a tous les mois qui s’affichent et leurs événements
    MErci de votre réponse

    • pas à ma connaissance et pas d’après ce que je peux lire rapidement dans la doc de fullcalendar

    Répondre à ce message

  • 1

    Bonjour,

    Question bête... Où trouve-t-on le « Plugin Agenda 3.6.11 minimum »... ??
    Tout ce que je vois c’est la version 3.14.18 qui semble bien être la toute dernière version... (sur la page Contrib appellée Agenda 2.0 (sic)).. Vois pas de versions supérieures..

    Merci de votre aide (et du travail).

    Répondre à ce message

  • Ah j’aime bien cette contrib :) Je pense que je vais l’utiliser sur un projet à la place du Calendrier Mini... En revanche, il y a un point que je souhaiterais voir avec vous.

    Comment pourrait-on gérer un lien vers une page (inclure) avec l’ensemble des événements du jour mais sur la même page en utilisant donc ajax ?
    A gauche le calendrier, à droite la liste des événements du jour, mise à jour au clic sur une date :)

    Merci pour les piste !

    Répondre à ce message

  • Hello,

    En utilisant le mode debug sur ma page spip.php ?page=agenda&var_profile=1&var_mode=recalcul il y a une erreur qui s’affiche (mais mon calendrier lui s’affiche bien) :

     Erreur SQL 1146
    1146Table 'site.agendas' doesn't exist
    SHOW CREATE TABLE <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+YWdlbmRhczwvY29kZT4="></span>

    J’ai cherché mais pas trouvé d’où cela peut venir.

    dd

    Répondre à ce message

  • 13

    Bonjour et merci pour ce post,

    Tout fonctionne très bien pour moi. J’utilise l’agenda pour afficher la disponibilité d’une maison de location. En fait actuellement si j’ai une réservation cela marque une bande de couleur sur une date de réservation... et en fait j’aimerai faire l’inverse c’est à dire avoir toujours mon bandeau de couleur de visible sauf sur mes semaines de réservation. Du coup le bandeau de couleur marquerait les périodes disponibles.

    Merci d’avance

    • Il serait assez complexe de marquer les disponibilités à partir des indisponibilités, puisque le temps est infini. Pourquoi tout simplement ne pas mettre dans l’agenda un evenement « disponible » ?

    • Et avec du CSS ?

    • je ne vois pas comment.

    • Bon, je raconte peut-être des bêtises mais n’est-il pas possible de modifier légèrement le javascript pour donner une classe aux cellules ayant un contenu ?

      On pourrait dès lors choisir des couleurs de fond différentes (voire un texte, etc.) Bon, ce n’est pas exactement la demande de Julia – qui évoquait les bandes colorées – mais ça lui conviendrait peut-être.

    • Merci pour vos réponses,

      Ah oui effectivement avec la css je sais pas... peut être définir une bande colorée dans tout le tableau et lorsque la bande de réservation du tableau apparait elle viens se superposer sur l’autre... du coup si la bande de réservation est de la même couleur que le fond de la case on a l’impression d’une case vide.

    • a mon avis il faut plus faire cela au niveau semantique. Prendre une periode de temps sufissament large (genre J-10 ans à J + 30 ans). Classer les reservations par date de début. Considérer que le début d’une réservation marque en réalité la fin d’une période libre, et que la fin d’une réservation marque le début de la période libre suivante.

    • Ok merci Maïeul pour ta réponse,

      Le truc c’est que ce n’est vraiment pas pratique à utiliser comme cela...

    • j’ai bien compris. D’où ma suggestion de fabrique un agenda.json.html perso, qui inverse les infos. Cela ne doit pas etre très compliqué, mais je n’ai pas le temps de faire des tests…

    • ah oui je comprends mieux. Effectivement je ne sais pas coder en javascript donc ça va être trop compliqué pour moi.

      Merci pour tes réponses.

    • en soi il n’y a pas besoin de savoir coder en javascript : il faut savoir coder en SPIP.

      Regardez à quoi ressemble le javascript généré -> cela vous fait un modèle. Il vous faut juste généré un js sur le même modèle, mais avec les dates autrements…

    • Merci,

      Je viens de regarder agenda.json.html et ce n’est pas vraiment du codage classique de boucle non plus.... je vais essayer de faire des tests à tâtons mais c’est pas gagné ;)

    • à part l’emploi de #ARRAY, je ne vois pas en quoi ce n’est pas une boucle classique … une seule boucle …

    • Bonjour,

      Bon après de nombreux tests infructueux, je n’ai toujours pas trouvé la bonne solution.... si quelqu’un peu m’aider ♥

      Merci

    Répondre à ce message

  • 8

    Bonjour ,

    J’utilisais ce pluging pour spip 2.1 pour un site d’association ;
    Le temps passe et je me dit qu’il faudrait que je migre le site sur spip 3.0.

    C’est un outil assez important pour l’association, donc pour le moment, impossible de quitter spip 2.1, et j’espère qu’il sera encore mise a jour quelques temps...

    Je vois que ce pluging est passé en « contribution pédagogique », mais au vue des commentaires, cela semble marcher pour spip 3, par contre je voie pas où je peux le telecharger pour tester ?

    • Passer en SPIP 3.0, voire mieux en SPIP 3.1est effectivement une bonne idée. Le plugin agenda se telecharge sur la page dédiée, voire mieux s’installe depuis l’espace privée de SPIP 3.1.

      Quant à fullcalendar (affichage du calendrier) il est livré avec SPIP 3.1, donc inutile de se fatiguer.

    • Merci de votre réponse
      FULL Calendar est dans spip 3.1 ? super !

      Je vais regarder ça, je voulais d’abord passé de 2.1 a 3.0 pour voir si il y avait de gros bug, a priori non, je vais passer au 3.1, et voir comment cela se présente.

    • pour être précis fullcalendar est livré avec le plugins « organiseur » livré par défaut avec SPIP 3.0 et 3.1 et normalement non désactivable depuis l’espace privé.

    • Ruchemania

      Bonjour
      Je suis sous SPIP 3.1 et quand je suis les explication, je fais tout ce qui et dit, j’ai bien l’affichage du tableau mais tout le texte est en dessous, puis encore dessous comme si je n’avais pas le le javascript.
      Pour SPIP 3.x y à il juste un code à insérer ?
      Merci

    • heu, je n’ai pas compris. Normalement si vous suivez cela, ça doit marcher. On peut avoir une url d’exemple ?

    • Ruchemania

      voilà le lien vers la page agenda : http://agenda-gers.fr/spip.php?page=agenda

    • je viens de regarder, et je ne vois AUCUN intégration de fullcalendar…

    • ruchemania

      Bonjour
      En fait cela venait d’un problème d’affichage du au CSS
      Merci

    Répondre à ce message

  • 3

    Bonsoir
    J’ai suivi les explications d’un post du forum plus bas pour afficher les événements différents avec plusieurs couleurs en fonction du mot clé de l’article et j’aimerai que ces couleurs s’affichent visuellement toujours dans le même ordre mais je n’y arrive pas.
    j’ai rajouté par num titre à la boucle événements, ce qui en classe certaines mais pas toutes...
    http://www.gite-cabane-ali-nais.com/Tarifs-Formulaire-de-reservation (par ex. voir décembre 30/12 au 03/01, le vert et orange ne sont pas sur la même ligne)... il parait que ça perturbe les internautes qui veulent réserver...
    Merci

    #HTTP_HEADER{Content-type:text/javascript;}
    [
    <BOUCLE_evenements(EVENEMENTS){', '}{par num titre}
    {agendafull date_debut,date_fin, periode,
    	#VAL{Y}|date{#ENV{start}}, #VAL{m}|date{#ENV{start}},     #VAL{d}|date{#ENV{start}},
    	#VAL{Y}|date{#ENV{end}}, #VAL{m}|date{#ENV{end}}, #VAL{d}|date{#ENV{end}}}
    	>
    <BOUCLE_mot(MOTS){id_article}>
    	[(#ARRAY{id,#ID_EVENEMENT,
    	title,[(#_evenements:TITRE|html2unicode|unicode2charset)],
    	allDay,[(#HORAIRE|=={non}|?{#EVAL{true},#EVAL{false}})],
    	start,#DATE_DEBUT,
    	end,#DATE_FIN,
    	className,#TITRE,
    	description,[(#DESCRIPTIF|html2unicode|unicode2charset)]}|json_encode)]
    </BOUCLE_mot>
    </BOUCLE_evenements>
    ]
    • si j’ai bien compris 1 mot = 1 couleur. vous voulez classer par couleur -> donc vous voulez classer par mot.

      Donc il faut inverser la logique des boucles : d’abord une boucle MOTS, puis une boucle article dans la boucle mot, puis une boucle evenement dans la boucle article. Cela devrait normalement fonctionner (à tester)

    • Bonjour et merci Maïeul

      Après pas mal de tâtonnements j’ai fini par « presque » y arriver... Si pour des plages de dates, j’ai des évènements avec les 3 couleurs, celles ci s’affichent dans le bon ordre (violet, orange, vert) mais si par exemple j’ai des dates de réservation qui se chevauchent avec 1 ou 2 couleurs, ça ne marche plus...

      j’ai fini par comprendre que c’était logique, en fait, il faudrait que dans le calendrier un espace fixe soit allouée à chaque couleur... 1 couleur ---> on la voit et pas de couleur —> du vide. Je n’ai pas l’impression que l’on puisse gérer ça avec les css puisque les évènements sont positionnés en absolu avec left, top et width en fonction des dates.

      Sinon, javascript désactivé j’aurai bien aimé n’afficher que les réservations à partir de la date du jour mais start<=0 comme age<=0 ne fonctionne pas sur la boucle agenda de agenda.html

      http://www.gite-cabane-ali-nais.com/spip.php?page=agenda2 (décembre est plus parlant visuellement)

      #HTTP_HEADER{Content-type:text/javascript;}
      #SET{virgule,''}
      [
      <BOUCLE_mots(MOTS){id_groupe=2}{par titre}>
      <BOUCLE_article(ARTICLES){id_mot}{par titre}>
      <B_evenements>
      #GET{virgule}
      <BOUCLE_evenements(EVENEMENTS){', '}{id_article}{!par date}
      {agendafull date_debut,date_fin, periode,
      	#VAL{Y}|date{#ENV{start}}, #VAL{m}|date{#ENV{start}},     #VAL{d}|date{#ENV{start}},
      	#VAL{Y}|date{#ENV{end}}, #VAL{m}|date{#ENV{end}}, #VAL{d}|date{#ENV{end}}}
      	>
      	<BOUCLE_mot(MOTS){id_article}>
      		[(#ARRAY{id,#ID_EVENEMENT,
      		title,[(#_evenements:TITRE|html2unicode|unicode2charset)],
      		allDay,[(#HORAIRE|=={non}|?{#EVAL{true},#EVAL{false}})],
      		start,#DATE_DEBUT,
      		end,#DATE_FIN,
      		className,#TITRE,
      		description,[(#DESCRIPTIF|html2unicode|unicode2charset)]}|json_encode)]
      	</BOUCLE_mot>
      </BOUCLE_evenements>
      #SET{virgule,','}
      </B_evenements>
      </BOUCLE_article>
      </BOUCLE_mots>
      ]
    • a oui, evidemment. Peut être une solution : mettre des faux evenements si pas de mots clef ? on laisse la boucle calculer cela.

      L’argument start je ne connais pas en general. Mais {age} ne peut pas fonctionner, il faut utiliser {age_debut} (de même que {date} n’existe pas, mais {date_debut}.

    Répondre à ce message

  • 1

    bonjour,
    sous agenda 3/ Spip 3
    je cherche a afficher la liste des prochains événements dans un encart en page accueil . Je n’arrive pas à afficher sous la forme 2/11/2015 ou 2/11/15 ou 2/11 ou 2 novembre . y a t-il un filtre de prévu pour une de ces variantes ?

    [ (#DATE_DEBUT|Agenda_affdate_debut_fin{#DATE_FIN,'non'})]

    j’obtiens la forme Lundi 2 novembre

    merci

    • bonjour,

      ce problème n’est pas en lien direct avec cet article. Il y eut mieux value poser la question sur les forums de SPIP.

      A ma connaissance il n’y a pas de filtre tout prêt faisant cela. Vous devriez utiliser les filtres |affdate classique en combinaison avec les filtres de test.

    Répondre à ce message

  • Michel Benoist

    Une simple directive dans la feuille de style privée
    div display:block ;
    suffit à rendre inopérant l’affichage de fullCalendar...
    cela m’a pris un bout de temps pour le découvrir.

    Répondre à ce message

  • 2

    Bonjour
    j’arrive à exploiter fullcalendar avec spip3.
    Cependant lorsque j’essaie de faire passer des paramètre avec [(#URL_PAGE{agenda.json}|parametre_url{nom,valeur})], celui-ci n’est pas reccupérable dans agenda.json avec #ENV{nom}.
    Avez-vous déjà tester ce processus avec succès ?

    • qu’elle est l’url affichée dans le squelette principal ? a priori aucune raison que si tu appel en passant le bon paramètre tu ne puisse pas le récupérer via env.

    • ça fonctionne désormais .... je ne sais pas quelle erreur j’ai commise car j’ai modifié du code depuis. Désolé pour le bruit...

    Répondre à ce message

  • 4
    Jaseur Boreal

    Bonjour,

    Je cherche le meilleur procédé de saisie d’évènements par des non-rédacteurs

    Je cherche un procédé, un système pour que l’organisateur d’un événement, qui n’a pas envie de devenir rédacteur enregistré sur le site, puisse saisir lui-même ses informations de son événement, titre, date, lieu, descriptif, et valider ses coordonnées.
    Sans avoir besoin de faire la demande pour devenir rédacteur.
    Un moyen d’agrandir une équipe de correspondants, pour de cette manière gagner une étape de saisie avant de controler et publier l’évènement dans l’agenda.
    Et cela sans avoir besoin de recopier des courriels.

    En fait une page de saisie de l’évènement pour des non-rédacteurs ou autre spip-système, pour des correspondants lecteurs non inscrits, qui pourront :

    • 1. saisir eux-mêmes un nouvel-événement avec les informations liées à cet événement : Titre, descriptif, dates, lieu, contacts, etc ...
    • 2. joindre une image , et/ou un lien vers une image si besoin
    • 3. laisser leurs coordonnées exactes
    • 4. valider des conditions d’utilisation

    Sans avoir besoin d’envoyer un courriel qu’il faudra recopier ...
    Sans recevoir des spam soviético-russes par le formulaire.
    Le site fonctionne avec le dernier cru d’ Escal sur un Spip 3.017

    Comment feriez-vous ?

    Merci de tous vos conseils
    Bruno

    • merci de poser la question sur le forum de agenda ou sur les listes des utilisateurs spip. Ici nous traitons uniquement de l’affichage de l’agenda. ... vous aurez plus de chance de trouver une réponse là bas.

      de tête je dirais : créer un formulaire dérivé de formulaire_editer_evenement. Mais c’est complexe, il faut connaître bien SPIP et le PHP.

    • Jaseur Boreal

      Merci pour la suggestion de glisser la question sur la liste spip.
      Il va me falloir attendre un prochain apéro-spip lillois pour questionner nos spécialistes des formulaires ... ;-)

    • Bonjour,
      Je me pose la même question, comment faire pour « recupérer » la saisie en ligne d’un événement par un non rédacteur pour le publier ensuite ? avez vous trouvé la solution ?
      Merci !

    • bonjour,

      même question, même réponse :)

    Répondre à ce message

  • 1

    Bonjour,

    Je viens vous demander de l’aide car je suis actuellement en train de travailler sur du fullcalendar. J’aurais voulu savoir s’il était possible de récupérer les infos depuis une base de données pour qu’elles soient retranscrits sous forme d’événements dans le calendrier au lieu de devoir cliquer pour créer l’événement. Est-ce que quelqu’un peut m’éclairer sur ce sujet ?

    • c’est à dire, que voulez vous :
      -  transformer votre base de donner en evenements spip
      -  ou bien : utiliser votre base de donnée pour afficher les évènements

      Dans le premier cas il faudra faire une moulinette d’insertions. Dans le second cas, il est tout à fait possible de faire des boucles SPIP sur un BDD externe. Voir http://programmer.spip.net/-Acceder-a-plusieurs-bases-de-.

      Dans ce cas, il faudra juste produire le json suivant le modèle que j’ai devellopé ici.

    Répondre à ce message

  • 11

    bonjour,

    Le calendrier marche très bien, je le fais fonctionner avec Zpip.

    Par contre, quand je clique sur un événement, je ne récupère pas la mise en page...

    Je ne sais pas trop si je dois poser la question ici ou sur une contrib sur Z, mais peut-être aurez-vous une idée ?

    http://librairielembarcadere.com/spip.php?page=agenda

    http://librairielembarcadere.com/spip.php?evenement57

    • problème de zpip, pas de ce plugin. Cela étant, je pense que votre problème c’est que vous avez mis le squelette page-agenda.html directement dans votre dossier « squelettes » et non pas dans « squelettes/contenu ».

    • hmm, c’est pas le cas, mais je vais voir avec zpip

      sinon, je me rend compte que mes événements ne sont visible que quand je suis logguée !

      on peut mettre des permissions spéciales ?

    • je voulais dire le fichier page-evenement.html.

      Il n’y pas de restriction d’affichage sur les évènements. Du reste, je vois bien l’évènement en étant non logé, ici http://librairielembarcadere.com/spip.php?evenement57.

    • j’ai regardé votre squelette :
      -  renommer contenu/evenement.html en contenu/page-evenement.html. Ceci explique votre bug d’affichage des évènements en Zpip.
      -  déplacer contenu/agenda.json.html à la racine de squelettes, et par conséquent modifier events: "spip.php?page=contenu/Fagenda.json" en events: "spip.php?page=agenda.json". Ceci explique votre non affichage lorsque non connecté. En effet, pour des raisons de sécurité, seuls les webmestres peuvent requeter directement sur un squelette dans un sous-dossier. Pour les visiteurs, le requete doit se faire sur le dossier principal (dans le cas de Z, celui-ci construit automatiquement le squelette du dossier principal).

    • oui, j’ai essayé diverses places, notamment pour agenda.json.html

      Du coup, c’est bon pour voir les evts sans être loggué, mais toujours pas de prise en compte de l’environnement zpip (meme avec page-evenement dans contenu)

    • envoyez moi un login/mdp d’admin en privé. il faut que j’utilise le mode debug pour saisir le pb.

    • ok, c’est un bug lié au fait que squelette_einsteiniumist redéfinit le squelette evenement.html (voir http://librairielembarcadere.com/plugins/auto/squelette_einsteiniumist/v1.0.2/evenement.html, le problème a été découvert grâce au var_mode=inclure).

      Donc il faut surcharger cette surcharge, en s’arrangeant pour appeler le code de Z. En mettant à la racine de squelettes un fichier evenement comprenant la ligne suivante :

      <INCLURE{fond=structure,type=page,composition=evenement,env} />

      Du reste je me demande si ce n’est pas un bug du squelette einsteiniumist, à signaler dans le forum du squelette en question.

    • ps : il reste encore un référence à inclure/agenda.json dans http://librairielembarcadere.com/squelettes/contenu/page-agenda.html.

      A corriger, car c’est problèmatique pour l’accessibilité (et le référencement !)

    • Ouiii, merci beaucoup !

    • oula, par contre il y a un souci sur le pied de page. je regarde d’où peut venir le pb.

    • a je viens de vérifier. C’est ta version du squelette qui est bugé. Jamais ce fichier page-agenda.html n’aurait du se trouver à la racine du plugin. Regarde le zip actuel http://files.spip.org/spip-zone/squelette_einsteiniumist.zip.

      Donc :
      -  supprimer le dossier auto/squelette_einsteiniumist
      -  reinstalle le plugin
      -  supprime le fichier evenement.html à la racine de ton dossier squelette

      et cela devrait jouer.

    Répondre à ce message

  • 1

    Question à propos du plugin « Organiseur » v0.8.10 intégré dans SPIP 3.0.17.

    1°) Chez mon hébergeur " PHP Version 5.3.3-7+squeeze19, MySql version 5.1.73

    Dans l’espace privé, la vignette « Agenda interne » me renvoie sur l’espace public avec le texte « Contenus publiés le lundi 10 novembre 2014 » par exemple.
    Ce lien ouvre le calendrier « Full Calendar » dans l’espace public sous une page SPIP minimaliste .

    2°) En local sous Wamp Apache 2.2.21, PHP 5.3.10, MySql 5.5.20

    Tout se passe normalement avec ouverture du calendrier dans l’espace privé.

    Que faire pour améliorer les choses ?
    Merci de votre aide.

    • Question à propos du plugin « Organiseur » v0.8.10 intégré dans SPIP 3.0.17.

      Problème résolu !!

      Il s’agissait d’une confusion entre deux calendriers implantés dans "squelettes".
      Un calendrier visible dans l’espace public et le FullCalendar dans l’espace privé.
      Tous les deux avec l’appellation "calendrier" .

      Désolé ... si quelqu’un s’est penché sur ma question !!!

    Répondre à ce message

  • 9

    Bonsoir,

    merci pour ce forum !

    Je suis un peu perdu, il faut dire les choses comme elles sont...

    J’ai un proto de site associatif sous SPIP 3, visible ici : http://sqgd.web4me.fr/spip/

    Souhaitant y adjoindre un agenda, j’ai donc installé Agenda 3.14.3 mais j’ai aussi Mini Calendrier 2.3.6... je suppose que ça n’était pas à faire ? En attendant, j’ai suivi au plus près les instructions données ici-même, mais j’ai une question quant aux squelettes agenda.html et/ou article.html, ce n’est pas clair, j’ai bricolé sans trop comprendre... ou alors il y a quelque chose d’implicite qui m’échappe !

    En attendant, sur les pages d’articles où est censé s’afficher un agenda apparaît l’erreur
    http://sqgd.web4me.fr/spip/spip.php?article1&var_mode=debug&var_mode_objet=html_a91b80203e88c621937dac15517c2969&var_mode_affiche=squelette#L0

    Bref je suis largué !
    merci pour le coup de main...
    Gérard.

    • a priori peut de chance que le minicalendrier rentre en conflit avec l’agenda, sur ce problème du moins. Mais j’avoue ne jamais avoir utilisé le mini-calendrier.

      Ton erreur je ne peux pas la voir car tu pointe vers un lien en var_mode=debug, dont l’accès est reservé aux administrateurs. Et en tant que simple visiteur je ne vois aucun bug.

      Si tu veux tu peux m’envoyer par message privé un login/mdp pour que je regarde.

    • hop, avec ton code j’ai pu voir ce qui clochait.

      Ton problème ne vient pas d’une mécompréhension du fonctionnement du calendrier mini, et n’a pas directement un lien avec mon article.

      Dans ton squelette article.html, tu appelle :

      #CALENDRIER_MINI{date, var_date, url, url_json}

      tu n’a du lire que la moitié de la doc de calendrier mini, puisque ce que tu copie c’est juste la doc de la syntaxe. Autrement dit, date, var_date, url, url_json sont à remplacer par d’autres valeurs.

      Il se trouve que la doc donne un exemple qui devrait correspondre à ton besoin ("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}})]

      Donc si tu remplace ton #CALENDRIER_MINI{date, var_date, url, url_json} par le code sus-cité tu devrais avoir ton calendrier mini fonctionnel.

    • Bonjour,

      merci pour ta réponse, ok en effet...

      Ce que tu as dit dans 1re réponse laissait à penser que MiniCalendrier est à part, les 2 pouvant coexister. Et là en quelque sorte tu dis qu’il faut laisser #CALENDRIER_MINI ?

      En fait, je me prépare à supprimer le plugin MiniCalendrier pour ne pas compliquer les choses.
      Je te confirme cependant que, pour le moment, je n’y comprends rien !...
      Merci pour ta patience !
      Gérard.

    • pour résumer, et parce que ma première réponse était écrite trop rapidement :

      -  le plugin agenda a besoin du plugin calendrier mini pour fonctionner.
      -  pour afficher les evenements tu peux utiliser #CALENDRIER_MINI ou bien un autre système, celui que je décrit dans le présent article. Ce sont juste deux modes de présentations différents (et tu peux ,ême en utiliser d’autres)

    • Bonsoir,

      merci pour ta réponse, bien utile, je me préparais à désactiver calendrier mini...

      J’ai donc corrigé comme demandé.

      A présent, le calendrier apparaît bien mais sans rien dans un jour où j’ai créé un événement, dans un article donné. Si je clique sur ce jour-là, j’ai l’erreur « Aucun squelette jour.html n’est disponible... »

      Merci !
      Gérard.

    • honnetement je ne sais pas, je ne connais pas le calendrier mini, ni comment il fonctionne...

    • Bonsoir,

      pourrais-tu expliciter ceci :

      « Il nous faut créer un squelette agenda.html complet (à savoir une page SPIP classique avec les balises etc), dans lequel nous mettons un div dont l’attribut id est agenda à l’endroit où nous souhaitons que l’agenda s’affiche. »

      En effet, je ne comprends pas bien la seconde partie de la phrase, car pour moi j’appelle la fonction d’affichage du calendrier via la balise #CALENDRIER_MIN dans par exemple un squelette article.html, à l’endroit ou je souhaite en effet que l’agenda s’affiche !

      Merci de m’éclairer !
      Gérard.

    • Bonjour,

      j’ai fini par comprendre un peu mieux et retomber sur mes pieds !

      Pour ceux que ça pourrait aider, voici quelques « tuyaux » basiques :

      1. il faut effectivement créer une page squelette agenda.html à part, avec dedans tout ce qui est préconisé par Maïeul au dessus ;
      2. cette page sera référencée à part, j’ai choisi, dans le sommaire, dans les rubriques, dans les articles, d’insérer un lien dans la div à droite « aside », car elle n’a pas le statut d’article et donc elle n’est pas incluse dans les menus automatiques SPIP ;
      3. du coup, je n’ai plus besoin d’insérer #CALENDRIER_MINI dans mon squelette article, le squelette agenda fait très bien l’affaire, inutile d’avoir un calendrier dans chaque article.

      Il y a certainement d’autres façons de procéder, plus académiques, je ne sais pas... En tout cas, ça semble bien marcher, je ne boude pas mon plaisir d’y être arrivé !

      Merci à Maïeul !
      Gérard.

    • c’est exactement le but de cette contrib : un agenda sur une page à part. Pas la même chose qu’un agenda sur la page d’article...

    Répondre à ce message

  • 1

    Bonjour,
    je débute avec SPIP. Mêmes si la documentation ne manque pas, les écueils sont nombreux.

    Le plugin Agenda 3.0 correspond à mon attente ; après quelque tâtonnements j’ai configuré un agenda qui me satisfait : les évènement s’affichent à ma convenance.

    J’aimerais désormais coupler cet Agenda avec Calendrier Mini 2.0.
    Pour cela j’ai intégré le code suivant dans un squelette ’complet’ :

    (#CALENDRIER_MINI#ENVdate,
    date,
    #URL_PAGEagenda,
    #URL_PAGEagenda.json)]

    Les jours avec évènements apparaissent dans le Calendrier Mini  ; Toutefois lorsque je clique sur un jour, je suppose que je devrais voir s’afficher l’Agenda pour la période correspondante. Or rien ne se passe ; la période correspondant au jour courant reste à l’affichage.

    J’espère être assez clair !

    Pouvez-vous me fournir une piste d’investigations, ou mieux encore la solution à mon problème ?

    Merci d’avance.
    Bonne fin de journée.

    • Je ne sais pas si tu as trouvé depuis.
      Il faut appeler la page agenda jour :

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

      dd

    Répondre à ce message

  • 5

    bonjour,

    Ce plugin marche très bien chez moi (bien qu’il n’y ait pas de bulle au survol avec le descriptif : est-ce normal ?), et j’aimerai maintenant le modifier un peu.

    en effet, je l’utilise pour afficher des événements pour un mois qui sont regroupés dans un seul article. Du coup, quand on clique sur un des événements, on arrive sur l’article avec tout, alors que je préfèrerais avoir une page avec seulement l’événement en question (ou les événements du jour)

    Il me semblait bien avoir vu un jour un tuto qui expliquait comment créer un squelette de page pour un jour, mais c’était il y a bien longtemps, et je ne sais pas si c’est toujours d’actualité pour Spip 3 (et en plus, je ne trouve plus le lien).

    Une idée ?

    • cela n’a pas grand chose à voir avec le plugin. Tu utilise quel squelette ?

    • einsteinumlist, mais j’ai fait la page d’événement à partir du tuto Agenda... Quand on clique sur un événement et qu’on arrive sur un article, c’est pas du fait de la page agenda ?

      http://librairielembarcadere.com/spip.php?page=agenda

    • je ne comprend pas : a tu d’abord créé une squelettes evenement ?
      ds tous les cas il faut que :
      -  tu ais un squelettes evenement.html, classique, ou simplement tu utilise une boucle evenement pour décrire ton evenement. C’est un squelette comme les autres, juste que tu prend un autre boucle.
      -  dans agenda.json.html tu remplace url,#URL_ARTICLE, par url,#URL_EVENEMENT,

    • ah ben oui, tout simplement, merci...
      Faut juste que je retrouve le squelette evenement.html de base pour le modifier...
      Il est quelque part, mais je ne retrouve pas où. Et avec &var_mode=inclure, j’arrive sur /tmp/quelquechose
      J’ai pourtant désactivé la compression dans les fonctions avancées

    • bizarre ca le bug avec var_mode=inclure. Tu devrais faire une copie d’écran et le reporté. Sinon a priori evenement de base se trouve dans le dossier du plugin

    Répondre à ce message

  • 2

    Bonjour

    J’utilise avec bonheur ce plugin dans mon squelette Escal sur un spip3 mais j’ai un petit souci. Dans la config du plugin agenda, quel que soit mon choix pour la présentation de l’agenda (« Début de la liste » et « Lister les événements sur »), l’affichage reste obstinément le même, c’est à dire sur l’affichage du mois en cours.

    Qu’aurais-je pu louper ?

    Répondre à ce message

  • 50

    Bonjour tout d’abors merci beaucoup pour ce guide j’ai voulu migrer en 3.0 et je comprenais pas pourquois le calendrier ne marchais pas.

    Est t’il possible d’afficher plusieurs évenements différent avec plusieurs couleur différente en fonction du mot clé de l’article ou se situe l’évenement ?

    Par exemple j’ai 1 article avec le mot clé « rouge » avec des évenement que je souhaite faire apparaitre dans un fond rouge dans le calendrier et 1 article avec le mot clé « bleu » avec des évenements que je souhaite faire apparaitre dans un fond bleu dans le calendrier

    J’ai essayé de coller le code du fichier agenda.json.html plusieurs fois d’affiler mais dès que j’en met plusieurs plus rien ne s’affiche.

    Merci d’avance pour vos réponses

    Cordialement

    Michael

    • oui, c’est possible. En fait, plusieurs solutions existent :
      -  on peut definir une classe css pour chaque évenement : c’est className
      -  on peut utiliser les options color, backgroundColor,textColor et borderColor

      Voir http://arshaw.com/fullcalendar/docs/event_data/Event_Object/.

      Toute la difficulté est d’ajouter l’une de ces options dans le #ARRAY, sachant qu’on ne peut faire de boucle à l’intérieur des accolades du #ARRAY.

      On va donc mettre la boucle mot autour du #ARRAY :

      [<BOUCLE_evenements(EVENEMENTS){', '}{par date_debut}	
      {agendafull date_debut,date_fin, periode,
      	#VAL{Y}|date{#ENV{start}}, #VAL{m}|date{#ENV{start}},     #VAL{d}|date{#ENV{start}},
      	#VAL{Y}|date{#ENV{end}}, #VAL{m}|date{#ENV{end}}, #VAL{d}|date{#ENV{end}}}
      	>
      <BOUCLE_mot(MOTS){id_article}>
      					[(#ARRAY{id,#ID_EVENEMENT,
      title,[(#_evenement:TITRE|html2unicode|unicode2charset)],
      allDay,[(#HORAIRE|=={non}|?{true,false})],
      start,#DATE_DEBUT,
      end,#DATE_FIN,
      url,#URL_ARTICLE,
      className,#TITRE,
      description,[(#DESCRIPTIF|html2unicode|unicode2charset)]}|json_encode)]
      </BOUCLE_mot>
      </BOUCLE_evenements>]

      J’attire votre attention sur :

      • #_evenement:TITRE qui permet d’afficher le titre de l’évènement (cf http://programmer.spip.net/Contenu-de-boucles-parentes)
      • sur le fait que le code que je vous fournit la présuppose que :
        • chaque article ait au moins 1 mot-clef
        • chaque article ait au plus 1 mot-clef

      Il vous faudra modifier la boucle mots pour ajouter des critères de selections ajouter une partie alternative.

      Ps : je ne comprends pas pourquoi vous avez essayé de dupliquer le code. D’où vous est venu cette idée ?

    • Je ne comprend pas bien avec cette syntaxe comment je peu faire pour que les évenements de l’article avec le mot clé « rouge » aparraissent en rouge et ceux de l’article avec le mot clé « bleu » aparraissent en bleu. Vu qu’il n’y à pas de réstriction lié à un mot clé spécifique.

      Cordialement

      Brunner Michael

    • vous connaissez les css ? la on indique juste que chaque evenement doit porter la classe du mot lié à son article. Ensuite à vous de styler.

      Je ne vois pas quoi vous dire de plus.

    • Le probleme c’est que les mots clé que j’ai utilisé ne sont qu’un exemple (pour explicité mon idée)

      Les mots clé ne sont pas des couleurs (Louveteaux, Scouts, Pionniers, Compagnons, Groupe)

      Cordialement

      Brunner Michael

    • vous ne m’avez pas répondu : connaissez vous les css ? car ma réponse depend de vos connaissances …

    • Oui je connai un peu les css mais sans plus

    • En regardant mes articles contenant mes évennements je me suis rendu compte qu’ils n’ont pas qu’un seul mot clé (2, voir 3 ou 4 en général)

      Coordialement

      Brunner Michael

    • il vous faut donc modifier la boucle mots pour ne choisir d’afficher qu’un mot clef. Je vous invite à lire la documentation sur les critères de la boucle mots.

      Pour revenir au pb de couleur : supposons que vous avez associé le mot clef « toto », dont vous voudriez que les événements soient en rouge.

      Avec le code que je vous indique, vous allez inserer une class « toto » à l’évenement. En utilisant le Firebug (si vous êtes sous firefox, sinon les outils devellopeurs sous Safari ou Chrome), vous pouvez regarder la structure html de votre page, et notamment de votre agenda.

      Vous pouvez alors mettre le code suivant dans votre feuille de style :

      .fc-view .toto,.fc-view .toto .fc-event-skin{
          background-color:red;
          border-color:red;
      }

      Ceci aura pour effet de mettre en fond rouge et bordure rouge :
      -  le lien de l’évenement (.fc-view .toto)
      -  l’évènement proprement dit (fc-view .toto .fc-event-skin).

      Pour mieux comprendre les css, je vous invite à lire des tutoriels et a vous servir d’un outils comme firebug.

    • Est il possible de rajouter des boucles au dessus de la boucle evenement ?

      d’une forme comme celle ci par exemple

      #HTTP_HEADER{Content-type:text/javascript;}
      [<BOUCLE_rubrique(RUBRIQUES){par titre}{mots.titre="agenda"}>
      <BOUCLE_evenements(EVENEMENTS){', '}{par date_debut}{id_rubrique}
      {agendafull date_debut,date_fin, periode,
      	#VAL{Y}|date{#ENV{start}}, #VAL{m}|date{#ENV{start}},     #VAL{d}|date{#ENV{start}},
      	#VAL{Y}|date{#ENV{end}}, #VAL{m}|date{#ENV{end}}, #VAL{d}|date{#ENV{end}}}
      	>
      					[(#ARRAY{id,#ID_EVENEMENT,
      title,[(#TITRE|html2unicode|unicode2charset)],
      allDay,[(#HORAIRE|=={non}|?{true,false})],
      start,#DATE_DEBUT,
      end,#DATE_FIN,
      url,#URL_ARTICLE,
      description,[(#DESCRIPTIF|html2unicode|unicode2charset)]}|json_encode)]
      </BOUCLE_evenements>
      </BOUCLE_rubrique>]

      Car en testant cette boucle je n’ai aucun évennements qui s’affiche dans l’agenda alors que sans la boucle de rubriques les évenements s’affichent

      Coordialement

      Brunner Michael

    • Oui c’est possible. A mon avis c’est votre boucle rubriques qui n’est pas correct.

      {mots.titre="agenda"}> devrait être {titre_mot=agenda}

    • Justement non avec spip 3.0 l’écriture titre_mot=agenda n’est plus valide, il faut écrire mots.titre=« agenda ».

      J’ai quasiment tous mon squelette de site qui fonctionne avec des mots clé et fonctionne avec la deuxième écriture.

      Cordialement

      Brunner Michael

    • très étonné de ce changement. Il est vrai que je n’ai jamais utilisé non plus l’ancienne syntaxe.

      Quoiqu’il en soit, cela sort du pb du plugin agenda. Il vous faudrait faire une boucle similaire de test avec juste du html et voir ce qui cloche.

    • En faisant une les meme boucles en html cela marche parfaitement

      Voici ce que j’ai mis pour le moment dans agenda.json.html

      #HTTP_HEADER{Content-type:text/javascript;}
      [<BOUCLE_rubrique_agenda(RUBRIQUES){mots.titre="agenda"}{tout_voir}>
      <BOUCLE_evenements(EVENEMENTS){', '}{par date_debut}	
      {agendafull date_debut,date_fin}
      	>
      					[(#ARRAY{id,#ID_EVENEMENT,
      title,[(#TITRE|html2unicode|unicode2charset)],
      allDay,[(#HORAIRE|=={non}|?{true,false})],
      start,#DATE_DEBUT,
      end,#DATE_FIN,
      url,#URL_ARTICLE,
      description,[(#DESCRIPTIF|html2unicode|unicode2charset)]}|json_encode)]
      </BOUCLE_evenements>
      </BOUCLE_rubrique_agenda>]

      et ce que j’ai mis dans une page test.html

      [<BOUCLE_rubrique_agenda(RUBRIQUES){mots.titre="agenda"}{tout_voir}>
      <br>
      #TITRE
      <br>
      <BOUCLE_evenements(EVENEMENTS){', '}{par date_debut}{id_rubrique}	
      {agendafull date_debut,date_fin}
      	>
      [(#ARRAY{id,#ID_EVENEMENT,
      title,[(#TITRE|html2unicode|unicode2charset)],
      allDay,[(#HORAIRE|=={non}|?{true,false})],
      start,#DATE_DEBUT,
      end,#DATE_FIN,
      url,#URL_ARTICLE,
      description,[(#DESCRIPTIF|html2unicode|unicode2charset)]}|json_encode)]
      </BOUCLE_evenements>
      </BOUCLE_rubrique_agenda>]

      Cette page de test me donne le retour suivant

      Agenda 
      {"id":"1","title":"Jour de l\u2019an","allDay":"true","start":"2011-01-01 00:00:00","end":"2011-01-01 00:00:00","url":".\/?Jours-feries","description":""} , {"id":"5","title":"Vacances de No\u00ebl","allDay":"true","start":"2011-12-17 00:00:00","end":"2012-01-02 00:00:00","url":".\/?Vacances","description":""} , {"id":"2","title":"No\u00ebl","allDay":"true","start":"2011-12-25 00:00:00","end":"2011-12-25 00:00:00","url":".\/?Jours-feries","description":""} , {"id":"3","title":"Saint Etienne","allDay":"true","start":"2011-12-26 00:00:00","end":"2011-12-26 00:00:00","url":".\/?Jours-feries","description":""} , {"id":"4","title":"Jour de l\u2019an","allDay":"true","start":"2012-01-01 00:00:00","end":"2012-01-01 00:00:00","url":".\/?Jours-feries","description":""} , {"id":"6","title":"Vacances d\u2019Hiver","allDay":"true","start":"2012-02-25 00:00:00","end":"2012-03-11 00:00:00","url":".\/?Vacances","description":""} , {"id":"10","title":"Vendredi saint","allDay":"true","start":"2012-04-06 00:00:00","end":"2012-04-06 00:00:00","url":".\/?Jours-feries","description":""} , {"id":"11","title":"lundi de P\u00e2ques","allDay":"true","start":"2012-04-09 00:00:00","end":"2012-04-09 00:00:00","url":".\/?Jours-feries","description":""} , {"id":"7","title":"Vacances de P\u00e2ques","allDay":"true","start":"2012-04-21 00:00:00","end":"2012-05-06 00:00:00","url":".\/?Vacances","description":""} , {"id":"12","title":"F\u00eate du travail","allDay":"true","start":"2012-05-01 00:00:00","end":"2012-05-01 00:00:00","url":".\/?Jours-feries","description":""} , {"id":"13","title":"8 mai 1945","allDay":"true","start":"2012-05-08 00:00:00","end":"2012-05-08 00:00:00","url":".\/?Jours-feries","description":""} , {"id":"14","title":"Ascension","allDay":"true","start":"2012-05-17 00:00:00","end":"2012-05-17 00:00:00","url":".\/?Jours-feries","description":""} , {"id":"38","title":"F\u00eate de groupe 2012","allDay":"false","start":"2012-05-19 17:00:00","end":"2012-05-19 23:30:00","url":".\/?Agenda-groupe","description":""} , {"id":"55","title":"Cr\u00e9mation du b\u00fbcher","allDay":"false","start":"2012-05-26 21:30:00","end":"2012-05-27 00:00:00","url":".\/?Agenda-groupe","description":"
      \u00c9tant donn\u00e9 que nous n\u2019avons pas pu allumer notre b\u00fbcher durant la f\u00eate de groupe car le temps ne le permettais pas, nous vous proposons de venir ce samedi participer \u00e0 la cr\u00e9mation de celui-ci en famille ou entre amis.<\/p>"} , {"id":"8","title":"Vacances d\u2019\u00e9t\u00e9","allDay":"true","start":"2012-07-06 00:00:00","end":"2012-09-02 00:00:00","url":".\/?Vacances","description":""} , {"id":"15","title":"F\u00eate nationale","allDay":"true","start":"2012-07-14 00:00:00","end":"2012-07-14 00:00:00","url":".\/?Jours-feries","description":""} , {"id":"16","title":"Assomption","allDay":"true","start":"2012-08-15 00:00:00","end":"2012-08-15 00:00:00","url":".\/?Jours-feries","description":""} , {"id":"9","title":"Vacances de la toussaint","allDay":"true","start":"2012-10-27 00:00:00","end":"2012-11-07 00:00:00","url":".\/?Vacances","description":""} , {"id":"17","title":"Toussaint","allDay":"true","start":"2012-11-01 00:00:00","end":"2012-11-01 00:00:00","url":".\/?Jours-feries","description":""} , {"id":"18","title":"No\u00ebl","allDay":"true","start":"2012-12-25 00:00:00","end":"2012-12-25 00:00:00","url":".\/?Jours-feries","description":""} , {"id":"19","title":"Saint Etienne","allDay":"true","start":"2012-12-26 00:00:00","end":"2012-12-26 00:00:00","url":".\/?Jours-feries","description":""} 
      Agenda louveteaux / Jeannettes 
      {"id":"26","title":"Weekend de Neige","allDay":"false","start":"2012-02-11 14:30:00","end":"2012-02-12 17:00:00","url":".\/?Agenda-louveteaux-Jeannettes-14","description":"
      
      Bonjour \u00e0 tous ,<\/p>\n\n
      
      Eh voil\u00e0, comme certain l\u2019on remarqu\u00e9 sur les circulaires, la date du weekend de neige viens de tomber. 
      Pour tout ceux qui s\u2019inqui\u00e8te du mauvais temps, ce weekend devrai se faire dans un chalet. <\/p>\n\n
      
      Passer une bonne semaine.<\/p>\n\n
      
      [\/ La ma\u00eetrise louveteaux<\/span> \/]<\/p>"}

      Donc je ne vois pas d’ou peu venir le probleme

      Par contre j’ai remarquer un autre petit souci
      J’ai écrit {agendafull date_debut,date_fin} à la place de 2.

      {agendafull date_debut,date_fin, periode,
              #VAL{Y}|date{#ENV{start}}, #VAL{m}|date{#ENV{start}},     #VAL{d}|date{#ENV{start}},
              #VAL{Y}|date{#ENV{end}}, #VAL{m}|date{#ENV{end}}, #VAL{d}|date{#ENV{end}}}

      Car lorsque les évenements s’affichent et qu’ils dure au dela du mois en cours en changement de mois les évenements ne sont pas affiché alors qu’en gardant uniquement {agendafull date_debut,date_fin} les évenement sont bien affiché sur toutes leur durée

      Cordialement

      Brunner Michael

    • il faudrait que vous le critère {', '} dans la boucle rubriques, pour avoir une virgule au changement de rubrique.

      Je n’ai rien compris à votre dernière remarque.

    • En ajoutant {', '} dans la boucle rubrique cela ne change absolument rien je n’ai toujours aucun évenement qui s’affiche dans l’agenda

      Pour ma dèrnière remarque n’en tenez pas compte me suis planté

      Cordialement

      Brunner Michael

    • vous auriez un site publique, que je regarde ?

    • Non le site publique que j’ai es en 2.1.17 je suis entrain de le mettre a jour en 3.0 en local pour être sur que tout fonctionne lorsque je migrerais en 3.0 sur le net.

      Cordialement

      Brunner Michael

    • pourriez vous alors m’envoyer par email (monprenom@monprenom) un dump de la BDD ?

      je regarderai dans la semaine

    • Sous quel format et à quelle adresse mail ?

      Coordialement

      Brunner Michael

    • mon adresse c’est monprenom@monprenom.net (et monprenom c’est maieul).

      mettez en txt brut

    • ok, alors j’ai compris d’où vener le problème :

      Pour que le JSON soit correcteur, il faut qu’il se présente de la manière suivante :

      [
      {une entrée},
      {une entrée},
      {une entrée}
      ]

      Or en l’occurence elle se présentait de la forme suivante :

      [
      {une entrée},
      {une entrée},
      {une entrée},
      ,
      ,
      ,
      ]

      Pourquoi ces virgules en trop ? Parce que certaines rubriques avec le mot clef Agenda n’avaient pas d’articles avec des évènements, mais étaient bouclés pour autant. Résultats : on avait des virgules entre des rubriques, qui renvoyaient du vide. Conséquence : cela ne pouvait marcher.

      Une solution (pas forcéement la meilleure, mais la plus simple en première approche) pour éviter d’avoir à vérifier l’attribution du mot clef, c’est d’utiliser le code suivant :

      #HTTP_HEADER{Content-type:text/javascript;}
      #SET{virgule,''}
      [<BOUCLE_rubrique_agenda(RUBRIQUES){mots.titre="agenda"}{tout_voir}>
      <B_evenements>
      #GET{virgule}
      <BOUCLE_evenements(EVENEMENTS){', '}{par date_debut}{id_rubrique}	
      {agendafull date_debut,date_fin}
      	>
      
      					[(#ARRAY{id,#ID_EVENEMENT,
      title,[(#TITRE|html2unicode|unicode2charset)],
      allDay,[(#HORAIRE|=={non}|?{true,false})],
      start,#DATE_DEBUT,
      end,#DATE_FIN,
      url,#URL_ARTICLE,
      description,[(#DESCRIPTIF|html2unicode|unicode2charset)]}|json_encode)]
      </BOUCLE_evenements>
      #SET{virgule,','}
      </B_evenements>
      </BOUCLE_rubrique_agenda>
      ]

      Explication : on initialise d’abord la variable virgule avec une valeur vide. Ainsi, à la première itération de la boucle RUBRIQUES, nous n’avons pas de virgule (en gros, pas de virgule immédiatement après le [).

      La première fois que la boucle EVENEMENTS retourne du contenu, on met dans cette variable virgule une … virgule. Résulat : au débuts des boucles EVENEMENTS suivantes (celles qui retournent du contenu), nous avons une virgule.

      Conséquence : on obtient bien :

      [
      {une entrée},
      {une entrée},
      {une entrée}
      ]
    • ps : j’ai rapidement regardé le code de vos squelettes. Quitte à migrer en SPIP 3, je vous conseille de lire mon article sur 7 bonnes pratiques de développement avec SPIP.

    • Ca marche nickel. Mais j’ai encor une petit question comment on fait pour qu’il affiche les horaires de l’évenement si l’évenement en a, et comme actuellemtn si il dure toute la journée ?

      Est il possible d’augmenter la taille du texte affiché dans le calendrier ?

      Cordialement

      Brunner Michael

    • il faut que vous lisiez la documentation de FullCalendar. Il doit y avoir une option pour les horaires. Pour la taille du texte, je vous invite à inspecter le code html avec firebug pour connaitre les classes css à styler.

    • Bonjour j’ai encor un petit problème.

      Mon site utilise barre de gestion de coockies qui sont en fait un #ID_secteur de l’icone selectionné dans la barre haute du menu, j’ai du faire cela car en fonction de ce coockie le site n’affiche pas les même données.

      M’a question est donc la suivante, sur l’ancienne version de spip et de l’agenda, j’avait fait plusieurs boucle de selection d’évennement pour que seule les évenement dans l’#ID_secteur identique au coockie ne s’affiche, ainsi que les évenements contenu dans les rubriques situé à la racine du site qui contienne un certain mot clé (par exemple « louveteaux »). Ne pouvant pas dupliquer le code #array comment puis continuer à ne garder que les évenement qui m’intéresse ?

      Coordialement

      Brunner Michael

    • ce n’est pas qu’il ne faut pas dupliquer le code, mais je vois pas en quoi cela vous aiderait. D’une manière générale, c’est un principe en informatique : on évite autant que possible de dupliquer le code, question de maintenance.

      Une solution serait de passer le secteur qui vous intéresse lors de l’appel au json :

      [(#URL_PAGE{agenda.json,id_secteur=#ID_SECTEUR})]

      pour avoir un json par secteur.

      Et dans le squelette json, rajoutez le critère {id_secteur ?} à la boucle evenements (le ? est là pour indiquer qu’il ne faut pas tenir compte du critère si aucun secteur n’est passé).

      Ensuite

    • Je pense que vous avez oublié de mettre la suite car a la fin de votre message il y à ensuite

      Coordialement

      Brunner Michael

    • et ben non, il y pas de suite ;-)

      normalement ca suffit …

    • Pour ce qui est de l’affichage des horaires dans l’agenda je pense avoir trouvé d’ou vien le problème mais je ne sait comment le résoudre. Lorsque les donnée sont enodé via |json_encode cela donne quelque chose comme ceci « allDay » :« false » alors que dans la doc de fullcalendar il précise bien :

      allDay

      true ou false. Facultatif.

      Si un événement spécifique se produit à une heure du jour. Cette propriété affecte si le temps d’un événement est montré. En outre, dans les points de vue l’ordre du jour, détermine si elle est affichée dans la « toute la journée » section.

      Ne pas inclure les guillemets autour de votre true / false. Cette valeur n’est pas une chaîne !

      Lors de la spécification des objets d’événements pour des événements ou des eventSources, en omettant cette propriété, il sera hériter de allDayDefault, qui est normalement vrai.

      Donc j’ai l’impression que le problème vien du fait qu’il y à des guillement autour de false, quand l’agenda récupère les données des évenements et il ne l’interprete donc pas corectement

      Auriez vous une idée pour résoudre ce problème

      Cordialement

      Michael

    • vous avez raison sur le diagnostic. Je vais essayer de trouver comment résoudre.

    • donc la solution est de remplacer :

      [(#HORAIRE|=={non}|?{true,false})]

      par

      [(
      #HORAIRE|=={non}|
      ?{#EVAL{true},#EVAL{false}})]
    • Merci pour les horaires

      Encor une petite question est il possible de rajouter des valeurs à la suite dans le tableau array que l’on crée dans nos boucles ?

      Coordialement

      Brunner Michael

    • pas compris la question, mais je vous invite à lire la documentation de #ARRAY.

    • En fait j’aimerais pouvoir ajouter des valeur en dehors de la boucle dans le tableau puis le convertir en json

    • encore une fois lisez la documentation de #ARRAY. On explique comment stocker et manipuler les tableaux. Et si vraiment vous n’y arrivez pas, revenez. Mais je ne vais pas vous donner tout de suite la solution, cela ne serait pas pédagogique.

    • Justement c’est ce que j’ai déja fait j’ai essayé d’abord avec le filtre push, qui ne marche pas du fait qu’il numérote les clés automatiquement en partant de 0 donc cela ne nous interesse pas.

      Puis j’ai essayé avec le filtre |array_merge avec ce filtre cela fontionne mais le probleme est le suivant : Attention (1) : si une clé apparaît plusieurs fois, seule la dernière valeur pour cette clé sera retenue

      Donc dans mon cas cela ne m’arrange pas du tout, j’aimerais un filtre similaire mais qui ajoute les valeurs à la suite dans le tableau que la clé éxiste déja ou non.

      Cordialement

      Brunner Michael

    • ce que vous demandez n’est conceptuellement pas possible, puisque par principe dans un tableau associatif une clef est unique. Pour quoi avez vous besoin de cela ?

    • J’en ai besion afin de résoudre mon probleme afin d’avoir le calendrier qui ne garde que les évenement qui m’intéresse en fonction du cockie enregistrer sur le pc

      CAD une boucle qui ne prend que les évenement de l’id_secteur = au coockie et une boucle qui ne prend que les évnements de la rubrique racine qui contient un mot clé qui dépend du coockie enregistré

      Coordialement

      Brunner Michael

    • Par contre dans le tableau crée par le fichier agenda.json.html il y à plusieurs fois la même clé (pour chaque évenement) ? En quoi est ce différent ?

    • vous confondez les niveaux de tableau.

      Il faut comprendre que vous avez un tableau json principal, qui possède une entrée par évenement. Chacune de ces entrée est elle même un tableau json. Pour des raisons pratiques, on passe d’abord par un tableau #ARRAY, donc SPIP / PHP, que l’on convertir en tableau json.

      Le tableau principal est délimité par [], chaque entrée est séparée de la précédente par une virgule. C’est un tableau de type numérique : la clef d’une entrée est simplement un nombre, qui n’est pas affiché, puisque ce nombre est automatiquement incrémenté.

      En revanche les « tableau-evénements » sont délimités par {}. Chaque entrée possède une clé alphabétique, entre guillemet, et une valeur, entre guillemet. La clef est séparée de la valeur par les :. Et les entrée sont séparés les unes des autres par des virgules.

      Dans le cas qui vous intéresse, il faut donc que vous fassiez une boucle par type de requete, qui a utilisé doublons pour ne pas avoir d’évenements en double.

      [
      <BOUCLE_1(EVENEMENTS){critères}{doublons}{","}>
      </BOUCLE_1>
      <BOUCLE_2(EVENEMENTS){critères2}{doublons}{","}>
      </BOUCLE_2>
      ]

      pb : il faut mettre une virgule entre les 2 boucles, et ce uniquement si les 2 boucles retournent du contenu. La solution :

      [
      <BOUCLE_1(EVENEMENTS){critères}{doublons}{","}>
      </BOUCLE_1>
      [(#SET{virgule,","})]
      </B_1>
      <B_2>
      #GET{virgule}
      <BOUCLE_2(EVENEMENTS){critères2}{doublons}{","}>
      </BOUCLE_2>
      ]

      Si la boucle 1 renvoie quelque chose, on initialise la variable virgule. Si la boucle 2 renvoie quelquechose, on l’affiche avant de retourner le contenu de la boucle.

      A noter qu’on pourrait aussi remplir un mega tableau #ARRAY, puis le transformer. Mais étant donné les difficultés que vous semblez avoir à comprendre les tableau, je préfére mieux-pas.

    • en gros je doit faire quelque chose dans le genre :

      [
      <BOUCLE_1(EVENEMENTS){critères}{doublons}{","}>
      [(#ARRAY{id,#ID_EVENEMENT,
      title,[(#TITRE|html2unicode|unicode2charset)],
      allDay,[(#HORAIRE|=={non}|?{true,false})],
      start,#DATE_DEBUT,
      end,#DATE_FIN,
      url,#URL_ARTICLE,
      description,[(#DESCRIPTIF|html2unicode|unicode2charset)]}|json_encode)]
      </BOUCLE_1>
      [(#SET{virgule,","})]
      </B_1>
      <B_2>
      #GET{virgule}
      <BOUCLE_2(EVENEMENTS){critères2}{doublons}{","}>
      [(#ARRAY{id,#ID_EVENEMENT,
      title,[(#TITRE|html2unicode|unicode2charset)],
      allDay,[(#HORAIRE|=={non}|?{true,false})],
      start,#DATE_DEBUT,
      end,#DATE_FIN,
      url,#URL_ARTICLE,
      description,[(#DESCRIPTIF|html2unicode|unicode2charset)]}|json_encode)]
      </BOUCLE_2>
      ] 

      C’est cela ?

      Coordialement

      Brunner Michael

    • oui,

      n’oubliez simplement pas de remplacer

      [(#HORAIRE|=={non}|?{true,false})]

      par

      [(
      #HORAIRE|=={non}|
      ?{#EVAL{true},#EVAL{false}})]

      ps : inutile d’ajouter votre signature à chaque message : on sait que c’est vous, puis que vous remplissez le champ nom.

      ps 2 : si vous pouvez citer le code en utilisant <code class='spip'> cela permettrait d’avoir la coloration syntaxique.

    • Cela marche parfaitement, merci.

      J’ai encore 2 questions :

      Quel est le lien qui permet d’afficher directement l’agenda du jour lorsque l’on clique sur un jour du mini calendrier ?

      Est t’il possible d’afficher une infobulle lors du survol des évenements dans le calendrier ?
      Avec la version précédente je l’avait fait avec une class d’infobulle et les bornes
      <span>EN mettant ici les donnée que je veut avoir dans l'infobulle</span>,
      mais en essayant de l’ajouter dans le json cela ne le prend pas en compte, cela affiche tout directement sur le calendrier.

    • Je viens de passer mon site en version 3.04 mais la le calendrier et le calendrier mini ne fonctionne plus (ils fonctionnai parfaitement en local). A la place le site m’affiche le message d’erreur suivant : //scout.altkirch.free.fr/spip.php?page=calendrier mini event.json&lang=fr&start=1343772000&end=1346450400, json] 404

      D’ou peu venir le problème et comment le résoudre ?

      Petite info qui peu être utile mon site tourne chez free

      Merci d’avance

    • il faudrait que vous m’envoyiez l’url de la page qui pose problème pour que je puisse comprendre.

    • l’url du site est http://scout.altkirch.free.fr/ ne passer pas par IE le probleme fait planter tous le graphisme du site

      Apparement ca viendrai du fait que le serveur ne gere pas le json_encode du fait qu’il es en 5.1.3RC4-dev

      Est il possible de shinter ou d’ajouter la fonction ?

    • ouch,

      il faudrait poster une question sur spip-dev pour savoir si on peut avoir json encode sur une vieille version de PHP, cela sort de mes compétences (en tout cas des compétences que j’ai dans le délai qui arrive).

      Dans tout les cas je vous conseillerai personellement de prendre un autre hébergeur que Free. Aujourd’hui on en a des pas trop cher, et vous y gagneriez sans doute.

    • J’ai trouver une solution sur un site mais je ne vois pas comment la mettre en place sur un site spip

      http://www.g33k-zone.org/post/2009/06/05/json_encode-et-json_decode-en-PHP4

      j’ai collé la partis ci dessous dans mon fichier mes_fonctions.php et ajouter le fichier JSON.php dans le dossier de squelette, mais cela ne fonctionne pas (j’ai aussi tenté de modifier le json_encode du ficher agenda.json par #JSON_ENCODE, mais cela ne marche pas non plus

      <?php
      if ( !function_exists('json_decode') ){
      	require_once (dirname(__FILE__).'/JSON.php');
          function json_decode($content, $assoc=false){
      		if ( $assoc ){
      			$json = new Services_JSON(SERVICES_JSON_LOOSE_TYPE);
      		} else {
      			$json = new Services_JSON;
      		}
      		return $json->decode($content);
      	}
      }
       
      if ( !function_exists('json_encode') ){
      	require_once (dirname(__FILE__).'/JSON.php');
      	function json_encode($content){
      		$json = new Services_JSON;
      		return $json->encode($content);
          }
      }
      ?>

      Si jamais vous avez une idée je suis preneur

    • Grossbouff

      Bonjour,

      Merci Maieul pour cet article qui m’a permis d’implémenter sans problèmes un joli calendrier.

      Ayant le meme problème que Michael pour la gestion des couleurs des evenements (pour le meme besoin scout ;-), je l’ai résolu par la méthode conseillée :

      ...
      className,[(#_rub:TITRE|html2unicode|unicode2charset)],    
      ...

      Le titre de la rubrique contient le groupe => identifie la couleur

      dans le CSS

      .fc-view .Louveteaux,
      .fc-view .Louveteaux .fc-event-skin,
      .fc-view .Jeannettes,
      .fc-view .Jeannettes .fc-event-skin
      {
      		background-color: #E97A0E;
      		border-color: #E97A0E;
      }

      pour info notre site

    • tempusus

      Bonjour,

      Avez vous résolu votre problème avec json ?

      J’ai exactement le meme soucis :)

      merci d’avance

    Répondre à ce message

  • 1

    Dans cet article nous manipulons deux fichiers squelettes :
    article.html (qui contient le code nécessaire à l’affichage du calendrier).

    C’est le seul endroit de l’article ou « article.html » est nommé. A quel moment est-il donc manipulé ? Et pour en faire quoi (avec quel code dedans) ?

    Répondre à ce message

  • 4

    bonjour,

    je me penche de nouveau sur le calendrier.
    Petit problème : lorsque j’appelle la page agenda, les événements ne s’affichent pas.
    Si je vais sur le mois suivant, puis que je reviens, là, les événements apparaissent.

    Comment forcer le chargement des évenements ?

    • il faudrait que j’ai l’url de la page pour savoir d’où vient le pb... chez moi ca charge dès le début :p

    • même souci que pour avant : on a un $ et pas un jQuery.

      Tu dois avoir un plugin qui cause l’incompatibilité, mais je ne peux pas te dire lequel.

      Remplace

      loading: function(bool) {
      				if (bool) $('#calendrier-loading').show();
      				else $('#calendrier-loading').hide();
      			},

      par

      loading: function(bool) {
      				if (bool) jQuery('#calendrier-loading').show();
      				else jQuery('#calendrier-loading').hide();
      			},

      et cela devrait faire l’affaire ...

    • Oui !

      J’ai fait quelques tests, et le plugin qui était en cause était Squelette Einsteiniumist (mais j’en ai vraiment besoin...)

      Merci beaucoup, Maïeul !

    Répondre à ce message

  • 7

    bonjour,

    je tente de suivre le tuto sous spip 3+Zpip, mais j’ai l’impression qu’aucun appel n’est fait à fullcalendar

    Est-ce que cela ne viendrait pas de l’appel au js+css par
    #CHEMIN{lib/fullcalendar/fullcalendar.css}

    alors que le répertoire lib n’existe pas ? Mais où est fullcalendar, alors ?

    • non, car c’est un chemin au sens spip, donc à compter de la base de chaque dossier plugin (cf http://programmer.spip.net/La-notion-de-chemin).

      En l’occurrence le dossier liv devrait se trouver dans le plugin-dist organiseur. Vérifie si tu l’as bien.

    • il est bien présent.
      Mais lorsque j’appelle la page agenda, j’ai juste une liste d’événements qui s’affiche, et non un calendrier...

    • bon, je vais poser ma question très con :

      dans le <div id="agenda">
      , on met une boucle événement ? Genre celle qui est donnée en exemple ?

    • Tu as du louper la parti « Sélection des évènements à afficher ». Mais le mieux pour que je sache d’où vient le problème ait que j’ai accès à une version en ligne. Là comme cela le pb peut venir de plein d’endroit...

    • les evenements sont bien appelés dans la page json ? Je l’ai recopiée telle qu’elle.

      Le site : http://librairielembarcadere.com

      je t’envoie un login pour le voir en mp

    • hum, si je me rend sur http://librairielembarcadere.com/spip.php?page=agenda.json, j’ai un js qui contient

      test
      
      []

      Deja il faudra a un moment enlever ce « test ».

      Second souci : le js n’est effectivement pas chargé (on le voit en utilisant les outils de dev de firefox ou chrome).

      En consultant la console JS, on tombe sur cela :

      Uncaught TypeError: Property '$' of object [object Object] is not a function

      à la ligne qui est censer charger le json.

      Je ne sais pas d’où ca vient exactement, mais apparement jquery a une double syntaxe :
      -  syntaxe courte avec un $
      -  syntaxe longue avec jQuery.

      Il faudrait pour éviter le problème mettre jQuery à la place du $, dans le squelette principale.

      Cela étant, pas normal qu’il y ait cet erreur : il faudrait désactiver tous les plugins non indispensables pour voir si l’erreur est là. Puis réactiver un à un pour voir celui qui cause le souci.

    • oui, ça marche !!
      enfin, le calendrier s’affiche, et les événements en dessous, mais normalement, j’ai tous les ingrédients, yapuka les mettre ensemble

      j’avais mis le mot ’test’, car je ne savais pas si je devais mettre le fichier json dans le répertoire squelettes/contenu ou directement squelettes (pour ceux qui se posent la question, c’est dans squelettes...)

      il y a des incompatibilités entre mini-calendrier et le plugin en travaux : ça doit venir de là, le problème...

    Répondre à ce message

  • 2

    Bonjour,

    Cet agenda marche nickel pour un agenda qui regroupe tous les événements du site mais je dois maintenant faire un agenda par rubrique et je sèche complètement.

    J’ai inclus un calendrier sur une page rubrique avec la boucle englobante

    <BOUCLE_contenu_rubrique(RUBRIQUES){id_rubrique}> 
    [(#INCLURE{fond=contenu/page-agenda,id_rubrique,env})]
    
    ..

    mais je n’arrive pas à afficher uniquement les rubriques de la rubrique en cours (tous les événements du site s’y retrouvent).

    Et je cherche désespérément le fichier agenda.json.html mentionné dans la doc mais je ne le trouve pas. il faut le créer ? Mais alors où ?

    merci de votre aide

    dd

    • Je ne comprend pas comment tu peux dire que cela marche si tu n’as pas créé le fichier agenda.json.html.

      Je cite l’article

      Pour pouvoir afficher les évènements, il va falloir nous fabriquer un squelette agenda.json.html (cf. l. 7) qui retournera les évènements qui nous intéreressent sous forme de donnée JSON.

      .... une fois ce point résolu on pourra s’attaquer au reste de ton problème...

    • Bonjour et merci de ta réponse rapide,

      Tu as raison, je n’avais pas les yeux en face des trous : le fichier agenda.jason.html est bien présent dans /squelettes/

      Maintenant je fais apparaître les événements de la rubrique souhaitée en jouant sur les doublons :

      <BOUCLE_art(ARTICLES){id_rubrique=130}>
      <BOUCLE_calendrier(EVENEMENTS) {id_article=#ID_ARTICLE}{doublons}	>
      </BOUCLE_calendrier>
      </BOUCLE_art>
      
      <BOUCLE_evenements(EVENEMENTS){doublons}{', '}
      {par date_debut}{agendafull date_debut,date_fin, periode,
      .......

      C’est pas très dynamique mais je n’ai pas trouvé comment sélectionner les événements de la rubrique en cours ni d’une branche à l’intérieur d’un secteur.

      Dans l’idéal absolu ce serait bien si le lien sur le titre d’un événement au calendrier ouvrait une boite modale du genre :

      "[(#URL_PAGE{evenement,id_evenement=#ID_EVENEMENT})]"  title="#TITRE"
       onclick="jQuery.modalbox('[(#URL_PAGE{evenement,id_evenement=#ID_EVENEMENT}
      |parametre_url{url,#SELF}|parametre_url{var_zajax,contenu})]');return false;"

      à la place de #URL_EVENEMENT

      Ceci fonctionne sur un squelette article du site mais pas sur l’agenda.

      Il me reste aussi à trouver pourquoi il me rajoute le minicalendrier en plus sur la page :
      plugins/auto/agenda/v3.12.1/squelettes/extra1/agenda.html
      plugins/auto/calendriermini/v2.3.5/formulaires/calendrier_mini.html

      Bonne fin de journée
      dd

    Répondre à ce message

  • 6
    Thiébaut

    Grâce à votre article, j’ai pu mettre le calendrier dans le squelette d’une rubrique dédiée (dans mon site, il s’agit de la rubrique 3, donc du squelette rubrique=3.html placé dans le dossier squelettes.

    Lorsque je clique sur l’un des évenements, je suis renvoyé sur la page de l’article auquel il est rattaché.

    Je m’attendais à ce que les évènements liés à l’article s’affichent dans la page article, mais il n’y a rien. Je suppose qu’il faut ajouter une boucle dans le squelette article pour que ça fonctionne... mais laquelle ? (Je ne suis pas très doué...)

    Le contexte : un site d’information local qui recense tous les évènements de la Vallée du Cousin, un site naturel remarquable aux portes du Morvan (près d’Avallon). L’idéal serait que le descriptif détaillé des évènements s’affiche directement sous le calendrier, comme sur le site Un autre cantal.

    Merci par avance de me donner une piste !

    SPIP 3.0.10 + Agenda 3.12.0 + Mini Calendrier 2.3.4

    • il vous faut effectivement modifier votre page squelette article.html pour pouvoir y mettre une boucle EVENEMENTS.

      Après le contenu exact de cette boucle, et bien tout dépend de quels événements vous voulez afficher, et de ce que vous voulez afficher d’un événement.

      Je vous invite à regarder la description de la boucle EVENEMENTS dans Plugin Agenda pour SPIP 1.9.

      Ps : il faut absolument que je passe vous voir la prochaine fois que je suis au pavé de cousin le pont.

    • Thiébaut

      Eh bien, on dirait que le monde est petit, c’est rigolo ça. :-)

      J’ai simplement recopié la boucle EVENEMENTS dans l’article et ça fonctionne ! Merci.

      Maintenant, j’aimerais pouvoir afficher les évènements directement
      dans la rubrique calendrier, sous le calendrier, tel que sur le site Un autre cantal.

      Histoire de comparer ce qui est le plus ergonomique...

      Quelle genre de boucle pourrais-je mettre ? Si je mets le même code, il faudra que j’ajoute quelque chose pour qu’il recharge la rubrique en tenant compte de la date choisie sur le calendrier... Mais comment ? Si vous avez une piste, je suis preneur.

      Et en attendant, à bientôt au pavé !

    • je n’ai pas compris la question exacte...

    • Thiébaut

      Bon, eh bien c’est que je me suis mal exprimé. Voici une capture d’écran qui aidera peut-être.

      Actuellement, le calendrier s’affiche dans la rubrique « Le calendrier », qui lui est dédiée. Sur ce calendier, on peut lire les titres des objets « évènements ». Pour l’affichage complet d’un « évènement », il faut cliquer dessus et charger la page article correspondante.

      Cela est pertinent quand l’article apporte des informations vraiment complémentaires à celles que contient déjà l’objet « évènement ».

      Mais la plupart du temps, l’objet « évènement » est suffisamment complet pour se suffire à lui-même.

      Après réflexion, je trouverais donc plus ergonomique que l’évènement sur lequel on a cliqué s’affiche directement, avec tous ses éléments, sous le calendrier... (dans le squelette rubrique). Rien n’empêcherait que l’évènement contienne, quand cela se justifie, un lien de type « en savoir plus » pointant vers sa page article.

      Autrement dit, j’aimerais que l’on ne quitte pas le calendrier à chaque fois que l’on clique sur un évènement et si possible qu’il reste également sur le mois en cours.

      Mais cela est sûrement complexe à réaliser... Ne perdez pas votre temps précieux s’il vous semble que le jeu n’en vaut pas la chandelle !

      Merci.

    • c’est effectivement un brin complexe (il faudrait faire de l’ajax reload etc).

      Mais comme c’est pour le morvan, je veux bien essayer de m’entraîner sur le sujet ... mais il faudrait que vous m’envoyiez des squelettes + une petite base de donnée, pour que je fasse des tests. Là comme cela je n’ai pas la réponse directe

    • Thiébaut

      Merci pour votre réponse. Le jeu n’en vaut pas la chandelle... Ne perdons plus de temps avec ça.

      Si je dois vous solliciter à nouveau pour le site, je préfère que ce soit pour de meilleures raisons. Par le formulaire de contact de spip contrib, je vous ai envoyé un login et un mot de passe « auteur » pour que vous puissiez suivre l’évolution de valleeducousin.fr

      Quand il y aura suffisamment de contenu, dans quelques mois, il sera temps de voir si des trucs sont à améliorer.

      Merci pour tout !

    Répondre à ce message

  • Bonjour,

    Merci pour ce plugin fort utile que j’utilise depuis quelques temps.

    Un champs « email » associé à l’événement me semblerait utile pour permettre ce mode de contact (email seul ou formulaire de contact) et/ou mettre en place des notifications...

    Je n’en vois pas.

    Est-ce bien le cas ?
    Est-ce parce que le besoin n’est pas avéré ?
    Est-ce parce qu’un gentil développeur (ne pouvant tout faire en même temps !) est entrain de le concocter ?
    Est-ce parce qu’il y a une autre façon de le faire ?

    Qu’en pensez-vous ?

    Répondre à ce message

  • 2
    Tropicaloo

    Bonsoir,

    Je cherche à afficher également les annonces, les penses-bête et les messages internes pour un calendrier en accès restreint côté public.
    Quelles sont les balises, boucles, etc pour les annonces et penses-bête à mettre dans un agenda.json.html ? Je n’ai pour le moment rien trouvé sur les différents sites de SPiP sur les annonces et penses-bête.
    Merci pour votre aide.

    • la boucle est spip_messages (voir tester MESSAGES, sans garanti).

      Les balises disponibles sont :

      #ID_MESSAGE
      #TITRE
      #TEXTE
      #TYPE
      #DATE_HEURE
      #DATE_FIN
      #RV
      #STATUT
      #ID_AUTEUR
      #MAJ
      #DESTINATAIRES

      et les critères correspondant.

    • Tropicaloo

      Maïeul, merci beaucoup !

    Répondre à ce message

  • 12

    Hello

    Un exemple pour colorier les évènements en fonctions d’un mot clé.
    L’idée est de définir des mots-clés dans un groupe dédié avec les noms qu’on veut et de mettre une couleur dans le descriptif du mot-clé.
    Puis de récupérer la valeur de ce descriptif pour colorer les évènements de l’agenda.
    Si l’évènement à un mot-clé du groupe dédié (exemple Agenda_couleur), cette couleur est mise en fond, sinon, on met une couleur par défaut (grey par exemple).
    Et hop !

    #HTTP_HEADER{Content-type:text/javascript;}
        [<BOUCLE_evenements(EVENEMENTS){', '}{par date_debut}{titre_mot?}
        {agendafull date_debut,date_fin, periode,
                #VAL{Y}|date{#ENV{start}}, #VAL{m}|date{#ENV{start}}, #VAL{d}|date{#ENV{start}},
                #VAL{Y}|date{#ENV{end}}, #VAL{m}|date{#ENV{end}}, #VAL{d}|date{#ENV{end}}}
          >
        <BOUCLE_mot(MOTS){id_evenement}{type=Agenda_couleur}>
        [(#ARRAY{
        id,#ID_EVENEMENT,
        title,[(#_evenements:TITRE|html2unicode|unicode2charset)],
        allDay,[(#HORAIRE|=={non}|?{#EVAL{true},#EVAL{false}})],
        start,#DATE_DEBUT,
        end,#DATE_FIN,
        url,#URL_EVENEMENT,
        color,[(#DESCRIPTIF|PtoBR|html2unicode|unicode2charset)]
        }|json_encode)]
        </BOUCLE_mot>
        [(#ARRAY{
        id,#ID_EVENEMENT,
        title,[(#_evenements:TITRE|html2unicode|unicode2charset)],
        allDay,[(#HORAIRE|=={non}|?{#EVAL{true},#EVAL{false}})],
        start,#DATE_DEBUT,
        end,#DATE_FIN,
        url,#URL_EVENEMENT,
        color,grey
        }|json_encode)]
        <//B_mot>
        </BOUCLE_evenements>]

    Une question, à quoi sert le
    description,[(#DESCRIPTIF|html2unicode|unicode2charset)]
    proposé dans l’exemple de cet article ?

    • En fait ça fonctionne avec
      [(#DESCRIPTIF*)]
      ou
      [(#DESCRIPTIF|PtoBR|html2unicode|unicode2charset)]
      ou même
      [(#DESCRIPTIF|PtoBR)]

      C’est quoi le mieux ?

    • [(#DESCRIPTIF*)] n’est pas à utilisez, car cela signifie que les raccourcis typographiques ne sont pas interprétés, et donc qu’on peut se retrouver avec des accolades.

      [(#DESCRIPTIF|PtoBR)] interpréte les raccourcis, puis transforme les changement de paragraphes rupture de ligne. Pas mal, mais le problème est qu’on a des caractères accentués sous forme d’entités html, ce qui posera pb dans l’interprétation du js.

      [(#DESCRIPTIF|PtoBR|html2unicode|unicode2charset)] transforme les entités html en caractère unicode, puis fait éventuellement la conversion vers le charset du site -> la meilleure solution

    • Ok je vais suivre tes conseils avisés.

      Et le rôle de
      description,[(#DESCRIPTIF|html2unicode|unicode2charset)] ?

    • simplement indiqué qu’elle est la description de l’evt. Je comprend pas le pb

    • ça doit afficher le descriptif quelque part ? si oui, où ?
      Car je ne le vois pas apparaitre dans l’agenda alors que j’ai des évènements avec un descriptif.

    • aucune idée, il faut regarder je pense dans la doc de fullcalendar il doit y avoir des détails

    • C’est ce que je viens justement de faire. D’après ce que j’en ai compris, on doit pouvoir faire apparaitre ce descriptif dans une infobulle avec du javascript. Mais c’est un peu trop trapu pour moi. Ce serait sympa si c’était intégré dans Agenda ...

      Autre question : j’essaye de jouer avec la couleur du texte en rajoutant textColor,red dans le premier array et textColor,green dans le 2e mais tout les évènements se retrouvent écrits en rouge. L’idée est de jouer ensuite avec les filtres couleur_extreme et couleur_inverser

      Une idée ?

      #HTTP_HEADER{Content-type:text/javascript;}
          [<BOUCLE_evenements(EVENEMENTS){', '}{par date_debut}{titre_mot?}
          {agendafull date_debut,date_fin, periode,
                  #VAL{Y}|date{#ENV{start}}, #VAL{m}|date{#ENV{start}}, #VAL{d}|date{#ENV{start}},
                  #VAL{Y}|date{#ENV{end}}, #VAL{m}|date{#ENV{end}}, #VAL{d}|date{#ENV{end}}}
            >
          <BOUCLE_mot(MOTS){id_evenement}{type=Agenda_couleur}{0,1}>
          [(#ARRAY{
          id,#ID_EVENEMENT,
          title,[(#_evenements:TITRE|html2unicode|unicode2charset)],
          allDay,[(#HORAIRE|=={non}|?{#EVAL{true},#EVAL{false}})],
          start,#DATE_DEBUT,
          end,#DATE_FIN,
          url,#URL_EVENEMENT,
          color,[(#DESCRIPTIF|PtoBR|html2unicode|unicode2charset)],
          textColor,red
          }|json_encode)]
          </BOUCLE_mot>
          </B_mot>
          [(#ARRAY{
          id,#ID_EVENEMENT,
          title,[(#_evenements:TITRE|html2unicode|unicode2charset)],
          allDay,[(#HORAIRE|=={non}|?{#EVAL{true},#EVAL{false}})],
          start,#DATE_DEBUT,
          end,#DATE_FIN,
          url,#URL_EVENEMENT,
          color,#336699,
          textColor,green
          }|json_encode)]
          <//B_mot>
          </BOUCLE_evenements>]
    • il faut regarder ce que donne concrètement le fichier .js produit pour voir où se trouve le couac.

      Quand à intégrer à Agenda, c’est deja intégré. Le pb est d’intégrer dans full calendar, et ça et bien il faut lire la doc...

    • Vu mon niveau en js et en anglais, je crois que ça va attendre un peu ;-)

    • Bonjour à vous tous et merci pour vos différents commentaires qui aident bcp,
      J’aimerai savoir s’il ya possibilité de coloré les évènements SANS les mots clés, juste au niveau du css ?? Je m’explique, j’ai une rub agenda et deux sous rubrique (ssrub1 et ssrub2) et les évènements sont dans les articles des sous rub. L’idée est d’avoir
      1/ un fullcalendar qui affiche tous les évènements (ssrub1 et ssrub2) coloré en fonction des sousrubrique

      2/ Ensuite afficher le fullcalendar pour chaque sous rubrique et biensure on aura cette fois une seule couleur

      J’ai fais des boucles pour modifier mais rien ne marche. Merci de votre aide

    • Bonjour,
      J’ai réussi à faire ce que je voulais, mais mon problème où je peux placer mon class=toto pour jouer ensuite avec le css. Voici ma boucle :

      #HTTP_HEADER{Content-type:text/javascript;}
         [<BOUCLE_evenements(EVENEMENTS){', '}{par date_debut}{titre_mot?}
         {agendafull date_debut,date_fin, periode,
                 #VAL{Y}|date{#ENV{start}}, #VAL{m}|date{#ENV{start}}, #VAL{d}|date{#ENV{start}},
                 #VAL{Y}|date{#ENV{end}}, #VAL{m}|date{#ENV{end}}, #VAL{d}|date{#ENV{end}}}
           >
         <BOUCLE_mot(MOTS){id_evenement}{type=Agenda}>
         [(#ARRAY{
         id,#ID_EVENEMENT,
         title,[(#_evenements:TITRE|html2unicode|unicode2charset)],
         allDay,[(#HORAIRE|=={non}|?{#EVAL{true},#EVAL{false}})],
         start,#DATE_DEBUT,
         end,#DATE_FIN,
         url,#URL_ARTICLE,
         color,[(#DESCRIPTIF|PtoBR|html2unicode|unicode2charset)]
         }|json_encode)]
         </BOUCLE_mot>
         </BOUCLE_evenements>]
    • d’après la documentation de full calendar je ne vois pas d’endroit où préciser la classe ...

    Répondre à ce message

  • Bonjour,

    Les événements ne s’affichent pas dans le calendrier-mini avec calendrier_mini_event.json mais les articles, par contre, s’affichent correctement avec calendrier_mini.json

    Je ne vois pas quels paramètres j’aurais pu omettre ?

    J’utilise en local spip SPIP 3.0.5 [19905] et les plugins Agenda 3.11.2 - Mini Calendrier 2.3.4

    Voici le code que j’insère dans mon fichier sommaire.html :

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

    Toute aide est la bienvenue, merci :-)

    Répondre à ce message

  • 1
    ChristopheD

    Bonjour

    Un grand merci pour votre contribution, dont je me suis largement inspiré pour réaliser un calendrier récapitulant différents événements stockés dans ma base - la différence majeure est que je n’ai pas utilisé le plugin « événements », mais directement les articles, en récupérant leur date de publication et leur date de rédaction antérieure (considérée pour les besoins de la cause comme la date de fin des évènements).

    Tout va pour le mieux... hormis un détail qui coince tout : les évènements sont invisibles pour les visiteurs, et n’apparaissent que pour ceux qui se sont authentifiés sur le site (webmestre ou administrateurs).

    Vérification faite, pour les visiteurs, ce sont les différents fichiers xxxx.json.html qui sont inaccessibles (un lien vers eux retourne une page « agenda/xxx.json.html : accès interdit ».

    Une idée qui me sauverait la vie ?

    • ChristopheD

      Bon, j’ai résolu le problème sans piger son origine, simplement en changeant les fichiers incriminés de répertoire...

    Répondre à ce message

  • 7

    Bonjour dans le calendrier généré est il possible de faire afficher une infobulle (qui aparait lors d’un clic sur un évennement) comme celle qui s’affiche sur les agenda google. Avec le titre de l’évenement le lieu ect, ...

    Coordialement

    • Bonjour,

      encore une fois cela depend de FullCalendar et non pas de SPIP stricto sensu. Je vous invite donc à lire la documentation de FulLCalendar

    • Regarde ici http://contrib.spip.net/Squelette-d... c’est peut être une piste. Il y a des infobules effectivement qui s’affichent au survol, avec possibilité de présenter une image si elle a été placée dans le descriptif.
      NB : le plugin agenda est aussi nécessaire, l’affichage ne fait pas appel à fullcalendar mais à l’agenda privé ce spip, moins « fun » à mon gout.

    • Bonjour,
      En plaçant ceci

      eventMouseover : function(event)
      // opens events in a popup window
      window.open(event.url, ’agendaevent’, ’width=850,height=700’) ;
      return false ;
      ,

      sous

      events : « [(#URL_PAGEagenda.json)] »,

      dans agenda.html, j’ai une pop up qui s’ouvre, j’aurais aimé une tooltip, mais..
      Cette pop up contient l’article cible et non le desciptif de l’évènement.
      Ce n’est pas le top, mais on avance.
      Je soumets.
      A+

    • Bonjour patrick,

      en placant le code à l’endroit dont tu parle je n’obtien rien du tout

      a++

    • Excuses, je n’ai pas recopié tout le code...

      eventMouseover : function(event)
      // opens events in a popup window
      window.open(event.url, ’agendaevent’, ’width=850,height=700’) ;
      return false ;
      ,

      Deux ennuis avec ce code que j’ai abandonné :
      -  il renvoie sur l’article cible et non sur le descriptif de l’évènement (ce qu’on obtient en un clic sans ce bout de code, peut être changer le json de mouseover et au lieu de ).
      -  il ouvrira autant de pop ups que tu as survolé de lignes sur ta page agenda, sauf si on passe par le côtés de l’agenda pour ne survoler qu’une ligne d’évènement (les explications au visiteur risquent d’être cocasses).
      Tiré du zip démos du site officiel et des descriptifs de event.
      Je n’ai pas le temps de voir s’il existe un mouse out pour fermer le pop up.
      A++Patrick

    • eventMouseover : function(event)
      // opens events in a popup window
      window.open(event.url, ’survolevent’, ’width=850,height=700’) ;
      return false ;
      ,
      eventMousout : function(event)
      // opens events in a popup window
      window.close(event.url, ’survolevent’, ’width=0,height=0’) ;
      return false ;
      ,

      permet (si on passe doucement sur l’évènement) de passer d’un évènement à un autre, mais la fenêtre reste ouverte à la fin...

    • ChristopheD

      Bonjour

      Pour programmer des infos-bulles sur des événements de calendrier, j’ai utilisé le plugin jquery qtip. C’est (assez) simple et ça marche très bien.

    Répondre à ce message

  • 1

    Bonjour,

    Est-ce qu’il-y-a un astuce ou un petit plugin qui permet de répéter un evement de manière hebdomadaire ?

    La seule possibilité que j’ai trouvé c’est de le faire manuellement avec l’inconvénience que la date de l’événement ne change pas et les répétitions réferent toujours à l’événement « mère ».

    Quelqu’un connait une meilleure solution ?

    Merci pour l’aide
    Serge du Luxembourg

    • Salut et bonne année. La question ne concerne pas cette contrib (affichage du calendrier) mais celle sur le plugin agenda (entrée des données).

      Je vous invite à la reposer sur le forum ad hoc Plugin Agenda pour SPIP 1.9

    Répondre à ce message

  • 1

    Bonjour,

    Je découvre juste cette nouvelle manière d’afficher les événements, et je ne comprends pas l’affichage obtenu :

    J’utilise ZPIP et j’ai donc mis la page agenda.html et agenda.jason.html dans /squelettes/contenu

    j’obtiens un mini calendrier dans la colonne « navigation » à droite de la page : il contient bien les événements du site.
    Mais dans la partie centrale de la même page j’obtiens « Aucun événement ».

    Si je mets les 2 fichiers dans /squelettes/ il n’y a que la version sans javascript qui s’affiche.

    Merci de vos lumières.

    dd

    PS dans l’explication ci-dessus il est écrit « Dans cet article nous manipulons deux fichiers squelettes : article.html (qui contient le code nécessaire à l’affichage du calendrier). »

    est-ce que e n’est pas plutôt agenda.html ?

    • OK je me réponds, j’aurais du y penser :
      avec zpip la page est page-agenda.html dans squelettes/contenu et le fichier agenda.json.html est lui à placer dans squelettes/

      dd

    Répondre à ce message

  • Bonjour et bravo pour les détails.
    Je ne suis pas très bon en programmation, j’en ai jamais fait.
    Je travaille en local avec Wamp pour transposer un site existant, et faire des améliorations.
    Je suis sous Spip 3.0.5 Sarka 3.2.10, j’utilise les plugins calendrier_mini 2.0 et Agenda 3.5 pour facilités la tenu à jour d’un agenda d’événements répétitifs qui n’ont pas besoin de grande explication.
    J’ai mis en place, tel que vous le proposez et cela fonctionne correctement, j’ai le mini calendrier qui affiche les événements et la page agenda qui affiche également, mais tout en bleu.
    J’ai 5 catégories d’évènements que j’ai mis dans 5 articles. J’ai créé un groupe mot-clé Couleur_agenda et les mot-clé : Rouge, vert, Or, Bleue, Mauve.
    J’arrive là où je ne sais plus faire : j’ajoute une BOUCLE_mot, comme proposé dans le json. Que dois-je mettre pour que le choix de mes couleurs, s’affiche avec la couleur, bien sûr après je dois avoir mon CSS, cela je dois arrivé à le faire.
    Je n’ai pas trouvé de solution dans l’utilisation des balises et filtres. Merci de votre aide.

    Répondre à ce message

  • 4
    ChristopheD

    Bonjour

    Un grand merci pour ce code, qui m’a permis d’avancer grandement. Il me manque encore un élément : je souhaite transmettre à ma page agenda.html (et au script qui s’y trouve) un certain nombre de paramètres supplémentaires correspondant à différents champs des articles de départ (sous-titre, texte, voire image jointe).

    Or j’ai beau tout essayer, la transmission ne s’effectue pas. Sans doute cela a-t-il à voir avec le mystérieux « paramètre_url » dont vous semblez dire qu’il est là pour ça. Mais je ne pige pas où je suis censé le passer, et sous quelle forme. Pouvez-vous m’en dire un peu plus ?

    Désolé pour le dérangement et merci d’avance...

    • Je pense que vous souhaitez passer l’nformation non pas à agenda.html mais à l’affichage de l’agenda.

      Ou alors votre page agenda.html est spécifique à un article ?

      dans tout les cas, il me faut préciser votre besoin, là je ne suis pas sûr de pouvoir vous répondre correctement

    • ChristopheD

      Je vais tâcher d’être plus précis (au risque de dire une ou deux âneries supplémentaires).
      Le but est de réaliser des infos-bulles dans le calendrier, spécifiques à chaque évènement, et comportant pour cela des informations contenues dans divers champs des articles qui sont à la base de ces évènements. Donc, il s’agit bien de transmettre ces infos au calendrier - mais celui-ci étant conçu par un script se trouvant sur la page agenda.html, il me semblait (à tort ?) que le problème revenait à transmettre ces informations au squelette lui-même.
      Est-ce plus clair à présent ?
      Merci de votre aide !

    • je crois qu’effectivement vous n’avez pas compris le principe de l’agenda sous spip 3.

      J’ai un fichier agenda.html, celui ci va appeler des scripts jquery pour afficher un agenda. Les élèments à afficher dans cette agenda (date, titre etc.) sont pour leur parts issues du fichier json calculé par le squelette agenda.json.html (vous remarquerez que c’est à l’intérieur de ce squelette que ce situe les boucles agenda...

      Donc c’est à l’intérieur de agenda.json.html que vous devriez selectionner les infos à afficher dans l’agenda.

      Dans le cas présent, je suppose que le plus « correcte » serait de mettre les infos tirés des articles dans la partie « description ».

      C’est à dire remplacer le contenu de la ligne 11 du code suivant (repris de l’article)

      #HTTP_HEADER{Content-type:text/javascript;}
      [<BOUCLE_evenements(EVENEMENTS){', '}{par date_debut}	
      {agendafull date_debut,date_fin, periode,
      	#VAL{Y}|date{#ENV{start}}, #VAL{m}|date{#ENV{start}},     #VAL{d}|date{#ENV{start}},
      	#VAL{Y}|date{#ENV{end}}, #VAL{m}|date{#ENV{end}}, #VAL{d}|date{#ENV{end}}}
      	>
      					[(#ARRAY{id,#ID_EVENEMENT,
      title,[(#TITRE|html2unicode|unicode2charset)],
      allDay,[(#HORAIRE|=={non}|?{#EVAL{true},#EVAL{false}})],
      start,#DATE_DEBUT,
      end,#DATE_FIN,
      url,#URL_ARTICLE,
      description,[(#DESCRIPTIF|html2unicode|unicode2charset)]}|json_encode)]
      </BOUCLE_evenements>]

      Là méthode peut être de prendre le code suivant :

      #HTTP_HEADER{Content-type:text/javascript;}
      [<BOUCLE_evenements(EVENEMENTS){', '}{par date_debut}	
      {agendafull date_debut,date_fin, periode,
      	#VAL{Y}|date{#ENV{start}}, #VAL{m}|date{#ENV{start}},     #VAL{d}|date{#ENV{start}},
      	#VAL{Y}|date{#ENV{end}}, #VAL{m}|date{#ENV{end}}, #VAL{d}|date{#ENV{end}}}
      	>
      <BOUCLE_article(ARTICLES){id_evenement}>
      					[(#ARRAY{id,#ID_EVENEMENT,
      title,[(#_evenements:TITRE|html2unicode|unicode2charset)],
      allDay,[(#HORAIRE|=={non}|?{#EVAL{true},#EVAL{false}})],
      start,#DATE_DEBUT,
      end,#DATE_FIN,
      url,#URL_ARTICLE,
      description,[(#TEXTE|html2unicode|unicode2charset)]}|json_encode)]
      </BOUCLE_article>
      </BOUCLE_evenements>]

      Explication de code :
      -  l. 7 on récupere l’article de l’évenement
      -  l. 9 on veut le titre de l’evenement, et non pas le titre de l’article (cf http://programmer.spip.net/Contenu-de-boucles-parentes)
      -  l. 14 on on récupere le texte de l’article.

      J’ignore complètement comment s’affiche ce qui est passé comme « description ». Il faut regarder du côté de la doc de full calendar pour voir comment avoir des infos bulles

    • ChristopheD

      Hem. En fait, j’avais bien compris que c’était depuis agenda.json.html que je devais envoyer les bonnes infos. En fait, j’ai enfin tilté : ce qui coinçait, c’est que j’essayais de récupérer les champs de mes articles... au travers d’une boucle évènement. Forcément, ça ne pouvait pas marcher. On est peu de chose...
      En attendant, merci à vous pour le coup de main !

    Répondre à ce message

  • 3

    Bonjour,
    Merci !
    J’ai suivi le pas à pas depuis le début, collé les lignes de code comme expliqué, tout a marché tout de suite, alors que j’ai essayé une autre solution sans succès depuis hier, tout cela sur un spip 3.05 en local.
    C’est tout à fait par hasard que je suis tombé sur votre article, en recherchant le plugin full calendar que j’ai mis en ligne avec une version 2.1.15 .
    L’appel aux évènements est un plus et à mon sens plus facile à gérer que par le plugin.
    Problème, lorsque l’on veut toucher aux css du calendrier, il faut toucher au plugin-dist, qui effacera la modification à la prochaine mise à jour.
    Je suppose que l’appel à la css doit changer si on veut la sauvegarder et la conserver ?
    Quoiqu’il en soit, encore merci.
    A+Patrick

    Répondre à ce message

  • Bonjour,
    Merci !
    J’ai suivi le pas à pas depuis le début, collé les lignes de code comme expliqué, tout a marché tout de suite, alors que j’ai essayé une autre solution sans succès depuis hier.
    C’est tout à fait par hasard que je suis tombé sur votre article, en recherchant le plugin full calendar que j’ai mis en ligne avec une version 2.1.15 ici
    http://imagesetpeche.free.fr/?FullC...
    L’appel aux évènements est un plus et à mon sens plus facile à gérer que par le plugin.
    Problème, lorsque l’on veut toucher aux css du calendrier, il faut toucher au plugin-dist, qui effacera la modification à la prochaine mise à jour.
    Je suppose que l’appel à la css doit changer si on veut la sauvegarder et la conserver ?
    Quoiqu’il en soit, encore merci.
    A+Patrick

    Répondre à ce message

  • lechenne didier

    en lisant cela
    http://stackoverflow.com/questions/3408723/display-more-text-in-fullcalendar
    j’ai compris comment afficher des champs de texte supplémentaire

    mais j’ai encore une question basique, comment afficher les heures de début et de fin ?

    ps : dans la cadre une mise à jour d’un site spip2 en spip3, je suis moi aussi, un peu dérouté par cette nouvelle dépendance à cette librairie javascript.

    Répondre à ce message

  • 11

    Aie... Impossible de voir mon agenda (dernière version) sous SPIP 3.0.4
    http://www.davduf.net/?page=agenda
    http://www.davduf.net/?page=agenda.jason

    Ne donnent rien.

    J’ai copié collé les deux pages ci-dessus et pourtant, c’est vide.

    Dans l’interface privée, ça marche super.
    Mais dès que j’essaye de visualiser en ligne, impossible :

    Aucun squelette evenement.html n’est disponible...

    Si je fais http://www.davduf.net/?page=agenda

    Aucun squelette agenda.html n’est disponible..

    Une idée ? Merci d’avance !
    J’ai installé la mise à jour 3.6.11

    Merci d’avance !

    • bah en même tps, ton squelette contient juste le code que je met là, et rien autour. Il me paraissait pourtant comme allant de soi que le squelette devait être un squelette complet contenant tout les élèments qu’on attend (head, body etc.). Apparament non... faudra que je reformule ?

      et ne me dis pas que tu ne sais pas faire un squelette complet ;-)

    • Oups... désolé... Je n’avais pas compris.
      Oui, tu as raison : le reformuler dans le texte serait une bonne chose.

      J’ai le calendrier désormais... Hélas, il ne contient rien...
      http://www.davduf.net/?page=agenda&var_mode=calcul
      http://www.davduf.net/bootcamp-a-l-inis-montreal?var_mode=calcul

    • c’est agenda.json et pas agenda.jason.… Il faut que http://www.davduf.net/spip.php?page=agenda.json&start=1343599200&end=1346623200&_=1344720545377 te retourne du json (donc la tu met pour le coup que l’exemple que j’ai donné)

    • Oh, excuse ,-) Et merci !
      J’ai corrigé le agenda.json.html

      Reste que mon calendrier est désespérement vide.
      Et que si je vais sur un évévement (http://www.davduf.net/bootcamp-a-l-inis-montreal), SPIP m’indique toujours « Aucun squelette evenement.html n’est disponible... »

      Comment faire ?

    • A force de cache vidée, ça marche ,-)
      Tout était donc de mon fait. Ah, la la...

      Quelques détails cependant :
      -  comment afficher autre chose que le calendrier ? Comment afficher les événements eux-mêmes, à la façon de ce qu’il y a dans l’interface privée ? Autrement dit : quel squelette prendre dans le plugin ?

      -  peux ton contourner le lien obligtoire vers un article ? Autrement dit : afficher un rendez-vous sans passer par un article ?

      Merci encore

    • Tu peux créer un squelette evenement.html à ta sauce, en utilisant dedans une boucle évenement qui se contrefiche des articles.

      Et pour mettre directement un lien vers ce squelette, je pense que #URL_EVENEMENT à la place de #URL_ARTICLE dans le json devrait faire l’affaire.

    • Ecoute, j’ai un peu de mal... en fait ,-)

      Tu peux créer un squelette evenement.html à ta sauce, en utilisant dedans une boucle évenement qui se contrefiche des articles.

      Oui, mais quand je crée l’événement, via le plug-in, je suis obligé de le lier à un article, c’est ça qui m’embête...
      Sinon, selon toi, ce squelette evenement.html je le mets où ?

      Et pour mettre directement un lien vers ce squelette, je pense que #URL_EVENEMENT à la place de #URL_ARTICLE dans le json devrait faire l’affaire.

      OK, je vais essayer ,-)
      Merci

    • Oui, mais quand je crée l’événement, via le plug-in, je suis obligé de le lier à un article, c’est ça qui m’embête...

      tu t’en fiche, si côté public cela ne se voit pas. A la rigueur tu les lis tous au même article. Sinon faudrait modifier le plugin, et c’est pas dans les projets.

      Et le squelette evenement.html, tu le met là où tu met tes autres squelettes …

    • #URL_EVENEMENT à la place de #URL_ARTICLE dans le json : parfait !

      Maintenant, il ne me reste plus qu’à créer une page agenda qui reprendrait tous les rendez-vous à venir sous forme de liste plutôt qu’en mode du calendrier (tel que proposé par le plug-in).

      Merci encore !

    • bonjour
      Plug-in Agenda 3.6.11
      spip 3.04

      bonjour je n’arrive pas à afficher mon full calendar coté public
      je viens de lire plusieurs tuto mais j’ai besoin d’aide

      je débute avec spip
      pour afficher le full calendar
      j’ai créer un dossier squelettes à la racine de mon site
      j’ai placer
      le fichier agenda.htm
      et le fichier agenda.json.html
      mais je ne sais pas comment l’appeler
      j’ai créer une rubique agenda qui comporte un article associé à un événement
      tout semble fonctionner cote privé
      mais je sais pas comment afficher mon calendrier cote public
      merci pour votre aide
      voici mon contact

    • il faut savoir que SPIP dispose de deux sortes de pages :
      -  les pages liés à des objets, par exemple les pages d’articles, de rubrique, etc.
      -  les pages autres, par exemple les pages de sommaire, 404 etc.

      En l’occurence, la page en question est une page de la seconde catégorie. Votre squelette s’appellant agenda.html, il faut y accéder en allant sur http://monsite.com/?page=agenda.html.

      Si vous souhaitez produire un lien vers cette page depuis un autre squelette, vous devez utiliser #URL_PAGE{agenda}.

      J’espère que cela eclairera votre lanterne ...

    Répondre à ce message

  • 1

    Une méthode simple pour appeler les événements de l’Agenda :

    Installer le plugin Calendrier-mini :
    http://contrib.spip.net/Calendrier-Mini-2-0

    Puis dans le fichier agenda.html, au niveau du script, remplacer l’exemple ci-dessus :
    events : « [(#URL_PAGEagenda.json)] »,

    par :
    events : « [(#URL_PAGEcalendrier_mini_event.json)] »,

    Explications : le plugin Calendrier-mini, dispo pour spip3, contient déjà un fichier json de récupération des seuls événements déclarés dans le plugin Agenda.
    Ça évite de farfouiller dans la balise #ENV, à laquelle je n’ai par ailleurs rien capté.

    Répondre à ce message

  • 11

    Bonjour,
    cela fait quelques jour que j’essaie de faire fonctionner le plugin Agenda avec l’affichage fullcalendar, sans succès .
    Ne trouvant pas comment faire, j’ai tenter de suivre scrupuleusement ce tutoriel .
    Après plusieurs essais j’arive au mieux a avoir la liste des évènements sans le calendrier lorsque je demande la page ?page=agenda comme si le javascript n’était pas actif.

    Titre
    Expo
    Date
    Du 17 septembre 09:16 au 19 septembre 10:16

    Titre
    Visite bibliothèque
    Date
    Du 19 septembre 09:17 au 22 septembre 10:17 .

    Spip 3.0.5 ,Calendrier mini 2.1.5 Agenda 3.6.11

    Contenu page agenda.html

    http://bibliosemliege.be/agenda/agenda.html

    Contenu page agenda.json.html

    #HTTP_HEADERContent-type:text/javascript ;
    [ {agendafull date_debut,date_fin, periode,
    #VAL{Y}|date{#ENV{start}}, #VAL{m}|date{#ENV{start}}, #VAL{d}|date{#ENV{start}},
    #VAL{Y}|date{#ENV{end}}, #VAL{m}|date{#ENV{end}}, #VAL{d}|date{#ENV{end}}}
    >
    [(#ARRAYid,#ID_EVENEMENT,
    title,[(#TITRE|html2unicode|unicode2charset)],
    allDay,[(#HORAIRE|==non| ?#EVALtrue,#EVALfalse)],
    start,#DATE_DEBUT,
    end,#DATE_FIN,
    url,#URL_ARTICLE,
    description,[(#DESCRIPTIF|html2unicode|unicode2charset)]
    |json_encode)]
    ]

    D’avance merci pour votre aide.
    Loic.

    • on peut avoir une url de démo ?

    • il vous faut utiliser la balise #INSERT_HEAD (qui est nécéssaire pour plein de plugins)

    • je confirme, il manque #INSERT_HEAD

    • voila j’ai rajouter la ligne qui contient le #INSERT_HEAD mais cela ne semble pas résoudre le soucis.

    • où avez vous placé cette INSERT_HEAD

      comme son nom l’indique elle doit être placé dans la balise head du html.

      Je vous invite à lire sa doc

    • Le #INSERT_HEAD est bien dans le <head></head>

      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <title>Agenda</title>
      <INCLURE{fond=inc-head}>
      <link rel='stylesheet' type='text/css' href='#CHEMIN{lib/fullcalendar/fullcalendar.css}' />
      <script type='text/javascript' src='#CHEMIN{lib/fullcalendar/fullcalendar.min.js}'></script>
      </head>

      contenu inc-head

      #INSERT_HEAD
      [<link rel="stylesheet" href="(#CHEMIN{style.css}|direction_css)" type="text/css" media="all" />]
      <meta http-equiv="Content-Type" content="text/html; charset=#CHARSET" />
      [<link rel="stylesheet" href="(#CHEMIN{spip_formulaires.css}|direction_css)" type="text/css" media="projection, screen, tv" />]
      <meta name="robots" content="index, follow"/>
      <script language="javascript" type="text/javascript" src="#CHEMIN{js/ban.js}"> </script>
      <script language="javascript" type="text/javascript" src="#CHEMIN{js/slides.min.jquery.js}"> </script>
      [<link rel="stylesheet" href="(#CHEMIN{css/global.css}|direction_css)" type="text/css" media="projection, screen, tv" />]
      <script language="javascript" type="text/javascript" src="#CHEMIN{js/ddsmoothmenu.js}"> </script>
      [<link rel="stylesheet" href="(#CHEMIN{css/ddsmoothmenu.css}|direction_css)" type="text/css" media="projection, screen, tv" />]
      <script type="text/javascript">
      ddsmoothmenu.init({
      mainmenuid: "header", //menu DIV id
      orientation: 'h', //Horizontal or vertical menu: Set to "h" or "v"
      classname: 'ddsmoothmenu', //class added to menu's outer DIV
      //customtheme: ["#1c5a80", "#18374a"],
      contentsource: "markup" //"markup" or ["container_id", "path_to_menu_file"]
      })
      </script>

      http://bibliosemliege.be/agenda/agenda.html
      http://bibliosemliege.be/agenda/inc-head.html
      http://bibliosemliege.be/agenda/agenda.json.html

    • je peux voir l’url du squelettes ?

    • Voici l’url du squelette
      http://bibliosemliege.be/?page=agenda

      Les trois pages sur le post précédent sont des copies des pages agenda et inc-head tel qu’elles sont dans le dossier squelettes

    • si vous regarder les sources de la page, vous voyez que le jquery est ajouté avant le code html.

      Il faut que vous trouviez comment résoudre ce pb ...

    • Merci,
      j’ai ajouter le #INSERT_HEAD et enlever l’inclure inc-head et cela fonctionne. je rajouterais juste les css spécifique a cette page sans passé par le inc-head.

      Je vous remercie encore pour votre aide rapide.
      Loic

    Répondre à ce message

  • 1

    Salut Maïeul,

    J’ai essayé avec succès et grande facilité FullCalender tel que décrit ici pour SPIP 2.1 :

    Mes essai sont ici : http://contrib.spip.net/FullCalendar,3736#forum461092

    Ta contribution pour SPIP 3 est certainement très utile, je l’ai survolée rapidement en diagonale mais je ne vois rien qui exploite un modèle avec des balises simples à intégrer dans le texte d’un article.

    Donc, qu’en est-il de FullCalendar pour SPIP 3 dans cette optique ?

    Cordialement

    FDG

    Répondre à ce message

  • bonsoir Maïeul,
    je voulais tester cet agenda-fullcalendar, et je comprenais pas mon problème, rien ne sortait dans l’agenda : il y a un petit bug dans le script qui appelle le fullcalendar, entre nextYear et today, un petit espace à changer en virgule...

    header: {
            left: 'prevYear,prev,next,nextYear today',
    	center: 'title',
    	right: 'month,agendaWeek,agendaDay'
    },

    devient

    header: {
    	left: 'prevYear,prev,next,nextYear,today',
    	center: 'title',
    	right: 'month,agendaWeek,agendaDay'
    },

    et les événements sont là !
     ;o)
    merci pour tes explications...

    Répondre à ce message

  • 4
    fanchlerouge

    Sur le site de test sur Wamp, cela affiche bien un agenda http://localhost/babel-1/spip.php?page=agenda :

    Le problème, cela affiche le texte de l’évènement en dessous du calendrier.

    Comme je ne suis pas très bon en SPIP, je vous envoie les deux pages insérées dans squelettes et une copie d’écran.

    J’ai sûrement du cafouillé.

    L’article est créé avec le mot clé agenda et avec Date de rédaction antérieure : 19 septembre 2012

    Je vous joints une copie d’écran

    François

    • heu, j’aurais besoin de vos boucle pour comprendre.

    • fanchlerouge

      Bonsoir,

      Voici les codes

      agenda.html

      <B_ev>
      	[<h1>(#TOTAL_BOUCLE|singulier_ou_pluriel{agenda:info_un_evenement,agenda:info_nombre_evenements})</h1>]
      	<ul class="liste-items evenements">
      	<BOUCLE_ev(EVENEMENTS){!evenement_passe #ENV{date_debut,#ENV{date}}}{!evenement_a_venir #ENV{date_debut,#ENV{date}}|agenda_moisdecal{1,'Y-m-d H:i:00'}}{par date_debut}{id_article?}{id_rubrique?}{id_mot?}{id_evenement_source?}>
      		<li class="item">
      			#MODELE{evenement_vevent}
      		</li>
      	</BOUCLE_ev>
      	</ul>
      </B_ev>
      <h1><:agenda:info_aucun_evenement:></h1>
      <//B_ev>
      <B_agenda>
      <div id="calendrier-loading">
      <p class="pagination">#PAGINATION</p>
      <BOUCLE_agenda(DATA){source json, #PRODUIRE{fond=agenda.json, start=0,end=2147483647,_=#REM|time}}{pagination 15}>
          <dl>
              [<dt><:agenda:evenement_titre:></dt>
              <dd><a href="#VALEUR{url}">(#VALEUR{title})</a></dd>]
              
              [<dt><:agenda:evenement_date:></dt>
              <dd>(#VALEUR{start}|Agenda_affdate_debut_fin{#VALEUR{end},#VALEUR{allDay}|=={true}|?{non,oui}})</dd>]
              
              [<dt><:agenda:evenement_descriptif:></dt>
              <dd>(#VALEUR{description})</dd>]
          </dl>
      </BOUCLE_agenda>
      <p class="pagination">#PAGINATION</p>
      </div>
      </B_agenda>

      agenda.json.html

      #HTTP_HEADER{Content-type:text/javascript;}
      <BOUCLE_evenements(EVENEMENTS){', '}{par date_debut}{id_rubrique}
      {agendafull date_debut,date_fin, periode,
      	#VAL{Y}|date{#ENV{start}}, #VAL{m}|date{#ENV{start}},     #VAL{d}|date{#ENV{start}},
      	#VAL{Y}|date{#ENV{end}}, #VAL{m}|date{#ENV{end}}, #VAL{d}|date{#ENV{end}}}
      	>
      					[(#ARRAY{id,#ID_EVENEMENT,
      title,[(#TITRE|html2unicode|unicode2charset)],
      allDay,[(
      #HORAIRE|=={non}|
      ?{#EVAL{true},#EVAL{false}})],
      start,#DATE_DEBUT,
      end,#DATE_FIN,
      url,#URL_ARTICLE,
      description,[(#DESCRIPTIF|html2unicode|unicode2charset)]}|json_encode)]
      </BOUCLE_evenements>

      en vous remerciant,

    • et le code js qui appelle le .json ? je pense que le problème vient de là.

    • fanchlerouge

      Bonsoir,

      Voici le code en fichier image.
      Même avec les balises code, je n’arrive pas à envoyer le message après visualisation.

      Il y a une astuce pour les codes trop grands ?

      Je pensais qu’il n’étais pas nécessaire de vous le donner, puisque c’est le votre. Mais je me dis que si j’ai changé des paramètres dans les autres codes, alors ce ne fonctionne pas bien.

      J’utilise SPIP depuis le début, mais plus fais de modification du code depuis le 1.8.

      Je pense que vous aurez remarqué ma faible capacité pour le nouveau code de SPIP.

    Répondre à ce message

  • Super, merci pour cette contribution

    Répondre à ce message

  • 1
    marabbeh

    Je suis effaré par ce plugin... J’ai programmé par le passé et je m’efforçais de rendre les choses accessibles. Et je signale quand même qu’à l’origine Spip était prévu pour des gens n’ayant que des connaissances basiques d’internet.
    Je n’ai besoin que d’un agenda basique. Je n’ai pas envie de passer des plombes voire des journées à essayer de comprendre votre code Javascript. Peut-être est-il possible d’utiliser votre agenda sans faire compliqué, mais vous ne l’indiquez pas.
    Excusez le coup de gueule, mais il m’est souvent arrivé de me lancer dans des explications compliquées, qui décourageaient le quidam...

    • 1) je ne suis pas responsable de ce changement technique, je ne suis pas l’auteur du plugin agenda.
      2) un agenda n’est jamais quelquechose de simple à programmer
      3) il ne faut pas être effrayé par le fait que cela soit du JS. Le code JS est assez simple (juste un appel à une fonction) et tout le reste n’est que des boucles basiques de SPIP.

      Il s’agit bien là de l’affichage d’un agenda. Si vous voulez simplement une liste d’évenement, rien de plus simple que d’utiliser des boucles évenements entremelés dans du HTML classique.

    Répondre à ce message

  • Bonjour à tous,

    Dans l’interface privée, le plugin Agenda pour SPIP 3.0.4 marche super.
    Mais dès que j’essaye de visualiser en ligne, impossible :

    Aucun squelette evenement.html n’est disponible...

    Si je fais http://www.davduf.net/?page=agenda

    Aucun squelette agenda.html n’est disponible...

    Je suis ensuite tombé sur cette page d’explications. J’ai copié collé scrupuleusement les deux pages indiquées.

    Elles sont ici :
    agenda.html : http://www.davduf.net/?page=agenda
    agenda.jason.html : http://www.davduf.net/?page=agenda.jason

    Prenons l’exemple là.
    http://www.davduf.net/bootcamp-a-l-inis-montreal

    Cet événement est bien dans la partie privée, mais pas dans la partie publique.

    Une idée ? Merci d’avance !
    J’ai installé la mise à jour de Agenda 3.6.11

    Répondre à ce message

  • 3

    Bonjour,

    je ne réussis pas à afficher l’agenda. J’obtiens l’erreur « Aucun squelette agenda.html n’est disponible. »

    Sur Spip 3.0.4, avec plugin agenda 3.6.11, j’ai ajouté dans mon dossier « squelettes » le dossier « lib » contenant les documents de FullCalendar. Comment puis-je appeler l’agenda ?

    Merci pour votre aide ou un peu plus de renseignements sur l’installation du FullCalendar.

    Richard

    • tout d’abord, vous n’avez pas besoin d’installer la lib FullCalendar, puisqu’elle est déjà livré avec SPIP : c’est ce que je dis lorsque j’écrit SPIP 3.0.x, en ayant conservé l’organiseur dans plugins-dist..

      Effacer donc le dossier lib que vous avez mis dans squelette.

      Ensuite s’il vous dit « Aucun squelette agenda.html n’est disponible. » ca veut dire qu’il faut que vous le créer. J’explique dans mon tutoriel qu’y mettre. Je vous mal quoi faire de plus.

      Vous avez un site d’exemple ?

    • Je suis confus, j’avais glissé le document agenda.html dans le squelette d’un sous-domaine du domaine principal... J’air réparé mon erreur, et tout fonctionne à merveille.

      Cependant, merci de la précision sur la lib FullCalendar.

      Merci également de la réponse rapide et pour l’ensemble de cette excellente « contribution pédagogique » qui pallie à l’obsolescence des filtres memo.

    • ca arrive à tout le monde …

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom