source: spip-zone/_plugins_/Association/Associaspip/inc/navigation_modules.php @ 66954

Last change on this file since 66954 was 66954, checked in by gildas.cotomale@…, 7 years ago

hot fixes r64577 and r66942

File size: 9.5 KB
Line 
1<?php
2/***************************************************************************\
3 *  Associaspip, extension de SPIP pour gestion d'associations
4 *
5 * @copyright Copyright (c) 2007 Bernard Blazin & Francois de Montlivault
6 * @copyright Copyright (c) 2010 Emmanuel Saint-James
7 *
8 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
9\***************************************************************************/
10
11
12include_spip('inc/presentation'); // utilise par "onglet1_association" (pour "onglet") puis aussi dans les pages appelantes
13include_spip('inc/autoriser'); // utilise par "onglet1_association" (pour le test "autoriser") puis aussi dans les pages appelantes
14
15/**
16 * Afficher le titre de la/le page/module courante puis (en dessous) les onglets
17 * des differents modules actives dans la configuration
18 *
19 * @param string $titre
20 *   Chaine de langue du titre de la page
21 * @param string $top_exec
22 *   Nom du fichier "exec" de la page principale du module
23 * @param bool $INSERT_HEAD
24 *   Indique s'il s'agit d'une page exec classique en PHP (vrai, par defaut) ou
25 *   en HTML (faux, ) a compiler par SPIP (cas des balises) ou PHP gere par le developpeur
26 * @return void
27 */
28function association_navigation_onglets($titre='', $top_exec='', $INSERT_HEAD=TRUE) {
29        $modules = pipeline('modules_asso', array(
30                'association' => array('asso:menu2_titre_association', 'assoc_qui.png', array('voir_profil', 'association'), ), // accueil
31                'adherents' => array('asso:menu2_titre_gestion_membres', 'annonce.gif', array('voir_membres', 'association'), ), // gestion des membres
32                'dons' => array('asso:menu2_titre_gestion_dons', 'dons-24.gif', array('associer', 'dons'), ), // gestion des dons
33                'ventes' => array('asso:menu2_titre_ventes_asso', 'ventes.gif', array('associer', 'ventes'), ), // gestion des ventes
34                'activites' => array('asso:menu2_titre_gestion_activites', 'activites.gif', array('associer', 'activites'), ), // gestion des activites
35                'ressources' => array('asso:menu2_titre_gestion_prets', 'pret-24.gif', array('associer', 'ressources'), ), // gestion des ressources
36                'comptes' => array('asso:menu2_titre_livres_comptes', 'finances-24.png', array('associer', 'comptes'), ), // compta
37        )); // Liste (en fait tableau PHP) des modules geres par le plugin, sous la forme : 'exec' => array("chaine:langue", "chemin/icone", array("autorisation", ...), )
38// Recuperation de la liste des ongles
39        $res = '';
40        foreach ($modules as $exec=>$params) {
41                // autorisation d'acces au module
42                if ( is_array($params[2]) && count($params[2]) ) { // autorisation complete/fine
43                        $acces = call_user_func_array('autoriser', $params[2]);
44                } elseif ( $params[2] ) { // autorisation general/globale
45                        $acces = autoriser($params[2]);
46                } else // pas d'autorisation definie = autorise pour tous
47                        $acces = TRUE;
48                // etat d'activation du module en configuration
49                if ( in_array($exec, array('association', 'adherents')) )
50                        $actif = TRUE;
51                else
52                        $actif = $GLOBALS['association_metas'][$exec=='ressources'?'prets':$exec];
53                // generation de l'onglet
54                if ( $actif && $acces ) {
55                        $chemin = _DIR_PLUGIN_ASSOCIATION_ICONES.$params[1]; // icone Associaspip
56                        if ( !file_exists($chemin) )
57                                $chemin = find_in_path($params[1]); // icone alternative
58                        $res .= onglet(_T($params[0]), generer_url_ecrire($exec), $top_exec, $exec, $chemin); // http://doc.spip.org/onglet
59                }
60        }
61// Affichage
62        if ($INSERT_HEAD) { // mettre ''|0|FALSE|NULL dans la balise (appel dans une page HTML-SPIPee donc et non PHP) pour eviter l'erreur de "Double occurrence de INSERT_HEAD"
63                $commencer_page = charger_fonction('commencer_page', 'inc');
64                echo $commencer_page();
65        }
66        echo '<div class="table_page">';
67        echo '<h1 class="asso_titre">', $titre?association_langue($titre):_T('asso:gestion_de_lassoc', array('nom'=>$GLOBALS['association_metas']['nom']) ), '</h1>'; // Nom du module. cf:  <http://programmer.spip.org/Contenu-d-un-fichier-exec>
68        if ($res)
69                echo '<div class="bandeau_actions barre_onglet clearfix">', debut_onglet(), $res, fin_onglet(), '</div>'; // Onglets actifs
70        echo '</div>';
71        if ($INSERT_HEAD) { // Tant qu'a faire, on s'embete pas a le retaper dans toutes les pages...
72                echo debut_gauche('',TRUE);
73                echo debut_boite_info(TRUE);
74        }
75}
76
77/**
78 * @see association_navigation_onglets
79 */
80function onglets_association($titre='', $top_exec='', $INSERT_HEAD=TRUE) {
81        association_navigation_onglets($titre, $top_exec, $INSERT_HEAD);
82}
83
84/**
85 * Bloc de raccourci(s) constitue d'au moins du bouton retour
86 *
87 * @param string|array $adresse_retour
88 *   - Juste le nom du fichier "exec" du bouton retour
89 *     Ou une chaine vide pour generere automatiquement l'URL de la page precedente
90 *   - Un tableau comportant le nom du fichier "exec" et une chaine de parametres
91 *     passes a l'URL ;
92 *     Ou un tableau vide pour ne pas generer de bouton retour (quand on est dans
93 *     la page principale du module)
94 * @param array $raccourcis
95 *   Tableau des raccourcis definis chacun sous la forme :
96 *   'titre' => array('icone', array('url_ecrire', 'parametres_url'), array('permission' ...), ),
97 * @param bool $FIN_BOITE_INFO
98 *   Indique s'il faut generer (vrai, par defaut) ou pas la fin du bloc infos
99 *   qui doit alors etre obligatoirement celui qui precede !
100 * @return void
101 */
102function association_navigation_raccourcis($adresse_retour='',  $raccourcis=array(), $FIN_BOITE_INFO=TRUE) {
103        $res = ''; // initialisation
104        if ( is_array($raccourcis) AND count($raccourcis) ) {
105                foreach($raccourcis as $raccourci_titre => $params) {
106                        // autorisation d'acces au module
107                        if ( is_array($params[2]) && count($params[2]) ) { // autorisation a calculer
108                                $acces = call_user_func_array('autoriser', $params[2]);
109                        } elseif ( is_scalar($params[2]) ) { // autorisation deja calculee (chaine ou entier ou booleen, evalue en vrai/faux...)
110                                $acces = autoriser($params[2]);
111                        } else // pas d'autorisation definie = autorise pour tous
112                                $acces = TRUE;
113                        // generation du raccourci
114                        if ( $acces )
115                                $res .= icone1_association($raccourci_titre,  (is_array($params[1])?generer_url_ecrire($params[1][0],$params[1][1]):generer_url_ecrire($params[1])), $params[0]);
116                }
117        }
118        if ( is_array($adresse_retour) ) { // tableau : url_exec, parametres_exec
119                if ( count($adresse_retour) )
120                        $res .= icone1_association('asso:bouton_retour',  generer_url_ecrire($adresse_retour[0],$adresse_retour[1]), 'retour-24.png');
121        } else { // chaine de caractere : uri_complet
122                $res .= icone1_association('asso:bouton_retour', (($adresse_retour=='')?str_replace('&', '&amp;', $_SERVER['HTTP_REFERER']):generer_url_ecrire($adresse_retour)), 'retour-24.png');
123        }
124        if ($FIN_BOITE_INFO) {
125                echo association_date_du_jour();
126                echo fin_boite_info(TRUE);
127        }
128        echo bloc_des_raccourcis($res);
129}
130
131/**
132 * @see association_navigation_raccourcis
133 */
134function raccourcis_association($adresse_retour='',  $raccourcis=array(), $PrefixeLangue='asso', $FIN_BOITE_INFO=TRUE) {
135        association_navigation_raccourcis($adresse_retour,  $raccourcis, $PrefixeLangue, $FIN_BOITE_INFO);
136}
137
138/**
139 * Dessin d'un raccourci du bloc des raccourcis
140 *
141 * @param string $texte
142 *   Libelle du bouton
143 * @param string $lien
144 *   URL vers lequel revoie le bouton
145 * @param string $image
146 *   Icone du bouton (place devant le libelle)
147 * @return string
148 *   HTML du raccourci (icone+texte+lien)
149 */
150function icone1_association($texte, $lien, $image) {
151        $chemin = _DIR_PLUGIN_ASSOCIATION_ICONES.$image; // icone Associaspip
152        if ( !file_exists($chemin) )
153                $chemin = find_in_path($image); // icone alternative
154        return icone_horizontale(association_langue($texte), $lien, $chemin, 'rien.gif', FALSE); // http://doc.spip.org/@icone_horizontale
155}
156
157/**
158 * Finition propre des pages privee du plugin
159 *
160 * @param bool $FIN_CADRE_RELIEF
161 *   Indique s'il faut (vrai, par defaut) rajouter ou pas (faux) "fin_cadre_relief"
162 * @return void
163 * @note
164 *   Cette fonction remplace et personnalise le couplet final :
165 *   echo fin_gauche(), fin_page();
166 *   http://programmer.spip.org/Contenu-d-un-fichier-exec
167 */
168function fin_page_association($FIN_CADRE_RELIEF=TRUE) {
169        $copyright = fin_page();
170        $copyright = str_replace("<div class='table_page'>", "<div class='table_page contenu_nom_site'>", $copyright); // Pour eliminer le copyright a l'impression
171        echo ($FIN_CADRE_RELIEF ? fin_cadre_relief() : '') . fin_gauche() . $copyright;
172}
173
174/**
175 * Cadre en relief debutant la colonne centrale/principale essentiellement
176 *
177 * @param string $icone
178 *   Icone associe a la page, souvent celui du module.
179 * @param string $titre
180 *   Chaine de langue du titre
181 * @param bool $DEBUT_DROITE
182 *   Indique s'il faut ajouter (vrai, par defaut) ou pas "debut_droite()" avant
183 * @return void
184 */
185function debut_cadre_association($icone, $titre, $DEBUT_DROITE=TRUE) {
186        if ($DEBUT_DROITE)
187                echo debut_droite('',TRUE);
188        if ( is_array($T_args) )
189                array_unshift($T_args, $titre);
190        $chemin = _DIR_PLUGIN_ASSOCIATION_ICONES.$icone; // icone Associaspip
191        if ( !file_exists($chemin) )
192                $chemin = find_in_path($icone); // icone alternative
193        debut_cadre_relief($chemin, FALSE, '', association_langue($titre) );
194}
195
196/**
197 * Bloc (tableau en ligne) d'affinage (filtrage) des resultats dans les pages principales... (ici il s'agit de la navigation au sein des donnees tabulaires --un grand listing-- d'un module...)
198 *
199 * @see association_bloc_filtres
200 * @note
201 *   Ici il s'agit d'un vrai formulaire qui influe sur les donnees affichees
202 *   et non sur la fonctionnalite en cours (onglet), contrairement aux apparences
203 *   http://comments.gmane.org/gmane.comp.web.spip.devel/61824
204 */
205function filtres_association($liste_filtres, $exec='', $supplements='', $td=TRUE) {
206        echo association_bloc_filtres($liste_filtres, $exec, $supplements, $td);
207}
208
209?>
Note: See TracBrowser for help on using the repository browser.