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

  • 1

    Tout à coup mon merveilleux petit plugin me fait des siennes ?

    Erreur SQL 1064
    You have an error in your SQL syntax ; check the manual that corresponds to your MySQL server version for the right syntax to use near ’)) AS titre_rang FROM xxxxxxxxx.spip_contacts AS contacts WHERE (contacts’ at line 1
    SELECT contacts.prenom, contacts.nom, contacts.id_contact, nom)) AS titre_rang FROM spip_contacts AS contacts WHERE (contacts.id_contact = xxxxx)
    /home/xxxxx/www/ecrire/public/composer.php

    Boucle : calculer_select() sql_select() ;
    Ligne : 1005

    A l’aide !

    • Oui, il faut avoir SPIP à jour pour cette mise à jour du plugin :(

      Un bug dans la balise #RANG a été corrigé récemment, et il y a besoin de cette correction pour l’amélioration apportée dans la déclaration du titre des contacts.

      Soit avec SVN, soit avec le ZIP de la branche stable (pas de telle version précise, mais de la branche).

    Répondre à ce message

  • 4

    Bonjour,

    Oui, bravo pour ce plugin.

    Nouvelle suggestion :
    Lorsque le champ #NOM n’est utilisé qu’avec des initiales, exemple « D. », conjointement avec un prénom complet, l’URL résultante est de la forme contact2.html car #NOM trop court.

    Pourrait-on proposer, si le #PRENOM existe, de l’utiliser pour allonger l’URL, qui deviendrait de la forme louis-d.html ?

    Merci

    Répondre à ce message

  • 2

    Hello

    re-merci pour cet excellent plugin (on le ne dit jamais assez)
    Juste pour signaler un truc pas grave du tout mais que mes admins n’ont pas manqué de souligner (ils ont le don pour trouver tout de suite ce qui ne fonctionne pas ,-) ) : depuis peu on dispose d’un menu abc pour naviguer dans les organisations. Très bonne idée. Cependant sur notre site (en 3.0) il est inopérant : on voit qu’il se passe quelque chose, la petite roue indique un rechargement ajax de la liste, mais elle reste identque quelle que soit la lettre sur laquelle on clique.

    Voilà. Comme je le disais c’est pas bloquant.
    Peut-être est-ce un conflit avec un autre plugin ou un truc manquant chez nous ? Mais si jamais c’est un bug du plugin et que ça peut être fixé dans une prochaine version ça fera des heureux.
    Merci !

    • chez-moi-ça-marche ©

      ça reste évidemment identique si la lettre sur laquelle tu cliques commence sur la page sur laquelle tu es déjà

      par contre il manquait les ancres, qui étaient dans les URL mais pas dans le HTML, je viens de les rajouter :
      http://zone.spip.org/trac/spip-zone/changeset/95729

    • Toujours pas chez moi.
      Je vais regarder ça d’un peu plus près voir si je trouve un début de piste, conflit de plugins ou autre.
      J’ai eu un espoir en me disant « ben oui les ancres ! » heu. Mais non. Je vais dégainer firebug ;-)

    Répondre à ce message

  • Bonjour,

    Un bug à signaler sur V2.13.0 et qui était déjà sur 2.12.z, Spip 3.1.0

    * Edition | Contacts et organisations
    * Créer une organisation
    * Saisie :
    -  Nom : 1re-SI
    -  Organisation parente : sélection d’une autre organisation
    -  Enregistrer
    * Redirigé vers ecrire/?exec=organisation&id_organisation=0

    donc message :

    Accès interdit
    Vous n’avez pas le droit d’accéder à la page organisation.

    Mais l’organisation est bien créée

    Merci

    Répondre à ce message

  • 1

    Bonjour,

    Est-ce qu’a été implémenté un critère {branche} qui permettrait de lister tous les contacts d’une organisation ET de ses sous-organisations ?

    Merci

    Répondre à ce message

  • 2

    Bonjour,

    merci pour ce plugin.

    Je me demande comment référencer au mieux quand une organisation à de nombreux services.

    Un service n’est pas forcement une personne « physique » à référencer (pas de civilité, prénom, nom, etc).
    Et un service n’est pas non plus une organisation (pas de statut juridique, siren, etc).

    Par contre un service a bien des coordonnées dédiées : adresse, téléphone ou courriel, parfois un contact (personne physique).

    Qu’en pensez vous ?

    • Ben c’est clairement une sous-organisation. T’es pas obligé de remplir tous les champs hein. Il faut activer l’arborescence d’orgas dans la config du plugin.

    • ok merci j’étais passé à côté de cette option dans la config du plugin.

      Donc pour résumé mon cas, chaque service aura une fiche light « Organisation » et la filiation sera gérée avec l’arborescence d’organisation.
      Merci encore !

    Répondre à ce message

  • 2

    Bonjour,

    J’ai lié un auteur à un contact, je place un logo (avatar) sur le contact. Ce logo n’est-il pas reporté sur l’auteur ?? Si non peut-on le faire automatiquement ?

    Merci

    • Non il n’y a rien de prévu pour ça désolé. C’est juste lié entre eux, mais chacun a ses champs (même le nom peut être différent), et pareil pour le logo et aussi pour les documents joints par exemple, chacun ses trucs.

    • Merci pour la précision, et pour le plugin.

    Répondre à ce message

  • 13

    Bonjour et merci pour ce plugin... Comment autoriser les administrateurs restreints à utiliser ce plugin ainsi que celui de coordonnées ?

    • Hello.

      Je plussoie car j’ai la même question et quelque chose doit m’échapper : j’ai beau surcharger les autorisations ou modifier le fichier contacts_autoriser, vider le cache, secouer l’ordi, absolument rien ne change : seuls les admins complets peuvent utiliser les contacts ou les associer à un objet. Je commence à patauger dans le potage.

      Si quelqu’un a trouvé une solution pour permettre aux admins restreints juste que ne serait-ce de pouvoir associer une organisation à un article je suis preneur ;-)

    • Dudfactory

      Bonjour,
      Je suis également preneur si quelqu’un à trouvé une solution pour permettre l’accès de ce plugin à un admin restreint.

    • Je pense avoir trouvé l’astuce :

      Insérer dès la ligne 21, au fichier contacts_autoriser.php les lignes suivantes :

      function autoriser_contactsorganisations_menu_dist($faire, $type, $id, $qui, $opt) {
      	return ($qui['statut'] == '0minirezo');
      }
    • Bah non, si c’est une *personnalisation*, tu ne dois pas modifier le plugin. On ne doit JAMAIS modifier un plugin pour personnaliser (seulement quand ce sont des modifs pour tout le monde).

      Donc pour personnaliser, il faut que tu copies la fonction que tu veux changer, dans un fichier « options », et en supprimant le « _dist » à la fin du nom de la fonction.

      Donc soit dans « config/mes_options.php », soit dans un plugin à toi, donc son fichier « prefixe_options.php ».

      Pareil pour n’importe quelle fonction de SPIP que tu veux personnaliser et qui a un « _dist » à la fin.

    • Bonjour RastaPopoulos... Oui, je ne maîtrise guère la programmation à ce niveau... Merci pour les explications... Quoique ’prefixe_options.php’ ne me parle pas beaucoup... C’est un ovni pour moi.... Je commence seulement à étudier le côté ’plugin fait maison’...

      Un cours élaboré sur ’la création de plugin spip pour les nuls’ serait le bien venu :-)

      Je vais donc essayer d’ajouter ma fonction à mes_options.php.

    • J’ai créé un fichier mes_options.php dans un mon dossier squelette mais la fonction n’est pas appelée... ??... Ai-je oublié un p’tit quelque chose ?

    • C’est marqué juste au-dessus hein :)
      config/mes_options.php

    • Bonjour RastaPopoulos,

      Je galère encore... J’ai bien le bouton ’Contacts & Organisations’ qui apparaît dans le menu edition mais par contre je n’arrive pas à faire apparaître le bouton ’[Ajouter une organisation]’ dans la page ’/ecrire/ ?exec=evenement...’

      En effet, j’ai associer la possibilité d’ajouter des organisations à l’objet ’evenements’...

      En mode administrateur complet, pas de problème, mais en mode administrateur restreint, le bouton ne s’affiche pas ???..... :-/

      J’aimerais vraiment trouver un cours sur la conception d’un plugin de A à Z ou pourquoi pas une description précise de ce que fait ce plugin pour mieux comprendre les différentes fonctions et inclusions... ??....

    • Il s’agit d’une autre autorisation. Il faut donc la surcharger aussi si là encore les restreints doivent y avoir accès.

      Par défaut, pour avoir le droit d’ajouter des liens sur un objet quelconque, c’est défini dans le #FORMULAIRE_EDITER_LIENS générique de SPIP, qui se trouve dans « prive/formulaires/editer_liens.php ».

      Tu as alors cette ligne :

      $editable = ($editable and autoriser('associer'.$table_source, $objet, $id_objet) and autoriser('modifier',$objet,$id_objet));

      Ce qui signifie qu’il faut :

      1. Être autorisé pour : associerorganisations / evenement / 123
      2. Être autorisé pour : modifier / evenement / 123

      Tes admins restreints ont bien le droit de modifier cet événement ?

      Pour l’autorisation « associerorganisations » il ne me semble pas qu’elle soit définie du tout. Et du coup je ne sais pas ce que ça utilise dans ce cas là… (rien ? ou une autre par défaut ? je ne sais pas).

      Essayes d’ajouter une fonction pour tester (et sinon avec ton même test précédent) :

      function autoriser_associerorganisations($faire, $type, $id, $qui, $opt){
          return true;
      }
    • Whouuuaaaa.... Merci mille fois !!... Voici donc ce que j’ai inséré dans le fichier spip/config/mes_options.php dès la ligne 2.

      function autoriser_contactsorganisations_menu($faire, $type, $id, $qui, $opt) {
              return ($qui['statut'] == '0minirezo');
      }
      
      function autoriser_associerorganisations($faire, $type, $id, $qui, $opt){
      	return ($qui['statut'] == '0minirezo');
      }
      
      function autoriser_associerorganisation($faire, $type, $id, $qui, $opt){
      	return ($qui['statut'] == '0minirezo');
      }

      Oui, j’ai aussi eu un petit miracle... Car il faut les deux fonctions associerorganisations et associerorganisation (sans ’s’ pour que cela fonctionne. J’avais essayé avec la première fonction mais comme cela ne fonctionnait pas, je me suis dis essayons en retirant le ’s’ mais j’avais omis d’enlever la première fonction... Et cela a fonctionné ! J’ai essayé ensuite d’enlever l’une ou l’autre et là, ça ne fonctionne pas... Je ne comprend pas pourquoi mais tu vas certainement me l’expliquer :-)

      Encore merci pour ta guidance ! Et si tu entends parler d’une formation en développement de plugins spip en France ou en Belgique, je suis preneur !!

    • Oups, il faut aussi ajouter à spip/config/mes_options.php :

      function autoriser_organisation_modifier($faire, $type, $id, $qui, $opt){
      	return ($qui['statut'] == '0minirezo');
      }
    • Dudfactory

      Bonjour Eric,
      Merci pour ta contribution, j’ai copié les 4 fonctions dans mes_options.php mais sans succès car sur mon site un administrateur restreint ne peut toujours pas utiliser ce plugin. Existe-t-il une étape intermédiaire avant ou après la copie dans le fichier config/mes_options.php ?

    • Bonjour Dudfactory... Désolé pour le temps de réponse, j’étais occupé avec les passage du plugin spip-listes au plugin newsletter... Bref,... en avançant avec le plugin C_O, j’ai ajouté d’autres fonctions au fichier spip/config/mes_options.php dès la ligne 2.

      function autoriser_contactsorganisations_menu($faire, $type, $id, $qui, $opt)
      return ($qui[’statut’] == ’0minirezo’) ;

      function autoriser_organisationcreer($faire, $type, $id, $qui, $opt)
      return ($qui[’statut’] == ’0minirezo’) ;

      function autoriser_associerorganisations($faire, $type, $id, $qui, $opt)
      return ($qui[’statut’] == ’0minirezo’) ;

      function autoriser_associerorganisation($faire, $type, $id, $qui, $opt)
      return ($qui[’statut’] == ’0minirezo’) ;

      function autoriser_organisation_modifier($faire, $type, $id, $qui, $opt)
      return ($qui[’statut’] == ’0minirezo’) ;

      function autoriser_contactcreer($faire, $type, $id, $qui, $opt)
      return ($qui[’statut’] == ’0minirezo’) ;

      function autoriser_associercontacts($faire, $type, $id, $qui, $opt)
      return ($qui[’statut’] == ’0minirezo’) ;

      function autoriser_associerocontact($faire, $type, $id, $qui, $opt)
      return ($qui[’statut’] == ’0minirezo’) ;

      function autoriser_contact_modifier($faire, $type, $id, $qui, $opt)
      return ($qui[’statut’] == ’0minirezo’) ;

    Répondre à ce message

  • 5

    Bonjour,

    Je découvre une erreur lorsque je veux mettre à jour une organisation...

    J’ai simplement ajouté le site internet à une organisation, ensuite je veux ’enregistrer’ et là...

    Je reçois une page blanche contenant : [object Object]

    et dans la barre d’adresse : javascript:if (window.jQuery) jQuery(".entete-formulaire .retour a").followLink();

    • Peut-être qu’une mise à jour s’est mal passée ou pas faite du tout, et qu’il te manque un champ dans la table, ce qui provoque une erreur lors de l’enregistrement ? Tu es allé sur la page d’admin des plugins pour lancer les mises à jour de base, les dernières fois où le plugin a été mis à jour ? Vérifie par exemple si tu as bien le champ pour l’URL dans la table des orgas.

    • J’ai la version 3.0.21 de spip et la Rév. 93274 du 28/11/15 de Contacts & Organisations. L’enregistrement s’effectue mais c’est le problème de la page blanche qui m’ennuie :-/

    • Ça ne répond pas à mes questions précédentes. Si un champ manque dans la table.

    • Oui, désolé, en effet, le champ existe dans la table... C’était sous-entendu dans ma réponse vu que l’enregistrement s’est déroulé correctement ;-)

    • T’as bien testé en ayant aucun autre plugin non-nécessaire ? Il ne faudrait pas qu’il y ait un conflit je ne sais où.

      Ensuite il y a apparemment une erreur durant l’envoi en ajax du formulaire d’édition, il faudrait laisser ouvert le panneau dev de firefox avec les erreurs JS. Et voir ce qui s’affiche.

    Répondre à ce message

  • 4

    Bonjour,

    j’ai installé la version 2.012.0 de ce plugin en spip 3.020.
    Je bute sur l’export des organisations et des contacts tels qu’accessibles à partir de la liste des organisations et de celle des contacts.
    En dépit de ma qualité d’administrateur, je ne parviens pas à obtenir ces exports.
    Je peux par ailleurs supprimer une organisation ou un contact.
    Une subtilité m’a-t-elle échappé ?

    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