Plugin Contacts & Organisations

Ce plugin ajoute à SPIP des fonctionnalités de gestionnaire de contacts. Distingue les personnes morales (organisations) des personnes physiques (contacts) en conservant tous les attributs des auteurs SPIP.

En conjonction avec le plugin Coordonnées, il permet d’étendre à la fois les champs unitaires (prénom, date de naissance…) et les champs multiples (numéros de téléphone, adresses mail…).

Principe

Comme un certain nombre d’autres plugins jusque là, « Contacts & Organisations » ajoute des champs indispensables à la table spip_auteurs, dès lors qu’il s’agit de gérer des personnes d’une manière un peu poussée. La table spip_auteurs est par nature, et historiquement sans doute, limitée aux champs nécessaires pour la rédaction d’articles. Dès que cette table doit être utilisée pour d’autres fonctions (inscription, transaction, etc.) certaines caractéristiques lui font défaut, et parmi elles :

-  prénom, date de naissance, autres informations personnelles
-  notion de « groupes d’auteurs »
-  plus de une adresse mail, plusieurs numéros de téléphone ou ID communautaires (ICQ, MSN)
-  autres informations spécifiques à l’utilisation

Objectif

Lors du développement du plugin nous avons veillé à ce que la notion d’auteur SPIP soit conservée. Nous avons par exemple choisi de ne pas modifier l’intégrité de la table spip_auteurs, ce qui permet de conserver possibilités de gestion déjà développées, telles que celles fournies par les plugins acces_restreint ou spip_liste. Ainsi, nous avons seulement ajouté les tables nécessaires à l’ajout de propriétés aux auteurs et les avons liées à la table spip_auteurs.

Ce plugin est déjà utilisé par le plugin Catalogue, et le plugin SPIPMine.

Fonctionnement

Une fois le plugin installé, une nouvelle boîte de dialogue apparait dans l’interface privée sur la page d’un auteur :

Tous les auteurs SPIP du site peuvent désormais acquérir un statut de « contact » ou d’« organisation ».

Exemple 1 : ajouter un contact

Prenons l’exemple d’un auteur SPIP dont on veuille gérer distinctement le nom, le prénom et l’activité (fonction). Si on attribue à cet auteur le statut de contact, les champs nom, prénom, et activité seront disponibles dans les boucles #AUTEUR. Pour conférer le statut de « contact » à un auteur SPIP, dépliez la boîte et cliquez sur « devenir contact » :

Dès lors, les champs supplémentaires de la fiche contact sont disponibles sur la fiche auteur sur la page d’édition d’un auteur. Pour ajouter les informations correspondant à ces champs, cliquez sur « modifier cet auteur », puis descendez jusqu’à « détails du contact » :

Si le plugin coordonnées est aussi installé, il est possible d’ajouter des numéros de téléphone, adresses mail ou adresses postales à ce contact :

Exemple 2 : ajouter une organisation

De la même manière, on peut attribuer à un auteur SPIP le statut « organisation » (une société, une association...) afin de gérer par exemple une liste de fournisseurs ou de clients.

Choisissez l’auteur SPIP à qui attribuer le statut d’organisation, puis dépliez la boite de dialogue « Contacts & Organisations » et cliquez sur « Devenir une organisation ». Modifiez l’auteur (maintenant devenu une organisation) et ajoutez lui les informations nécessaires. Ce qui donnera, par exemple :

Exemple 3 : lier un contact à une organisation

Le plugin permet de lier un ou plusieurs contacts, à une ou plusieurs organisations. Cette fonctionnalité (en cours de test) est inspirée des logiciels CRM de gestion de contacts.

On peut lier un contact avec une organisation, soit depuis une fiche contact, soit depuis une fiche organisation. Voici un exemple de liaison d’un contact avec une organisation à partir d’une fiche organisation.

Depuis la fiche « auteur » de l’organisation, dépliez la la boite de dialogue ; un champ de saisie apparait et permet de rechercher un contact [1] à lier à l’organisation.

