L’agenda de Div Yezh

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Doté de champs spécifiques pour la date de début et la date de fin, cet agenda permet de gérer des événements qui seront affichés par ordre de leur date de début dans un calendrier du même type que la première version de l’agenda de gasteroprod (avec glissement éventuel sur le premier mois suivant si l’événement dure plusieurs jours), et classés par date dans la rubrique pour disparaître une fois leur date de fin dépassée (selon le modèle de l’agenda séquentiel).

NOTE DES ADMINS : il est maintenant (26 mai 2005) possible d’utiliser un squelette de calendrier dans la partie publique ... voir « détail » sur la liste spip-core

Dans la version développée pour Div Yezh, l’agenda permet aussi de rattacher un événement à un des cinq départements bretons (Loire-Atlantique incluse), à un canton et à une commune.

Exemple

Vous pouvez voir comment tout cela fonctionne à l’adresse suivante :

http://agenda.div-yezh.org.

L’accès à l’espace privé se fait via le lien « Admin » dans le bas de la colonne de gauche. Utilisez le login « invite », mot de passe « invite ».

Une rubrique « TEST » est à votre disposition. Merci de ne pas perturber le reste du fonctionnement du site par des créations intempestives qui m’obligeraient à supprimer cet accès.

Description

L’agenda permet la publication d’événements qui s’étendent sur plusieurs jours. Toutefois, l’affichage de ces événements dans le calendrier ne s’effectue pas au délà du second mois.

Une fois leur date de fin passée, les événements ne s’affichent plus dans les rubriques concernées (sur le principe de l’agenda séquentiel), mais demeurent visbles et accessibles dans le calendrier (sur le même principe que celui de gasteroprod).

Opérationelle sur la seule version 1,8 beta de Spip, cette contribution fonctionne grâce aux possibilités ouvertes par le nouveau compilo, décrites sur spip-lab (Voir également la contribution de Déesse A), qui permet la création de nouveaux champs dans une BDD. Les nouveaux champs créés sont les suivants :

-  date_debut, pour gérer la date de début d’un événement.
-  date_fin, pour gérer la date de fin du même événement.
-  duree, pour lequel est calculé, via javascript, la différence en nombre de jours entre la date de fin et la date de début.

Les lieux sont également gérés grâce aux champs suivants :

-  departement
-  canton
-  code postal
-  commune

ATTENTION !

Cette contribution, qui se veut expérimentale, modifie le noyau de Spip par modification des fichiers suivants :

-  inc_criteres.php3
-  inc_serialbase.php3
-  articles_php3
-  articles_edit.php3

Dans le source de chacun des fichiers, les modifications apportées sont précédées de la mention Ajout sur distrib pour gerer agenda pour permettre à ceux qui le souhaitent d’améliorer facilement cette contribution.

Pour la gestion des communes, il est indispensable de placer, en plus, les fichiers suivants (fichiers javascript) dans le répertoire écrire :

-  agenda_edit.js
-  agenda.js

qui gèrent l’affichage des communes,
et

-  agenda_22.js
-  agenda_29.js
-  agenda_35.js
-  agenda_44.js
-  agenda_56.js

qui contiennent, chacun, les informations utiles pour l’ensemble des communes de chaque département breton. S’en inspirer pour d’autres départements.

Utilisation

A la création d’un nouvel article dans l’interface privée, de nouveaux champs apparaissent, permettant de sélectionner un département.

Une fois un département sélectionné (ici, les Côtes d’Armor), la page se recharge et affiche une liste de lettres.

En cliquant sur une lettre, le SELECT affiche la liste des communes correspondantes (cela évite d’avoir des listes trop longues) dans laquelle on choisit celle qui nous intéresse (ici, DInan)

La saisie continue ensuite avec les champs habituels de Spip jusqu’à la sélection de la rubrique. On peut ensuite sélectionner la date de début d’événement.

A la création d’article, l’année affichée est celle de l’année en cours. Le jour et le mois sont marqués NC. (non connus). A noter qu’une fois qu’une première date a été affichée, les jours disponibles tiennent compte du mois affiché (par exemple, 30 jours en avril, 28 en février les années bisextiles, 29 en 2005).

Il faut ensuite saisir de la même façon la date de fin d’événement (obligatoire, même si l’événement ne dure qu’une journée).

