source: spip-zone/_plugins_/projets/branches/v0/projet_pipelines.php @ 78524

Last change on this file since 78524 was 78524, checked in by teddy.spip@…, 6 years ago

Suite à r78521, il ne faut oublier tout ce qui va de paire…

  • Property svn:eol-style set to native
File size: 6.1 KB
Line 
1<?php
2/**
3 * Plugin Projet pour SPIP
4 * Eric Lupinacci, Quentin Drouet
5 *
6 * Fichier recensant l'ensemble des pipelines utilisés par le plugin Projet
7 *
8 */
9if (!defined("_ECRIRE_INC_VERSION")) return;
10
11/**
12 * Ajouter le bouton de menu dans le prive pour accéder à la page des projets
13 *
14 * @param unknown $boutons_admin
15 * @return unknown
16 */
17function projets_ajouter_boutons($boutons_admin) {
18        // si on est habilité à voir les projets
19        if (autoriser('voir','projet')) {
20          // on voit le bouton dans la barre "naviguer"
21                $boutons_admin['naviguer']->sousmenu['projets_page']= new Bouton(
22                _DIR_PLUGIN_PROJETS."/prive/images/projets-24.gif",  // icone
23                _T('projets:voir_projets')      // titre
24                );
25        }
26        return $boutons_admin;
27}
28
29/**
30 * Insertion d'un formulaire d'association d'un projet a un objet en colonne droite
31 *
32 * @param Array $flux
33 */
34function projets_affiche_droite($flux){
35        return $flux;
36}
37
38/**
39 * Insertion d'un formulaire d'association d'un projet dans l'affichage de l'objet
40 *
41 * @param Array $flux
42 */
43function projets_affiche_milieu($flux){
44        include_spip('inc/autoriser');
45        $exec = $flux['args']['exec'];
46        switch($exec){
47                case 'articles' :
48                        $id_type= $flux['args']['id_article'];
49                        if(autoriser('modifier','article',$id_type)){
50                                $type = 'article';
51                        }
52                break;
53                case 'naviguer' :
54                        $id_type=$flux['args']['id_rubrique'];
55                        if(autoriser('modifier','rubrique',$id_type)){
56                                $type = 'rubrique';
57                        }
58                break;
59                case 'auteur_infos' :
60                        $id_type=$flux['args']['id_auteur'];
61                        if(autoriser('modifier','auteur',$id_auteur)){
62                                $type = 'auteur';
63                        }
64                break;
65        }
66        if(in_array($type, lire_config('projets/ligatures/objets',array()))){
67                $flux['data'] .= "<div id='pave_associer_projet'>";
68                $flux['data'] .= debut_cadre_enfonce("", true, "", _T('projets:titre_formulaire_associer'));
69                $flux['data'] .= recuperer_fond('prive/contenu/inc-affiche_milieu', array('objet'=>$type,'id_objet'=>$id_type));
70                $flux['data'] .= fin_cadre_enfonce(true);
71                $flux['data'] .= "</div>";
72        }
73        return $flux;
74}
75
76/**
77 * Insertion dans le pipeline accueil informations de l'etat des projets
78 * @param string $flux
79 * @return string $flux
80 */
81function projets_accueil_informations($flux){
82        global $spip_lang_left;
83
84        $q = sql_select("COUNT(*) AS cnt, statut", 'spip_projets', '', 'statut', '','', "COUNT(*)<>0");
85
86        $cpt = array();
87        $cpt2 = array();
88        $defaut = $where ? '0/' : '';
89        while($row = sql_fetch($q)) {
90          $cpt[$row['statut']] = $row['cnt'];
91          $cpt2[$row['statut']] = $defaut;
92        }
93
94        if ($cpt) {
95                if ($where) {
96                        $q = sql_select("COUNT(*) AS cnt, statut", 'spip_projets', $where, "statut");
97                        while($row = sql_fetch($q)) {
98                                $r = $row['statut'];
99                                $cpt2[$r] = intval($row['cnt']) . '/';
100                        }
101                }
102                $res .= afficher_plus(generer_url_ecrire("projets_page",""))."<b>".ucfirst(_T('projets:projets'))."</b>";
103                $res .= "<ul style='margin:0px; padding-$spip_lang_left: 20px; margin-bottom: 5px;'>";
104                if (isset($cpt['prepa'])) $res .= "<li>"._T('texte_statut_en_cours_redaction').": ".$cpt2['prepa'].$cpt['prepa'] . '</li>';
105                if (isset($cpt['prop'])) $res .= "<li>"._T('texte_statut_attente_validation').": ".$cpt2['prop'] .$cpt['prop'] .'</li>';
106                if (isset($cpt['publie'])) $res .= "<li><b>"._T('texte_statut_publies').": ".$cpt2['publie'] .$cpt['publie'] . "</b>" .'</li>';
107                $res .= "</ul>";
108        }
109
110        $flux .= "<div class='verdana1'>" . $res . "</div>";
111        return $flux;
112}
113
114/**
115 * Insertion dans le pipeline accueil gadgets le bouton de creation d'un projet
116 * @param string $gadget
117 * @return string $gadget
118 */
119function projets_accueil_gadgets($gadget){
120
121        include_spip('inc/tickets_autorisations');
122        if (autoriser('creer', 'projet')) {
123                $icone = icone_horizontale(_T('projets:bouton_creer_projet'), parametre_url(generer_url_ecrire('projet_edit','new=oui'),'redirect',self()), chemin('projets-24.gif','prive/images/'), 'creer.gif', false);
124
125                $colonnes = extraire_balises($gadget, 'td');
126                $derniere_colonne = fmod(floor(count($colonnes)/2), 4) == 0 ? true : false;
127                if ($derniere_colonne) {
128                        $gadget .= "<table><tr><td>$icone</td></tr></table>";
129                }
130                else {
131                        $gadget = preg_replace(",</tr></table>$,is", "<td>$icone</td></tr></table>", $gadget);
132                }
133        }
134        return $gadget;
135}
136
137/**
138 * Insertion dans le pipeline infos_tables du plugin Gouverneur
139 * Donne des informations sur l'objet projet utilisable ensuite par d'autres plugins
140 *
141 * @param Array $array L'array de description des objets
142 * @return
143 */
144function projets_gouverneur_infos_tables($array){
145        $array['spip_projets'] = array(
146                                                                'table_objet' => 'projets',
147                                                                'type' => 'projet',
148                                                                'url_voir' => 'projets',
149                                                                'texte_retour' => 'projets:icone_retour_projet',
150                                                                'url_edit' => 'projet_edit',
151                                                                'texte_modifier' => 'projets:icone_modifier_projet',
152                                                                'icone_objet' => 'projets-24.png',
153                                                                'texte_unique' => 'projets:projet',
154                                                                'texte_multiple' => 'projets:projets',
155                                                                // Pour le plugin revisions en 2.1
156                                                                'champs_versionnes' => array('id_parent', 'titre', 'descriptif', 'texte', 'date', 'date_modif', 'statut')
157                                                        );
158        return $array;
159}
160
161function projets_editer_contenu_objet($flux){
162        // recuperer les champs crees par les plugins
163        if (($flux['args']['type'] == 'rubrique') && in_array('rubrique',lire_config('projets/ligatures/objets',array()))) {
164
165                /*
166                 * Récupération de la saisie de projets
167                 */
168                if(intval($flux['args']['id'])){
169                        $contexte['valeur'] = sql_getfetsel('id_projet','spip_projets_liens','id_objet ='.$flux['args']['id'].' AND objet="rubrique"');
170                        spip_log($contexte['valeur']);
171                }
172                $contexte['nom'] = 'id_projet';
173                $contexte['type_saisie'] = 'liste_projets';
174                $contexte['option_intro'] = _T('projets:aucun');
175                $contexte['label'] = _T('projets:label_selecteur_projet');
176
177                $inserer_projet = recuperer_fond('saisies/_base', $contexte);
178
179                $flux['data'] = preg_replace('%(<li class="editer_parent(.*?)</li>)%is', '$1'."\n".$inserer_projet."\n", $flux['data']);
180        }
181
182        return $flux;
183}
184
185function projets_post_edition($flux){
186        if ($flux['args']['table'] == "spip_rubriques") {
187
188                if(_request('id_projet')){
189                        $associer_projet = charger_fonction('associer_projet','action');
190                        $associer_projet(_request('id_projet'),'rubrique',$flux['args']['id_objet'],$type);
191                }
192        }
193
194        return $flux;
195}
196
197?>
Note: See TracBrowser for help on using the repository browser.