Une fois le(s) contact(s) trouvé(s) par SPIP affiché(s), cliquez sur le « + » pour lier ce contact à l’organisation. Pour « délier » le contact de l’organisation, il suffit de cliquer sur le bouton « délier » (icône en forme de maillon de chaine rompu).

Dépendances

Le plugin « Contacts & organisations » nécessite le plugin saisies en version 1.7.7 minimum (pour la saisie du champ date).

Nouvelles tables / nouveaux champs

Le plugin installe 3 nouvelles tables, et permet d’utiliser de nouveaux champs dans les boucles #AUTEURS :

  • table spip_contacts :
    • #CIVILITE
    • #NOM
    • #PRENOM
    • #FONCTION
    • #DATE_NAISSANCE
    • #DESCRIPTIF
  • table spip_organisations :
    • #NOM
    • #STATUT_JURIDIQUE (anciennement « type »)
    • #IDENTIFICATION (anciennement « siret »)
    • #ACTIVITE
    • #DATE_CREATION
    • #DESCRIPTIF
  • table spip_contacts_organisations
    • pas de champ nouveau, mais permet de déterminer des liaisons entre contacts et organisations

Annuaires

Il est possible de regrouper des organisations et/ou des contacts, en les séparant dans des annuaires différents. Chaque fiche ne peut appartenir qu’à un seul annuaire.

Partie expérimentale

Rq : les pages présentées ici ont bien évolué depuis la création de cette documentation.

Deux pages de gestion des contact et des organisations sont en cours d’élaboration et présentes dans le plugin :

Les fonctionnalités sont à imaginer à partir de ces pages (imports, transformations en masse, etc.). N’hésitez pas à faire des suggestions.

Notes

