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

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

Retour correct depuis les pages auteurs

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