Puis la saisie peut continuer selon les rêgles habituelles de Spip, tous les champs demeurant disponibles. Une fois la saisie validée, on se retrouve sur la page articles_php3 de l’interface privée.

Les modifications apportées permettebt de visualiser

-  le nom de la commune (avec le département entre parenthèses)
-  le code postal
-  le canton (ou, comme dans l’exemple, la mention « Commune scindée en plusieurs cantons » quand c’est le cas)

-  la date de l’évenement (ou la date de début)
-  la date de fin (ou la mention « Cet événement ne dure q’une journée » si tel est le cas)

Il est possible sur cette page de modifier directement les dates de début ou de fin.

Par copntre, pour modifier la commune, il faudra passer par la procédure habioituelle de Spip Modifier cet article.

Tous les autres champs, dont la date de rédaction antérieure, demeurent disponibles pour leur utilisation habituelle.

Une fois l’article publié, il apparaitra dans le calendrier (basé sur celui de gasteroprod) et dans la rubrique correspondante tant que la date de fin ne sera pas échue (selon le principe de l’agenda séquentiel).

Remerciements et remarques

Les explications d’Arno sur le nouveau compilo, de Déesse A sur la création de nouvelles tables ont servi de bases à la réflexion aboutissant à cette contrib qui ne fait que compléter le travail de Nicolas Hoizey (Gasteroprod) et de Robert (agenda séquentiel).

La création de tables supplémentaires, et surtout la possibilité de connecter Spip a plusieurs tables de façon simultanée, doit permettre de dépasser rapidement cette contribution pour avancer vers des solutions autrement plus performantes. Il serait intéressant que les modifications apportées à l’interface de l’espace privé puisse être gérées via un plugin. De façon évidente, ceci n’est qu’une étape.

Fichiers à télécharger

Le package ci-dessous contient tous les éléments nécessaires à la mise en œuvre.

Les squelettes (rubrique.html et sommaire.html) sont ceux de Div Yezh et devront être adaptés à vos propres besoins.

Installation

Pour un nouveau site, c’est très simple :

1. En local, faire une SAUVEGARDE des fichiers de la distrib : à la racine de votre site : inc_criteres.php3 ; dans le répertoire écrire : inc_serialbase.php3, articles_php3 et articles_edit.php3. Cette sauvegarde vous permettra de retrouver facilement votre configuration initiale si vous ne souhaitez pas bénéficier de cette contrib.

2. Placer ensuite les fichiers de la contrib à la racine de votre site sauf ceux qui sont dans le répertoire ecrire à placer dans votre répertoire écrire (sic !). Ces nouveaux fichiers écraseront donc ceux de la distrib que vous avez sauvegardés.

3. Télécharger en ftp l’ensemble des fichiers incluant les fichiers modifiés à la racine de votre site et procéder à l’installation standard de Spip. Les nouveaux xhamps seront automatiquement crées dans votre base de données.

Sur un site existant, procéder en trois étapes :

1. Faire une SAUVEGARDE des fichiers de la distrib : à la racine de votre site : inc_criteres.php3, rubrique.html, sommaire.html ; dans le répertoire écrire : inc_serialbase.php3, articles_php3 et articles_edit.php3. Cette sauvegarde vous permettra de retrouver facilement votre configuration initiale si vous ne souhaitez pas bénéficier de cette contrib.

2. Placer ensuite les fichiers de la contrib à la racine de votre site sauf ceux qui sont dans le répertoire ecrire à placer dans votre répertoire écrire (sic !). Ces nouveaux fichiers écraseront donc ceux de la distrib que vous avez sauvegardés.

3. Il faut maintenant créer les nouveaux champs dans votre base de données.
Pour ce faire, via php-my admin (ou équivalent), accédez à votre base de données, puis cliquez (à gauche) sur spip_articles. Après chargement, la structure de la table apparait sous la forme d’une liste des champs actuellement disponibles. Le bas de cette liste doit se présenter de cette façon :

Sur l’image, j’ai entouré ce qui vous intéresse ! Pour ajouter 1 champ en fin de table, cliquez sur « Exécuter ». Un nouvel écran apparait.

Créer le champ date_debut :

-  Dans le champ 1 Champ, tapez date_debut
-  Dans le champ 2 Type, sélecionnez DATETIME
-  Dans le champ 3 Null, sélectionnez not null
-  Dans le champ 4 Defaut, tapez 0000-00-00:00:00:00

