source: spip-zone/_plugins_/contacts_et_organisations/contacts_pipelines.php @ 50184

Last change on this file since 50184 was 50184, checked in by real3t@…, 10 years ago

[49766] avait perdu la boite permettant de choisir si un auteur est associé à un contact ou une organisation.
Pas d'Ajax ici parce que le rafraîchissement de la page doit aussi concerner le centre.

Bug : affecter un auteur via cette boite à une organisation est sans aucun effet.

  • Property svn:executable set to *
File size: 9.0 KB
Line 
1<?php
2/**
3 * Plugin Contacts & Organisations pour Spip 2.0
4 * Licence GPL (c) 2009 - 2010 - Ateliers CYM
5 */
6 
7
8/**
9 *
10 * JQuery pour afficher fil d'ariane
11 * du contact ou de l'organisation
12 * sur la vue de l'auteur
13 * le pipeline affiche_hierarchie ne marche pas
14 */
15function contacts_header_prive($flux)
16{
17        $flux .= '<script type="text/javascript">';
18        $flux .= '$(document).ready(function(){';
19        $flux .= 'if ($("#ariane").length>0) {';
20        $flux .= '      $("#page").prepend($("#ariane").html());';
21        $flux .= '}});';
22        $flux .= '</script>';
23
24    return $flux;
25}
26
27/**
28 *
29 * Insertion dans la vue des auteurs
30 * des informations relatives aux contacts et organisations
31 *
32 */
33function contacts_afficher_contenu_objet($flux)
34{
35        if ($flux["args"]["type"] == "auteur") {
36       
37                $id = $flux["args"]["id_objet"];
38                $id_contact = sql_getfetsel('id_contact', 'spip_contacts_liens', array('objet=' . sql_quote('auteur'), 'id_objet=' . intval($id)));
39                $id_organisation = sql_getfetsel('id_organisation', 'spip_organisations_liens', array('objet=' . sql_quote('auteur'), 'id_objet=' . intval($id)));
40
41                if ($id_contact || $id_organisation)
42                {
43                        $infos = '';
44                        $bouton_edit = '';
45                        $self = generer_url_ecrire('auteur_infos', 'id_auteur='.$id);
46
47                        if ($id_contact)
48                        {
49                                // informations du contact
50                                $infos  = recuperer_fond('prive/contenu/contact', array('id_contact' => $id_contact));
51                               
52                                // bouton "Modifier le contact"
53                                if ( autoriser('modifier', 'contact', $id_contact) )
54                                {
55                                        $texte = _T('contacts:contact_editer');
56                                        $lien = parametre_url(generer_url_ecrire('contact_edit', 'id_contact='.$id_contact), 'redirect' , $self);
57                                        $fond = find_in_path('images/contact-24.png');                         
58                                        $bouton_edit = icone_inline($texte, $lien, $fond, '', 'right') . '<br class="nettoyeur" />' ;
59                                }
60                        }
61                       
62                        else if ($id_organisation)
63                        {
64                                // informations de l'organisation
65                                $infos = recuperer_fond('prive/contenu/organisation', array('id_organisation' => $id_organisation));
66                               
67                                // bouton "Modifier l'organisation"
68                                if ( autoriser('modifier', 'organisation', $id_organisation) )
69                                {
70                                        $texte = _T('contacts:organisation_editer');
71                                        $lien = parametre_url(generer_url_ecrire('organisation_edit', 'id_organisation='.$id_organisation), 'redirect' , $self);
72                                        $fond = find_in_path('images/organisation-24.png');                             
73                                        $bouton_edit = icone_inline($texte, $lien, $fond, '', 'right') . '<br class="nettoyeur" />' ;
74                                }
75                        }
76
77                        $flux['data'] = $bouton_edit . $infos . $flux['data'] ;
78
79                } // fin fiche contact ou organisation
80        }
81
82        return $flux;
83}
84
85
86function contacts_boite_infos($flux){
87        /*
88        if ($flux['args']['type'] == 'contact'){
89
90                $id_auteur = sql_getfetsel('id_objet',
91                'spip_contacts_liens',
92                'objet=\'auteur\' AND id_contact=' . intval($flux['args']['id_contact']));
93
94                if ( $id_auteur > 0 )
95                {
96                        $auteur = sql_fetsel("*", "spip_auteurs", "id_auteur=$id_auteur");
97                       
98                        $flux['data']                   .= '<div>toto</div>';                   
99                }
100        }
101       
102        $flux['data']                   =  $flux['data'] ;
103        */
104        return $flux;
105}
106
107/**
108 * Affichage du formulaire de choix Contact/Organisation
109 * dans la colonne de vue d'un auteur
110 * et
111 * Affichage du formulaire de recherche et de sélection d'Organisations
112 * dans la colonne de vue d'une rubrique
113**/
114function contacts_affiche_gauche($flux){
115
116        if ($flux['args']['exec'] == 'auteur_infos'){
117
118                $id = $flux["args"]["id_auteur"];
119                $id_contact = sql_getfetsel('id_contact', 'spip_contacts_liens', array('objet=' . sql_quote('auteur'), 'id_objet=' . intval($id)));
120                $id_organisation = sql_getfetsel('id_organisation', 'spip_organisations_liens', array('objet=' . sql_quote('auteur'), 'id_objet=' . intval($id)));
121
122                if ($id_contact || $id_organisation)
123                {
124                        $self = generer_url_ecrire('auteur_infos', 'id_auteur='.$id);
125
126                        // boîte selection de contacts ou d'organisations liés
127                        $flux['data'] .= recuperer_fond('prive/boite/selecteur_contacts_organisations',
128                                                 array('id_auteur'=>$id), array('ajax'=>true));
129                       
130                        if ($id_contact)
131                        {
132                                // fil d'ariane du contact
133                                $contact = sql_fetsel('nom, prenom', 'spip_contacts', 'id_contact='.$id_contact);
134                                $flux['data'] .= recuperer_fond('prive/boite/ariane_contact', array(
135                                                'nom'                           => $contact['nom'],
136                                                'prenom'                        => $contact['prenom']
137                                        ));
138                        } // fin 'si contact'
139       
140                        else if ($id_organisation)
141                        {
142                                // bouton "Créer un contact"
143                                if ( autoriser('creer', 'contact') )
144                                {
145                                        $texte = _T('contacts:contact_creer');
146                                        $lien = generer_url_ecrire('contact_edit', 'new=oui&id_organisation='.$id_organisation.'&redirect='.$self);
147                                        $fond = find_in_path('images/contact-24.png');                         
148                                        $flux['data'] .= icone($texte, $lien, $fond, '', 'right') ;
149                                }
150       
151                                // fil d'ariane de l'organisation
152                                $organisation = sql_fetsel('nom, id_parent', 'spip_organisations', 'id_organisation='.$id_organisation);
153                                $flux['data'] .= recuperer_fond('prive/boite/ariane_organisation', array(
154                                                'nom'                           => $organisation['nom'],
155                                                'id_parent'                     => $organisation['id_parent']
156                                        ));
157                        }// fin 'si organisation'
158                } else {
159                        $flux['data'] .= recuperer_fond('prive/boite/selecteur_contacts_organisations', array( 
160                                                                'id_auteur'=>$flux['args']['id_auteur'] 
161                                                                )); 
162                }
163        }
164
165        if ($flux['args']['exec'] == 'naviguer' && $flux['args']['id_rubrique']){
166                $flux['data'] .= recuperer_fond('prive/boite/selecteur_organisations_de_rubrique', array(
167                        'id_rubrique'=>$flux['args']['id_rubrique']
168                ));
169        }
170
171        return $flux;
172}
173
174
175/**
176 *
177 * Insertion dans la vue des auteurs
178 * des informations relatives aux contacts et organisations
179 * et
180 * Insertion dans la vue des rubriques
181 * des informations relatives aux organisations
182 */
183function contacts_affiche_milieu($flux){
184        if ($flux['args']['exec'] == 'auteur_infos')
185        {
186                $id = $flux["args"]["id_auteur"];
187                $id_contact = sql_getfetsel('id_contact', 'spip_contacts_liens', array('objet=' . sql_quote('auteur'), 'id_objet=' . intval($id)));
188                $id_organisation = sql_getfetsel('id_organisation', 'spip_organisations_liens', array('objet=' . sql_quote('auteur'), 'id_objet=' . intval($id)));
189
190                if ( $id_contact || $id_organisation )
191                {
192                        $ajout = '';
193                        $porfolio_documents = '';
194                        $self = generer_url_ecrire('auteur_infos', 'id_auteur='.$id);
195                       
196                        if ($id_contact)
197                        {
198                                // liste des organisations auxquelles est lié le contact
199                                $ajout  = recuperer_fond('prive/liste/linked_organisations', 
200                                                                array(
201                                                                        'id_contact'    => $id_contact,
202                                                                        'titre'                 => _T('contacts:info_organisations_appartenance')
203                                                                ),
204                                                                array('ajax'            => true));
205                                       
206                        }
207       
208       
209                        else if ($id_organisation)
210                        {
211                                // liste des contacts liés à l'organisation
212                                $ajout  = recuperer_fond('prive/liste/linked_contacts', 
213                                                                array(
214                                                                        'id_organisation'       => $id_organisation,
215                                                                        'titre'                 => _T('contacts:info_contacts_organisation')
216                                                                ),
217                                                                array('ajax'            => true));
218                               
219                                // bouton "Créer une organisation fille"
220                                if ( autoriser('creer', 'organisation') )
221                                {
222                                        $texte = _T('contacts:organisation_creer_fille');
223                                        $lien = generer_url_ecrire('organisation_edit', 'new=oui&id_parent='.$id_organisation.'&redirect='.$self);
224                                        $fond = find_in_path('images/organisation-24.png');                             
225                                        $ajout = icone_inline($texte, $lien, $fond, '', 'right') . '<br class="nettoyeur">'. $ajout ;
226                                }
227       
228                        }
229
230                        // portfolio documents
231                        $porfolio_documents = recuperer_fond('prive/contenu/portfolio_document', 
232                                                        array(),
233                                                        array('ajax'            => true));
234                                                       
235                        $flux['data'] = $ajout . $flux['data'] . $porfolio_documents  ;         
236                }// fin page contact ou organisation
237        } 
238               
239        if ($flux['args']['exec'] == 'naviguer' && $flux['args']['id_rubrique'])
240        {
241                $flux['data'] .= recuperer_fond('prive/liste/organisations_liees_rubrique', array(
242                        'id_rubrique' => $flux['args']['id_rubrique'],
243                        'titre' => _T('contacts:info_organisations_appartenance')
244                ), array('ajax'=>true));
245        } // fin page rubrique
246
247        return $flux;
248}
249
250
251/**
252 * Prendre en compte les tables dans la recherche d'éléments.
253 *
254 * @param
255 * @return
256**/
257function contacts_rechercher_liste_des_champs($tables){
258       
259        // ajouter la recherche sur contact
260        $tables['contact']['id_contact'] = 12;
261        $tables['contact']['nom'] = 4;
262        $tables['contact']['prenom'] = 2;
263       
264        // ajouter la recherche sur organisations
265        $tables['organisation']['id_organisation'] = 12;
266        $tables['organisation']['nom'] = 4;
267
268        return $tables;
269}
270
271
272/**
273 * Autoriser les champs extras sur les objets
274 * Contacts et Organisations
275**/
276function contacts_objets_extensibles($objets){
277                return array_merge($objets, array(
278                        'contact' => _T('contacts:contacts'),
279                        'organisation' => _T('contacts:organisations'),
280                ));
281}
282
283/**
284 * Ajoute une feuille de style pour la v-card
285 * Peut être surchargé ensuite
286**/
287function contacts_insert_head($flux){
288
289        $flux .= '<!-- insertion de la css contacts--><link rel="stylesheet" type="text/css" href="'.find_in_path('contacts.css').'" media="all" />';
290
291        return $flux;
292}
293
294
295?>
Note: See TracBrowser for help on using the repository browser.