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

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