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

  • concernant les autres liens....

    dans le cas des liens familiaux et amicaux par exemple, il s’agit d’une liaison auteur_auteur (id auteur liant, id auteur lié, texte court décrivant le type de relation) :)

    Répondre à ce message

  • 1

    pour pouvoir s’activer, ce plugin réclame :
    -  SPIP_BONUX 1.8.8
    -  VERIFIER 0.1.
    -  INSCRIPTION2 0.71

    mais quel est l’utilité si je peux utiliser inscription2 ?

    • inscription ne sert pour l’instant que pour la liste des pays ; une modif est en cours pour requerir le plugin geographie, à la place. Si vous pouvez utiliser inscrition, aucun intérêt à utiliser Comptes & Contacts.

    Répondre à ce message

  • 7

    Bonjour,

    Joli travail !

    Je sais que ce plugin est en cours de développement, c’est pourquoi je me permets de faire une suggestion.

    Puisque vous avez ajouté des champs date de naissance et nom, prénom, je pense que ville et code postal serait un plus.

    Pensez-vous étendre ce plugin de manière à proposer ces nouveaux champs dans le formulaire d’inscription ? Ce serait le Must !

    • Ville est code postal font partie de la table spip_adresses, liée à la table spip_contact. Cela permet d’attribuer plus de 1 adresse à un contact, et permet d’attribuer aussi des adresses à des comptes (groupes de contacts). 3 types d’informations ont été distinguées et le développement du plugin est allé dans ce sens :

      • nom, prénom, date de naissance, etc. sont des informations uniques, elles sont stockées dans la table spip_contacts (ça aurait pu être la table spip_auteurs si elle avait contenu ces champs
      • numéros de téléphone, adresses postales, email, etc. sont des informations « multiples » : en effet, on peut attribuer plusieurs d’entre elle au même contact, elles sont stockées dans des tables séparées, liées à la table contacts
      • autres infos, spécifiques à un développement particulier : c’est par ici que le plugin peut-être étendu par l’ajout de nouvelles tables.

      Jusqu’à présent une table unique contenant tous les champs (cf inscription2) était utilisée. Dorénavant, la plupart des champs classiques sont déjà inclus dans le plugin Comptes & Contatcts et les extensions ne portent que sur des champs vraiment spécifiques.

      Une table spip_champs a été proposée, justement afin de stocker des infos supplémentaires sans avoir à créer de nouvelles tables. Elle ne permet de stocker que des couples champ/valeur mais peut suffire dans certains cas.

    • Salut, une idée comme ça...
      est-ce que tu as regardé du côté des microformats ?
      hcard par exemple, il me semble que ce format peut contenir n’importe quel type d’information individuelle...

      http://microformats.org/wiki/hcard

      tu pourrais t’inspirer de ces reflexions pour construire l’archi des tables ?

    • Le micro format permettrait d’ajouter des N° de téléphone ou des emails en nombre à une fiche contact. Cela pourrait donc être une piste à suivre.

      <span class="tel">
       <span class="type">home</span>:
       <span class="value">+1.415.555.1212</span>
      </span>
      
      <span class="tel">
       <span class="type">work</span>:
       <span class="value">+1.4343.6986</span>
      </span>

      Merci pour l’info.

    • @th

      Les microformats ne sont que du balisage sémantique inspiré des spécifications du VCF ; donc ça concerne plus les modèles de présentation...
      Le plugin est conçu de façon compatible avec les VCF en permettant d’avoir plusieurs adresses (mais on est limite à trois —work/bureau/professionnel, home/domicile/personnelle/privée, othor/autre— du côté des vCard) dont on peut spécifier le type je crois, et les mêmes informations (lignes d’adresse —on ne distingue pas numéro et voie—, code postal, localité —ville ou lieu-dit—, département et pays).
      Il faut juste prévoir une autre table pour pour numéros (et contrairement à ce qu’on pense, ça concerne aussi les biper, le fax, etc. qui sont les différents types de contacts vocaux) ; et aussi pour les adresses mail (avec leur type aussi), et la messagerie instantanée (où le type est en fait le réseau/fournisseur/protocole : msn, yahoo, jabber, icq, etc.) D’ailleurs, ces trois tables étant similaires et fonctionnant de façon identique, on pourrait n’utiliser qu’une seule table avec une colonne catégorie qui indiquerait : tel, email, mailer (je reprend les termes du rfc2426) :)

    • Bonnes remarques, le n° et la voie dans la table spip_adresses pourraient être regroupées. En revanche j’hésite encore : j’ai prévu à la fois les tables spip_numeros, spip_emails et spip_messagerie pour gérer les 3 champs séparéments, mais aussi une table unique spip_champs pour ces 3 types de données avec une colonne supplémentaire ’type_champ’ qui peut prendre les valeurs email, numero, messagerie.

      Il faut voir à l’usage, et dans les jours qui viennent je vais importer des données d’un gros CRM et voir ce qui est le plus facile et le plus souple à gérer.

      Commentaires et remarques bienvenus !

    • les 3 extensions d’une hcard selon la page du wiki sont :
      -  adr
      -  tel
      -  email

      Cela correspond aux 3 tables spip_adresses, spip_numeros et spip_emails.

    • j’hésite encore : j’ai prévu à la fois les tables spip_numeros, spip_emails et spip_messagerie pour gérer les 3 champs séparéments, mais aussi une table unique spip_champs pour ces 3 types de données avec une colonne supplémentaire ’type_champ’ qui peut prendre les valeurs email, numero, messagerie.

      les deux approches se défendent... tout dépend de la souplessse d’utilisation que l’on veut (quoi que je ne vois pas trop si ça fera vraiment une différence pour l’utilisateur) et/ou de la complexité (pour les développeurs qui souhaitent étendre le plugin ou l’interfacer avec une autre application)

      Il faut voir à l’usage, et dans les jours qui viennent je vais importer des données d’un gros CRM et voir ce qui est le plus facile et le plus souple à gérer.

      les deux approches existent... il y a des CRM pour lesquels tout est combiné avec l’adresse : c’est moins souple...

      l’avantage d’une table est qu’au niveau des requêtes, ça peut paraitre plus simple : on lit/écrit une seule table.. mais cette simplicité est apparente car il faut lire plusieurs occurrences (relation 1-N) et faire le tri selon le type_champ (en particulier quand on ne veut récupérer qu’une seule information et non plusieurs). mais en écriture, c’est moins simple que d’adresser plusieurs tables dans une seule requête (je me place du point de vue où il y a un numéro et un mail, sinon c’est tout aussi complexe, mais toujours moins de requêtes à faire...) :-/ je crois qu’il faut tester et ne garder que la solution la plus simple et souple au niveau de l’écriture des boucles (la viabilité du plugin dépendra de sa facilité à être intégré dans les squelettes)

      les 3 extensions d’une hcard selon la page du wiki sont : adr tel email Cela correspond aux 3 tables spip_adresses, spip_numeros et spip_emails.

      il faut que je regarde comment sont traités les messageries (mais pour beaucoup d’application, c’est traité comme l’email sauf que c’est d’un type msn/icq/yim et non mail —et dans ces cas, ils ne font pas de différence entre les mails qui peuvent être principal/pro/perso/etc.—)

      • email
        • id_auteur (pour le lien)
        • type (privé/pro/...)
        • valeur (qui devrait être unique !)
      • messagerie (qui peut utiliser une adresse email...)
        • id_auteur (pour le lien)
        • type (gadu/gtalk/icq/aol/...)
        • valeur (qui devrait être unique !)
      • numéro
        • id_auteur (pour le lien)
        • type (fax/gsm/biper/...)
        • valeur (habituellement unique —gsm— mais peut être partagé quand c’est lié à une adresse —rtc/fax— finalement donc indexable mais sans contrainte)
      • adresse (lui est clairement différent des autres et a besoin d’une table de liaison...)
        • lignes d’adresse (en général deux ou trois, mais il est plus souple d’avoir un unique textarea de trois lignes)
        • code postal (normalement entier mais stocké comme chaine non contrôlée —comme les numéros, peut commencer par zéro, contenir des espace ou un caractère—)
        • département (quelques caractères)
        • ville...
        • pays
        • geo (il y a d’autres extensions possibles, mais celle-ci est la plus courante avec les GPS qui se démocratisent)
        • notes (toujours utile pour indiquer porte, code d’accès au bâtiment et autres infos non transmises avec la vCard)
          -  

    Répondre à ce message

  • 1

    attention aux réglages/préférences de l’éditeur, notamment en ce qui concerne le style de codage (usage des tabulations, convention de nommage, indentation) et —dans le cas présent— à l’encodage utilisé...
    je vois ici des é qui ne le sont plus (on dirait un passage en utf8, ce qui est une bonne chose, mais ne semble pas correspondre au format dans lequel on enregistre). par ailleurs, pour une meilleure portabilité, il est recommandé d’utiliser les entités HTML/XML pour les fichiers de langue et tous les textes d’interface de SPIP :)

    Répondre à ce message

  • Pour info une page de doc a été inclue à l’interface d’admin, listant les balises utilisables dans les squelettes. Je rappelle que dans l’état actuel des travaux, la partie publique est opérationnelle, mais la partie privée (ajout, édition de comptes & contacts) se fait manuellement.

    Répondre à ce message

  • 1
    Jaimepasgougueule

    C’est normal que le plugin les crayons soit actif sur cette page pour tout un chacun sans identification ?
    Si des petits c... passent par là ils vont se régaler !

    Répondre à ce message

  • 1

    Le site familiale est pour moi une zone test et de découvertes, mais ce qui est sympa c’est de prévenir pour les sites pro.

    Une idée pour avancer : le Zip est-il complet ? car je n’ai pas le sous dossier /img/

    De plus, après clic sur « Edition » et « Comptes » apparait la page : /ecrire/ ?exec=comptes, avec comme indication : Fichier comptes introuvable.

    Bonne continuation

    AlainF

    • La partie admin est en cours d’édition. Pour l’instant l’ajout de données dans les tables spip_contacts, spip_adresses, spip_numeros se fait manuellement. Correction à faire sur le plugin.

    Répondre à ce message

  • Bonjour et merci pour votre enthousiasme ! à tempérer cependant dans la mesure ou cette contrib est « en chantier » pour l’instant, un certain nombre de questions se posant toujours par rapport à son orientation. Je vous conseille dans l’immédiat de vous tourner plutôt vers le plugin inscription2 qui est certainement beaucoup plus aboutie au jour d’aujourd’hui.

    Répondre à ce message

  • Bravo,

    je recherchais cette fonction (plugin) pour notre site familial

    maintenant, je vais pouvoir gérer les anniversaires ainsi que le groupement pour les enfants de chaque oncle et tante, je crois que je vais me régaler. Je vous tiens au courant.

    Merci à vous et à cet excellent outils qu’est SPIP et bonne année aux spipiens et aux autres.

    AlainF

    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