Puis, cliquez sur Exécuter. Une nouvelle page vous confirmera que votre requête sql a été exécutée.

Créer le champ date_fin : la procédure est la même.

-  Dans le champ 1 Champ, tapez date_fin
-  Dans le champ 2 Type, sélecionnez DATETIME
-  Dans le champ 3 Null, sélectionnez not null
-  Dans le champ 4 Defaut, tapez 0000-00-00:00:00:00

Puis, cliquez sur Exécuter. Une nouvelle page vous confirmera que votre requête sql a été exécutée.

Créer le champ durée : c’est encore plus simple.

-  Dans le champ 1 Champ, tapez durée
-  Dans le champ 2 Type, sélecionnez TEXTE
-  Dans le champ 3 Null, sélectionnez not null

Puis, cliquez sur Exécuter. Une nouvelle page vous confirmera que votre requête sql a été exécutée.

Ces trois éléments sont suffisants pour gérer les dates. Si vous souhaitez utiliser les fonctionnalités de gestion des communes, code postaux, cantons et departements, ajoutez les champs suivants sur le même principe que ce que je viens de vous expliquer pour le champ durée.

-  departement => « text NOT NULL »,
-  canton => « text NOT NULL »,
-  code_postal => « text NOT NULL »,
-  commune_bzh => « text NOT NULL »,
-  commune => « text NOT NULL ».

NOTA. commune_bzh ne vous est pas forcément utile. il sert, pour Div Yezh, à gérer le nom de la commune en breton.

Quand l’ensemble de ces éléments sont en place, retournez dans l’espace privé de votre site. Créez un nouvel article. Vous verrez les nouvelles fonctionnalités... fonctionner. Magique !

NOTE DES AMINS : il est maintenant (26 mai 2005) possible d’utiliser un squelette de calendrier dans la partie publique ... voir « détail » sur la liste spip-core

Discussion

2 discussions

  • bonjour,
    j’ai installé votre agenda sur spip version 1.8.2. Après quelques modifications, cela fonctionne dans la partie publique. Par contre, un bug javascript empêche son utilisation dans la partie privée. Le bug concerne la variable dep22 qui semble indéfinie. Quelqu’un pourrait-il m’aider car je ne suis pas une flèche en javascript ?
    Merci d’avance,
    Excellente journée

    Répondre à ce message

  • 1

    Bonjour,

    Je viens d’installer l’agenda sur un nouveau site en local.

    J’ai suivi les trois étapes : Je n’ai pas sauvegardé mes fichiers originaux (pour une installation d’essai en local, je n’en ai pas besoin), j’ai copié les fichiers à leur place. J’ai fait une installation de Spip (tout c’est très bien passé, j’ai configuré identifiant, mot de passe et tout et tout)...

    Problème : Lorsque je veux me connecter à l’espace privé le login n’est pas reconnu (« l’identifiant « mon_login » est inconnu »).!?!!! y aurait-pas un truc à faire...

    merci.

    • re-bonjour,

      bon, je viens de trouver la réponse à mon problème...

      Le fichier inc_serialbase.php3 du présent package de l’agenda causait mon souci. J’ai ajouté les lignes suivantes (récupérées sur le fichier qui me posait souci) au fichier d’origine (sur spip-v1-8-2d/ecrire/inc_serialbase.php3) dans la table « $spip_articles = array » (ici, sous le champ « titre »)

      // Ajout sur distrib pour gerer agenda
      « date_debut » => « datetime DEFAULT ’0000-00-00 00:00:00’ NOT NULL »,
      « date_fin » => « datetime DEFAULT ’0000-00-00 00:00:00’ NOT NULL »,
      « duree » => « text NOT NULL »,
      « commune » => « text NOT NULL »,
      « commune_bzh » => « text NOT NULL »,
      « canton » => « text NOT NULL »,
      « code_postal » => « text NOT NULL »,
      « departement » => « text NOT NULL »,
      // Fin ajout

      Et bien entendu, lors de la deuxième étape d’installation j’ai tout fait comme indiqué, sauf pour le fichier inc_serialbase.php3. J’ai juste ajouté les lignes précédentes au fichier déjà existant...
      (j’espère que j’ai été clair...)

    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