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

  • 4

    Bonjour,

    sur un spip 3 et le plugins Contact & org. dernières versions
    le bouton enregistrer une organisation « fille »
    me renvoie sur un lien
    javascript:if (window.jQuery) jQuery(« .entete-formulaire .retour a »).followLink() ;
    donc : rien !
    chaque fois que j’essaie de modifier l’organisation mère sur une org. fille déjà créée.

    Par ailleurs, au moùment du premier enregistrement d’une organisation fille créée via le bouton « créer une org. fille », l’enregistrement se passe ok, mais ne conserve pas l’id de l’org mère ...

    Cordialement
    RB

    • Bonjour,

      Je suis confus, mais je ne reproduis rien de cela !

      Par contre, il y a un autre bug identifié lorsqu’on a activé les contacts-auteurs dans la conf de C&O, et des mots clés sur les auteurs. Mais rien à voir avec ce que tu expliques. Il doit manquer une information dans ta procédure pour reproduire ce bug ?

      MM.

    • Bonjour,

      je ne crois pas ... mais ?... vous ai envoyé message via votre page auteur.

      Merci,
      RB

    • linkfox

      Bonjours, je cherche a savoir s’il y a un moyen d’importer en csv une liste de contact et organisation merci d’avance

    • Bonjour,

      Je reproduit sur une installation toute neuve.
      Lors de l’ajout d’une organisation fille, l’organisation est bien crée mais à la racine.
      Ensuite lorsque l’on l’édite et qu’on sélectionne une organisation parente on est redirigé vers une adresse « javascript:if (window.jQuery) jQuery( ».entete-formulaire .retour a« ).followLink() ; ».

      SPIP 3.0.6 [20322]
      Coordonnées 2.1.7 SVN [70747]
      Contacts & Organisations 2.6.3 SVN [70271]
      Editer Liens Simples 1.0.1 SVN [70922]

      Merci

    Répondre à ce message

  • Bonjour,

    un contact peut ne pas être lié à une organisation ou l’être à plusieurs organisations. Dès lors la fonction du contact intrinsèque à l’objet contact me paraît plutôt relever d’un typage de la liaison à une organisation.
    Si vous souhaitez conserve ce champ, j’opterais plutôt par « métier principal », ou « domaines de compétences ».
    Par ailleurs, l’internationalisation du plugin fait que pour la fiche « organisation » je propose de séparer l’identifiant (n° d’entreprise, en Belgique, Siret en France, etc.) et le numéro de TVA (type de données au minimum valable sur toute l’europe).
    J’ajouterais aussi l’acronyme ou le sigle de l’organisation (OMS pour Organisation mondiale de la santé)
    l’usage d’un champ « lang » serait très bien. (aussi pour contact)

    Enfin, pour l’activité, compte tenu qu’il peut être nécessaire d’homogénéiser les entrées, peut-être qu’une liste de sélection permettant soit de sélectionner une entrée déjà existante, soit d’en créer une, serait pas mal : ce serait dommage qu’un rédacteur encode ONG et un autre « humanitaire » et un troisième « coopération au développement » ...

    Perso, par ailleurs, j’ai surcharger des fichiers pour pouvoir lier des organisation à des organisations (autrement que dans une relation mère-fille et idem pour les contacts (avec typage des relations)

    En tous cas, formidable base de travail !
    Merci

    Répondre à ce message

  • 4

    Bonsoir,
    Lorsqu’on essaye d’activer le plug-in, on obtient le message suivant : « Le plugin Contacts&Organisations dépend de EDITER_LIENS_SIMPLES [1. ;[ »
    Or, impossible de trouver ce dernier plug-in. D’ailleurs, le lien n’est pas actif dans la présentation de Contacts & Organisations.
    Qu’elle est donc la procédure à suivre ?
    Merci

    • Bonsoir,
      Ce plugin est nécessaire pour la version de C&O pour SPIP 3.0. Il est présent sur la zone à l’adresse suivante :
      http://zone.spip.org/trac/spip-zone/browser/_plugins_/editer_liens_simples. Pour l’instant on a pas fait générer le zip automatiquement, ce qui explique que le plugin ne puisse pas être trouvé automatiquement.
      Je vais faire la modif qui sera effective et visible sur cette page (lien vers le zip) dans 1h. En attendant le zip peut être récupéré avec le lien paramétré suivant : http://zone.spip.org/trac/spip-zone/changeset/latest/_plugins_/editer_liens_simples?old_path=/&format=zip
      Cyril

    • merci pour cette réponse très rapide
      j’ai hâte de découvrir ce plug-in
      bravo pour le travail réalisé
      JF

    • Bonjour,

      Je confirme que le plugin peut maintenant être installé directement sur la branche SPIP 3.x : Merci à Cyril & Matthieu. Ce n’est pas encore le cas de Coordonnées visiblement encore incompatible pour SPIP 3 : dommage...

      J’en profite pour vous indiquer obtenir le message d’erreur suivant après création d’une organisation :

      Erreur SQL 1054
      Unknown column ’$_id_objets’ in ’where clause’
      SELECT id_organisation FROM spip_organisations_contacts WHERE $_id_objets=2 AND $_id_objetl=1

      L’organisation est néanmoins bien créée et est bien rattachée à l’auteur, comme demandé =°)

      Merci !

    • Bonjour, Bonsoir : Bonjoir,

      Spip 3.0.5 (html5) et autres plugins...

      Vous avez certainement vos raisons, mais je ne comprends pas très bien - sans vouloir être désagréable bien entendu -)) - pourquoi il faut ’transformer’ un auteur en organisation et non pas créer une organisation pour ensuite y lier des contacts. Que se passera-t-il par exemple si le contact principal est détruit par un utilisateur non averti ... ? Je n’ai pas testé cette éventualité, j’avoue ! =°)

      Ce n’est pas pour cette raison que je poste ici : je ne parviens à afficher le nom de l’organisation que pour le contact principal, soit celui qui a été ’transformé’ en organisation, or je voudrais l’afficher également pour les autres contacts liés à l’organisation.

      Le code / boucle utilisé :

      <BOUCLE_details_auteur(AUTEURS){tout}{id_auteur=#ENV{auteur}}{statut=6forum}>
              
              <BOUCLE_details_contact(CONTACTS){id_auteur}>
              [<p>Civilit&eacute; : (#CIVILITE)</p>]
              [<p>Nom : (#NOM)</p>]
              [<p>Pr&eacute;nom : (#PRENOM)</p>]
              </BOUCLE_details_contact>
              
              <BOUCLE_details_organisation(ORGANISATIONS){id_auteur}>
              [<p>Organisation : (#NOM)</p>]
              </BOUCLE_details_organisation>
              
              [<p>Email : (#EMAIL)</p>]
              
       </BOUCLE_details_auteur>

      Merci d’avance pour vos réponses & bravo pour ce plugin.

    Répondre à ce message

  • Bonjour, soit un spip 3.0.5 SQLITE + Contacts & Organisations 2.2.2 - test et Coordonnées 2.0.14 - test

    l’idée est de réaliser un annuaire de contact via la page auteur, il me faut donc
    le nom et prénom ; l’adresse ; téléphone portable + fixe, adresse mails etc ...

    d’où l’idée d’utiliser coordonnée
    impossible de faire fonctionner seul il m’a fallu installé également le plugin Contacts et organisation mais en plus modifié le necessité de coordonnée de :
    compatibilite="[3.0.0-dev ;compatibilite="[3.0.0-dev;3.0.*"

    voilà pour l’installation ensuite lorsque j’essaye une boucle pour afficher les données rien ne s’affiche est ce lié a ma boucle ou a SQLITE ?

    <BOUCLE_auteur_principal(AUTEURS){id_auteur}{lang_select}>
                        <div id="titre-article"><:escal:envoyer_message:><strong>#NOM</strong>
                    ----
    
    a    [(#CIVILITE)] 			<br />
    b    [(#NOM)] 			<br />
    c    [(#PRENOM)] 			<br />
    d    [(#FONCTION)] 			<br />
    e    [(#DATE_NAISSANCE)] 			<br />
    f     [(#DESCRIPTIF)] 			<br />
                    ----    
                        </div>
                        <!-- Affichage de la bio si elle existe -->
                        <div id="descriptif-article">			[(#BIO)] 			<br />
                          <!-- si l'auteur n'a pas donne d'adresse, on le signale
                          		s'il l'a donne,  le formumaire s'affiche -->
                          [(#EMAIL|non) <:escal:adresse_non:>]
                        </div>
                    </div><!-- fin cadre-titre-article -->
                    
                    <div id="texte-article" >
                    
                    <div id="formulaire-auteur">#FORMULAIRE_ECRIRE_AUTEUR</div>
    
    
                      </BOUCLE_auteur_principal>

    merci pour votre aide
    URL exemple

    Répondre à ce message

  • Bonjour, apparemment il manque le squelette prive/objets/liste/contacts_organisations_lies ?

    Répondre à ce message

  • Bonjour,

    Autre petit souci : les champs supplémentaires créés par le plugin ne sont pas vus par le plugin Fulltext, et je ne vois pas de moyen pour les ajouter (comme par ex avec le plugin Champ Extra).
    Le plugin Fulltext ne voit que le champ « nom ».

    Pour s’en sortir il est possible de créer l’index « tout » sur le « nom » seulement depuis spip, ensuite manuellement en phpMyAdmin d’ajouter les autres champs nécessaires à l’index précédemment créé.

    Mais bon ça serait plus classe par spip :-)

    Pierre.

    Répondre à ce message

  • Bonjour,
    excellent plugins

    quelques suggestions :
    la possibilité de lier plusieurs fois un contact à la même organisation (il peut y occuper des fonctions diverses)
    la possibilité de définir une période de validité pour un lien contact>organisation (par exemple pour un élu dans une assemblée. le lien est maintenu en dehors d ela période, bien sûr, mais on sait de quand à quand cette fonction a été occupée chez Y par X
    ajouter un champ acronyme pour les organisations (BIT pour Bureau International du Travail)
    pour ce dernier point, j’imagine que champs extras peut faire l’affaire

    beau boulot en tous cas,
    R. Burton

    Répondre à ce message

  • 1

    Bonjour,

    Une question concernant l’usage de mot-clés sur des organisations. Cela fonctionne-t-il ? (spip 3.0.5 et Contacts 2.2.1 SVN [67082])

    Je pose la question car nos essais sont moyennement concluants, par ex une boucle qui va chercher des organisations qui ont un mot-clé :

    BOUCLE_test (ORGANISATIONS) id_mot=27 ne marche pas alors que
    BOUCLE_test (ORGANISATIONS) titre_mot=Savoie marche
    (bien sûr le mot-clé 27 a pour titre Savoie et of course, on préfèrerait bosser avec les id ...)

    De la même façon, dans le back-office, habituellement dans la liste de mots-clés on voit pour un mot XX qu’il a YY articles liés, ça ne marche pas pour les organisations, si pas de mot c’est ok, si on a une organisation on a la mention « Une organisation » et si plusieurs organisations la mention « organisation nb » ...

    Merci, Pierre.

    • Je me réponds à moi-même, en tous cas pour la première partie de la question :

      http://marcimat.magraine.net/SPIP-3-Documents-Mots

      C’est le même problème pour les organisations qu’avec les mots appliqués à des documents ou les documents attachés à des mots ... et il est donc logique que ça marche avec le titre, puisque pas d’ambiguité. Lecture intéressante.

      Cela ne résout cependant pas le souci dans le back-office, mais bon, c’est pas majeur.

      P.

    Répondre à ce message

  • 5

    bonjour,

    la modification apportée récemment (voir http://zone.spip.org/trac/spip-zone... ) corrige sans doute le problème pour sqlite, mais elle empêche maintenant la création des tables de liaison avec mysql (testé sur spip 3).

    •  ?? Quelle version de MySQL ? parce-que ça devrait pas poser de problème et en plus c’est portable !

    • version 5.5.25 (celle fournie avec MAMP 2.1.1).

      Les tables de liaison ne se sont pas créées à l’installation du plugin et il y avait ce message dans les log (fichier mysql.log) « Oct 14 16:22:01 ::1 (pid 6301) :Pri:ERREUR : Erreur 1170 de mysql : BLOB/TEXT column ’numero’ used in key specification without a key length »

    • précision relative à mon message précédent : le log venait de l’installation du plugin Coordonnées qui a le même problème (d’où la colonne « numéro » qui apparaît ici), mais le message était identique pour Contacts.

    • Vous avez raison : MySQL ne sait pas créer des indexes/clés sur ce genre de champ... (ou du moins il s’autorise seulement lorsqu’on précise la quantité à prendre) Il faudra probablement utiliser un VARCHAR sur le champ fautif...

      Par contre, cela ne doit pas empêcher la création de la table elle-même (sauf si l’API fait toute l’opération en une fois au lieu de faire la création de colonnes d’une part puis d’ajouter les indexes d’autre part) :-/

    • Salut.

      Pour Coordonnées ça devrait être résolu.

      Pour Contacts & Organisations, je me pencherai dessus plus tard (sauf si quelqu’un d’autre le fait avant)

      Merci.

    Répondre à ce message

  • 3
    tascip

    Bonjour,
    Avec un spip 3 RC, contacts et organisations en V2.1.1 et coordonnées 2.0.1, lors de l’insertion d’un nouveau contact (new=oui), la redirection du formulaire ne se fait pas (vers le contact fraichement inséré). Le plugin me ré-affiche le formulaire d’insertion.
    L’’enregistrement a cependant bien lieu. Cela se produit également avec les organisations.

    Auriez vous une idée svp ?

    De plus, si j’essaye de créer un contact pour l’associer a celle-ci depuis l’encadré de liaison de contact à une organisation (bouton « Créer et associer un contact »), spip me retourne une erreur :

    Erreur SQL 1054
    Unknown column '$_id_objets' in 'where clause'
    SELECT id_organisation FROM spip_organisations_contacts WHERE $_id_objets=10 AND $_id_objetl=17

    merci d’avance pour votre aide et encore bravo pour ce plugin :)

    • Bonjour,

      J’ai le même problème.

      Impossible de lier un contact à une organisation et vice versa. J’obtiens le même message d’erreur :

      1 ERREUR DANS LE SQUELETTE :
      Erreur SQL 1054
      Unknown column ’$_id_objets’ in ’where clause’
      SELECT id_organisation FROM spip_organisations_contacts WHERE $_id_objets=10 AND $_id_objetl=1

      contenu de la table en PJ

    • une info supplémentaire importante : à l’insatllation du plugin, les tables auxiliaires *_contacts ne se sont pas crées. Je les donc fais à la mimine jusqu’à la création des index => pas la table liée.

      Ceci explique certainement cela...

      Question comment on fait le lien en SQL ?

    • Salut.

      L’erreur SQL provient probablement du code PHP appelé par la page ; rien à voir avec la structure des tables... Comme je vais devoir utiliser ce plugin sous peu pour un projet, j’en profiterai pour jeter un coup d’oeil.

    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