[1un spip_auteur ayant le statut de contact

Discussion

89 discussions

  • 5

    Bonjour,

    Dans le cas d’ajout de champs extra aux contacts et/ou aux organisations, ces champs ne sont pas visibles dans l’édition d’un auteur, si les fiches sont associées.
    Comment corriger cela svp ?

    • Oui effectivement, c’est dû au fonctionnement de Champs extras qui ne s’insère que dans le form de l’objet des champs. Faut alors refaire tout son boulot soi-même à la main, quand on les veut ailleurs, ce qui est un peu chiant. Le plus propre serait que Champs extras ajoute directement les saisies ajoutées dans les saisies de l’objet des champs quand cet objet est déjà fabriqué entièrement en saisies (ce qui est le cas pour les contacts et orgas), et dans ce cas dès qu’on récupère « les saisies de tel objet », alors on aurait la liste complète, celles d’origines + les extras. Mais du coup c’est plutôt une amélioration directement du plugin Champs Extras…

      Un ticket existait déjà en ce sens d’ailleurs (je viens de le repréciser/compléter un peu plus) :
      https://git.spip.net/spip-contrib-extensions/champs_extras_core/issues/10

    • Merci pour ce retour, je vais faire ça.

    • Euh tu vas faire quoi ça ? :)

    • Faut alors refaire tout son boulot soi-même à la main, quand on les veut ailleurs, ce qui est un peu chiant

      Créer un formulaire sur mesure.

    • Ce n’est pas du tout ce que j’ai dit : j’ai dit que si ce n’est pas Champs Extras qui fournit directement l’ensemble des saisies au bon endroit, alors dans les plugins qui ont besoin des extras *ailleurs que dans l’objet de ces champs*, doivent refaire le même travail que ce que fait Champs Extras dans les formulaires des objets. Là en l’occurrence C&0 devrait recoder le même travail que ce que fait Champs Extras pour editer_contact et editer_organisation, mais dans editer_auteur. Ma préférence étant donc que ce soit Champs Extras qui fassent mieux dès le départ.

      En attendant, t’as pas du tout à tout recoder toi-même : le plugin Profils sert justement à ça, en bien mieux que ce que fait C&0 dans editer_auteur en bourrin. Avec tu peux gérer tes utilisateurs avec les champs voulus pour chacun, mélangeant dans le même unique form les champs des auteurs, contacts, coordonnées…

    Répondre à ce message

  • 7

    Bonjour
    retour de test en Spip 4
    dans « contact » la recherche pour associer à un auteur génère bien un résultat mais la feuille de style est sur display : none ; et y reste
    ligne 1617

     .lat .liste-objets tr > :not(.principale):not(.id):not(.statut), .lat .liste-objets .titre .soustitre, .lat .liste-objets .titre .surtitre {display: none;}

    une fois bidouillé le css en cliquant sur l’auteur l’association ne se fait pas
    c’est juste un lien vers l’auteur

    j’ai aussi constaté que l’action de chercher lançait une requète XHR de plugins-dist/bigup/javascript/bigup.logos.js

    Répondre à ce message

  • 2

    Bonjour

    quelle est la méthode pour importer en masse des nouveaux contacts ?

    merci
    Natacha

    • Il n’y a pas de méthode, le plugin ne fournit pas d’outils pour importer/exposer en masse.

      Le plugin Profils fournit cela, mais dans son cas, toute organisation ou contact doit être lié à un compte utilisateur. Éventuellement on peut feinter en l’utilisant puis en supprimant les comptes associés à chaque (et dans les tables de liens ensuite), mais ça reste du bidouillage (si on ne veut pas de compte associé à chaque).

    • Merci RastaPopoulos

      c’est peut une bonne piste quand même

      merci
      Natacha

    Répondre à ce message

  • 8

    Bonjour,

    Quelqu’un l’a-t-il testé avec spip 4 ?

    Je vais le tester en forçant la compatibilité dans le fichier xml du plugin, mais si quelqu’un avait déjà tenté le coup et avait un retour d’expérience, je serais preneur.

    Merci d’avance,

    Cordialement,

    Hervé

    • Je l’utilise sur un site et tout ce que j’utilise fonctionne (utitlisation avec Profils notamment). Mais je n’ai pas testé intensivement chaque option possible (organisations en hiérarchie, liens multiples orgas contacts, liens avec les autres contenus, etc).

    • Merci de ta réponse.

      Profils n’est aussi pas compatible avec spip 4.

    • Bonsoir,

      Sous spip 4.0.0, j’ai tenté de forcer la compatibilité des trois plugins « contacts et organisation », « profils » et « rubrique à l’inscription », mais j’ai eu en retour les messages d’erreurs suivants :

      Erreurs survenues

      Erreur dans les plugins : _plugins_compat_forcee/contacts_et_organisations
      > required
      Erreur dans les plugins : _plugins_compat_forcee/profils
      > required
      Erreur dans les plugins : _plugins_compat_forcee/rubrique_a_linscription
      > required

      Je pourrais, bien entendu, construire un site ne spip 3.2, mais ça serait dommage.

      Merci d’avance,

      Cordialement,

      Hervé

    • En « retour » de quoi ? À quel endroit ? Ce que tu colles là ne correspond ni a des erreurs PHP, ni a des erreurs de SVP dans l’admin des plugins, donc je ne vois pas de quelle sorte de message il s’agit ni où.

    • Bonjour,

      Ci-joint une capture d’écran des erreurs affichées par l’interface de "Gestion des plugins" sur un spip 4.0.0 vierge avec les fichiers paquet.xml des plugins modifiés sur le modèle habituel pour forcer la compatibilité vers une version plus récente de spip :

      "> required" signifie-t-il qu’un chevron ">" est manquant alors que le seul code modifié est compatibilite=« [3.0.0 ;4.0.*] » ?

      <paquet
      	prefix="contacts"
      	categorie="auteur"
      	version="4.0.8"
      	etat="test"
      	compatibilite=« [3.0.0;4.0.*] »
      	logo="images/contacts-128.png"
      	schema="1.13.0"
      	documentation="https://contrib.spip.net/Plugin-Contacts-Organisations"
      >
      	<nom>Contacts &#38; Organisations</nom>
      	<!-- Ajouter un gestionnaire de contacts à SPIP -->
      
      	<auteur>Cyril MARION</auteur>
      	<auteur lien="http://www.cym.fr/">Ateliers CYM</auteur>
      	<auteur lien="http://magraine.net/">Matthieu Marcillaud</auteur>
      	<auteur lien="http://www.ldd.fr/">Les D&#233;veloppements Durables</auteur>
      
      	<traduire module="contacts" reference="fr" gestionnaire="salvatore" />
      	<traduire module="paquet-contacts" reference="fr" gestionnaire="salvatore" />
      
      	<pipeline nom="declarer_tables_objets_sql" inclure="base/contacts.php" />
      	<pipeline nom="declarer_tables_interfaces" inclure="base/contacts.php" />
      	<pipeline nom="declarer_tables_auxiliaires" inclure="base/contacts.php" />
      
      	<pipeline nom="affiche_gauche" inclure="contacts_pipelines.php" />
      	<pipeline nom="afficher_contenu_objet" inclure="contacts_pipelines.php" />
      	<pipeline nom="affiche_hierarchie" inclure="contacts_pipelines.php" />
      	<pipeline nom="autoriser" inclure="contacts_autoriser.php" />
      	<pipeline nom="boite_infos" inclure="contacts_pipelines.php" />
      	<pipeline nom="formulaire_fond" inclure="contacts_pipelines.php" />
      	<pipeline nom="formulaire_charger" inclure="contacts_pipelines.php" />
      	<pipeline nom="formulaire_verifier" inclure="contacts_pipelines.php" />
      	<pipeline nom="formulaire_traiter" inclure="contacts_pipelines.php" />
      	<pipeline nom="ieconfig_metas" inclure="contacts_pipelines.php" />
      	<pipeline nom="insert_head_css" inclure="contacts_pipelines.php" />
      	<pipeline nom="optimiser_base_disparus" inclure="contacts_pipelines.php" />
      
      	<necessite nom="saisies" compatibilite="[3.23.2;[" />
      	<necessite nom="medias" compatibilite="[2.7.27;[" />
      	<necessite nom="spip_bonux" compatibilite="[3.1.0;[" />
      
      	<utilise nom="coordonnees" compatibilite="[2.1.0;[" />
      	<utilise nom="crayons" compatibilite="[1.13.8;[" />
      
      	<menu nom="contacts_organisations" titre="contacts:bouton_contacts_organisations" parent="menu_edition" icone="images/contact-16.png" action="repertoire" />
      
      	<onglet nom="repertoire" titre="contacts:bouton_repertoire" parent="contacts" icone="images/annuaire-24.png" />
      	<onglet nom="organisations" titre="contacts:bouton_organisations" parent="contacts" icone="images/organisation-24.png" />
      	<onglet nom="contacts" titre="contacts:bouton_contacts" parent="contacts" icone="images/contact-24.png" />
      </paquet>
    • Ton copié collé montre pourtant que tous les attributs ont un double quote classique du code pour les entourer, alors que seul l’attribut de compat que tu as modifié a des guillemets français autour. Si c’est ça forcément ça ne peut que péter.

    • c’est bien cela et l’erreur se voit en ouvrant les fichiers xml dans Sublime Text !

      J’ai commis l’erreur de les éditer dans un l’éditeur de texte très basique intégré au logiciel Mac Path Finder (qui rend beaucoup de services par ailleurs) :

      au lieu de guillemets droits ", il avait « <0xa0> et <0xa0>"

      Après ce problème corrigé, il me reste un problème gênant :
      si l’ensemble des plugins ont pu être activés, l’activation du plugin rubrique à l’inscription provoque une erreur 500 et, si l’on revient en arrière dans le navigateur, ce dernier plugin est fonctionnel, mais la page Gestion des plugins est vide ! (voir copie d’écran jointe)

    • C’est un autre problème, à signaler dans le plugin idoine (mais j’ai vu que Maieul avait commencé à corriger des choses)

    Répondre à ce message

  • 1

    Bonjour,

    Spip 3
    Comment faire pour inclure, dans un article, le contenu d’une organisation ?
    existe-il un modele
    ou bien modifier article.html avec #INCLURE ??

    Merci
    c’est sans doute une question de débutant ... de l’aide serait bienvenue

    • Bon voilà ma petite coopération, un modele à utiliser dans un article.

      [(#REM)
        Copie du 2021-03-23 17:35:02 par administrateur
        Fichier original tmp/cache/scaffold/contenu/organisation.html
        Modèle «organisation» par défaut : voir schéma complet des données d'une organisation
        
               Utilisation :
              - Dans un squelette : #MODELE{organisation, id_organisation=x, param}
              - Dans un article :     <organisation|id_organisation=x|parametres> 
      ][(#REM)
              Paramètres :
                      id_organisation Identifiant d'une organisation.
                      v_tout          Afficher l'ensemble des données de l'organisation
                      v_legales       Afficher les données légales
                      v_adresse       Afficher l'adresse (gis)
                      v_web           Afficher l'adresse du site Web
                      v_description	Afficher la description
                      v_horaire		Afficher les horaires
                      v_tarifs		Afficher les tarifs
                      v_telephone		Affficher les téléphones
                      v_mail			Afficher les mails
                      v_rezo			Afficher les reseaux sociaux
      ]
      <BOUCLE_contenu(spip_organisations){id_organisation}>
      <div class='contenu-principal'>
      	[(#ENV{v_titre}|ou{#ENV{v_tout}}|oui)<div class='cartouche'><h2 class='#EDIT{nom} nom'>[(#NOM|image_reduire{500,0})]</h2></div>]
      	[(#ENV{v_date}|ou{#ENV{v_tout}}|oui)<div class='cartouche'>#OUVERTURES</div>]
      	<B_adresses><BOUCLE_adresses(ADRESSES adresses_liens?){id_organisation}>[(#ENV{v_adresse}|ou{#ENV{v_tout}}|oui)#INCLURE{fond=modeles/picto,nom=map-marker,theme=carreVide,taille=1} #VOIE #CODE_POSTAL #VILLE ]</BOUCLE_adresses><br />
      	</B_adresses>
      [(#REM) #TYPE #NUMERO ]
      	<B_telephones><BOUCLE_telephones(NUMEROS numeros_liens?){id_organisation}>[(#ENV{v_phone}|ou{#ENV{v_tout}}|oui)#INCLURE{fond=modeles/picto,nom=#TYPE,theme=carreVide,taille=1} #NUMERO ]</BOUCLE_telephones><br />
      	</B_telephones>
      	[(#ENV{v_mail}|ou{#ENV{v_tout}}|oui)]<B_emails>
      	<BOUCLE_emails(EMAILS emails_liens?){id_organisation}>[(#ENV{v_mail}|ou{#ENV{v_tout}}|oui)
      	<a href="mailto:#EMAIL">#INCLURE{fond=modeles/picto,nom=at,theme=carreVide,taille=1}Envoyer un email</a> ]</BOUCLE_emails><br />
      	</B_emails>
      	[(#ENV{v_web}|ou{#ENV{v_tout}}|oui)<div class='#EDIT{url_site} url_site'>  <a href="#URL_SITE" target="_blank"> #INCLURE{fond=modeles/picto,nom=home,theme=carreVide,taille=1} #URL_SITE </a> </div>]
      	<B_socios><BOUCLE_socios(REZOSOCIOS rezosocios_liens?){id_organisation}>#SET{type, #TYPE_REZO|mb_strtolower}
      	<a href="https://www.#GET{type}.com/#NOM_COMPTE" target="_blank">[(#ENV{v_rezo}|ou{#ENV{v_tout}}|oui)#INCLURE{fond=modeles/picto,nom=#GET{type},theme=carreVide,taille=1}Rejoindre le réseau</a> ]</BOUCLE_socios><br />
      	</B_socios>
      </div>
      [<div class='notes surlignable'><h2 class='h2 pas_surlignable'><:info_notes:></h2>(#NOTES)</div>]
      </BOUCLE_contenu>

      et un exemple https://3w.plandecuques.fr/lou-grihet-dou-plan-dei-cuco

    Répondre à ce message

  • 1

    À la manière de ce que fait le plugin « auteurs partout », y a-t-il un moyen pour lier un évènement (agenda), un article etc... non pas à un auteur mais à une organisation ?

    • Oui c’est dans la config du plugin, tu peux dire sur quels objets tu veux lier des Contacts ou des Organisations, et donc après t’as les boites de liaison sur les objets cochés.

    Répondre à ce message

  • 2

    Tout en abord bravo pour ce plugin que j’utilise avec beaucoup de plaisir.

    Je ne souhaite pas qu’un auteur devenu une Organisation utilise son identifiant et son mot de passe. Cette utilisation au nom d’une Organisation est générique. Or, le RGPD demande à ce que nous puissions avoir une traçabilités des opérateurs et ce mode de connexion me pose problème.
    En d’autres termes, je souhaite que seul les Contacts puissent se connecter en tant qu’Auteur.

    Y-a-t-il une démarche simple que je puisse mettre en œuvre ?

    merci par avance.

    • vider leur login et leur mot de passe ?

    • Oui, démarche simple et efficace. Merci.
      Et lors de création, ne pas indiquer de login et mot de passe pour ne pas permettre d’accès.

    Répondre à ce message

  • 1

    Salut à tous

    je crée un auteur
    je l’associe à un contact
    en rééditant l’auteur, je sélectionne l’annuaire « Boulanger » pour ce contact

    dans la page contacts et organisation
    il y a 3 onglets : Répertoire, Organisations, Contacts

    dans Répertoire, s’affichent les annuaires
    je sélectionne l’annuaire « Boulanger »
    et je ne vois pas le nouveau contact
    pour le voir dans cette liste,
    il faudrait que j’ajoute le contact à cet annuaire
    ce qui ajouterait une entrée dans spip_contacts_liens

    dans Contacts, là je retrouve aussitôt mon auteur
    dans l’onglet de l’annuaire « Boulanger » à partir du champ id_annuaire de spip_contacts

    ce n’est pas un peu tordu ce truc ?
    pourquoi donc ces deux fonctionnement ?
    c’est très déroutant

    • Salut, je pige pas pourquoi tu parles de table de lien. L’annuaire est unique pour une fiche (contact ou orga), soit il n’est nulle part, soit il est dans un annuaire, avec son champ id_annuaire rempli. Ya pas plusieurs fonctionnements.

    Répondre à ce message

  • 3

    Bonjour,

    Je n’arrive pas afficher une organisation suivant un mot clef dans un squelette, par exemple :

    <BOUCLE_organisation(ORGANISATIONS){id_mot=17}>
          #NOM
    </BOUCLE_organisation>

    Si l’auteur n’est pas une organisation, il est bien affiché par la boucle

    <BOUCLE_auteur(AUTEURS){id_mot=17}>
          #NOM
    </BOUCLE_auteur>

    Merci pour vos lumières !

    • Bon, à priori, il faut ajouter l’organisation au mot clef et non le mot clef à l’organisation pour que cela fonctionne.

    • Bah non, ça ne veut plus dire la même chose, c’est pas du tout pareil.

      Quand deux objets ont des tables de liens, il faut spécifier explicitement la liaison que tu cherches à faire sinon il utilise la première table de lien qu’il trouve, celle de l’objet principal de la boucle.

      Il faut mettre {mots_liens.id_mot}

    • Oh ! Je te remercie beaucoup pour ta réponse :) et évidemment cela fonctionne parfaitement.

    Répondre à ce message

  • 1

    Avec Spip 3.1.1 j’ai un problème que je n’ai pas avec Spip 3.1.0, à savoir l’impossibilité d’afficher une page ’annuaire.html’ dans la partie publique du site, avec l’erreur suivante :

    Fatal error : Call to undefined function type_du_logo() in /home/.../ecrire/public/composer.php on line 548

    Ceci, quelque soit le réglage de la fonction ’Activer les squelettes publics pour ZPIP en version 1, permettant le parcourir les contacts et organisations dans l’espace public ?’.

    D’autres rencontrent le meme problème ?

    • Je ne vois pas trop le rapport avec cette erreur. Car c’est surtout une erreur 404 que tu devrais avoir, vu qu’il n’existe pas du tout de squelette « annuaire » par défaut. À moins que tu n’en ais toi-même ajouter un perso.

    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