Subversion Repositories Applications.papyrus

Rev

Rev 422 | Rev 754 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
7 jpm 1
<?php
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */
409 ddelon 3
// Copyright (C) 1999-2004 Tela Botanica (accueil@tela-botanica.org)
4
//
5
// Ce logiciel est un programme informatique servant à gérer du contenu et des
6
// applications web.
7
 
8
// Ce logiciel est régi par la licence CeCILL soumise au droit français et
9
// respectant les principes de diffusion des logiciels libres. Vous pouvez
10
// utiliser, modifier et/ou redistribuer ce programme sous les conditions
11
// de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
12
// sur le site "http://www.cecill.info".
13
 
14
// En contrepartie de l'accessibilité au code source et des droits de copie,
15
// de modification et de redistribution accordés par cette licence, il n'est
16
// offert aux utilisateurs qu'une garantie limitée.  Pour les mêmes raisons,
17
// seule une responsabilité restreinte pèse sur l'auteur du programme,  le
18
// titulaire des droits patrimoniaux et les concédants successifs.
19
 
20
// A cet égard  l'attention de l'utilisateur est attirée sur les risques
21
// associés au chargement,  à l'utilisation,  à la modification et/ou au
22
// développement et à la reproduction du logiciel par l'utilisateur étant
23
// donné sa spécificité de logiciel libre, qui peut le rendre complexe à
24
// manipuler et qui le réserve donc à des développeurs et des professionnels
25
// avertis possédant  des  connaissances  informatiques approfondies.  Les
26
// utilisateurs sont donc invités à charger  et  tester  l'adéquation  du
27
// logiciel à leurs besoins dans des conditions permettant d'assurer la
28
// sécurité de leurs systèmes et ou de leurs données et, plus généralement,
29
// à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.
30
 
31
// Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
32
// pris connaissance de la licence CeCILL, et que vous en avez accepté les
33
// termes.
34
// ----
463 florian 35
// CVS : $Id: admin_menu.php,v 1.18 2005-09-23 15:27:17 florian Exp $
7 jpm 36
/**
37
* Application gérant les menus de Papyrus
38
*
39
* Cette application permet de gérer les menus classiques, les menus communs
40
* et les liaison d'une application à un menu.
41
*
25 jpm 42
*@package Admin_menu
7 jpm 43
//Auteur original :
285 jpm 44
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
7 jpm 45
//Autres auteurs :
46
*@author        Alexandre GRANIER <alexandre@tela-botanica.org>
285 jpm 47
*@author        Laurent COUDOUNEAU <lc@gsite.org>
7 jpm 48
*@copyright     Tela-Botanica 2000-2004
463 florian 49
*@version       $Revision: 1.18 $ $Date: 2005-09-23 15:27:17 $
7 jpm 50
// +------------------------------------------------------------------------------------------------------+
51
*/
52
 
53
// +------------------------------------------------------------------------------------------------------+
54
// |                                            ENTÊTE du PROGRAMME                                       |
55
// +------------------------------------------------------------------------------------------------------+
56
/** Inclusion du fichier de configuration de cette application.*/
57
require_once GEN_CHEMIN_PAP.'applications/admin_menu/configuration/adme_configuration.inc.php';
58
 
163 jpm 59
//Utilisation de la bibliothèque PEAR NET_URL
60
 
7 jpm 61
/** Inclusion de la bibliothèque PEAR de conception de formulaire.*/
62
require_once ADME_CHEMIN_BIBLIOTHEQUE_PEAR.'HTML/QuickForm.php';
56 jpm 63
require_once ADME_CHEMIN_BIBLIOTHEQUE_PEAR.'HTML/QuickForm/select.php';
7 jpm 64
 
65
/** Inclusion de l'API de fonctions gérant les erreurs sql.*/
276 jpm 66
require_once ADME_CHEMIN_BIBLIOTHEQUE_API.'debogage/BOG_sql.fonct.php';
7 jpm 67
 
68
/** Inclusion des fonctions de manipulation du sql.
69
* Permet la récupération d'un nouvel identifiant d'une table.*/
276 jpm 70
require_once ADME_CHEMIN_BIBLIOTHEQUE_API.'sql/SQL_manipulation.fonct.php';
7 jpm 71
 
72
/** <BR> Inclusion de la bibliothèque de fonctions concernant les tables "gen_site..." de Papyrus.*/
73
require_once ADME_CHEMIN_BIBLIOTHEQUE_GEN.'pap_site.fonct.php';
74
 
75
/** <BR> Inclusion de la bibliothèque de fonctions concernant les tables "gen_menu..." de Papyrus.*/
76
require_once ADME_CHEMIN_BIBLIOTHEQUE_GEN.'pap_menu.fonct.php';
77
 
142 jpm 78
/** <BR> Inclusion de la bibliothèque de fonctions concernant les tables "gen_applications..." de Papyrus.*/
79
require_once ADME_CHEMIN_BIBLIOTHEQUE_GEN.'pap_application.fonct.php';
80
 
81
/** <BR> Inclusion de la bibliothèque de fonctions concernant l'affichage commun.*/
82
require_once ADME_CHEMIN_BIBLIOTHEQUE_ADME.'adme_general.fonct.php';//ok
83
 
7 jpm 84
/** <BR> Inclusion de la bibliothèque de fonctions concernant la gestion des menus classiques.*/
85
require_once ADME_CHEMIN_BIBLIOTHEQUE_ADME.'adme_menu_classique.fonct.php';//ok
86
 
87
/** <BR> Inclusion de la bibliothèque de fonctions concernant la gestion des menus communs.*/
88
require_once ADME_CHEMIN_BIBLIOTHEQUE_ADME.'adme_menu_commun.fonct.php';//ok
89
 
90
/** <BR> Inclusion de la bibliothèque de fonctions concernant la gestion de la rédaction de contenu.*/
142 jpm 91
//require_once ADME_CHEMIN_BIBLIOTHEQUE_ADME.'adme_contenu.fonct.php';//ok
7 jpm 92
 
142 jpm 93
// Inclusion des fichiers de traduction de l'appli ADME dePapyrus
94
if (file_exists(ADME_CHEMIN_LANGUE.'adme_langue_'.$GLOBALS['_GEN_commun']['i18n'].'.inc.php')) {
95
    /** Inclusion du fichier de traduction suite à la transaction avec le navigateur.*/
96
    require_once ADME_CHEMIN_LANGUE.'adme_langue_'.$GLOBALS['_GEN_commun']['i18n'].'.inc.php';
97
} else {
98
    /** Inclusion du fichier de traduction par défaut.*/
99
    require_once ADME_CHEMIN_LANGUE.'adme_langue_'.ADME_I18N_DEFAUT.'.inc.php';
100
}
101
 
102
// Stockage des styles de l'application
103
GEN_stockerStyleExterne('adme_standard', ADME_CHEMIN_STYLE.'adme_standard.css');
104
 
7 jpm 105
// +------------------------------------------------------------------------------------------------------+
106
// |                                            CORPS du PROGRAMME                                        |
107
// +------------------------------------------------------------------------------------------------------+
108
 
109
function afficherContenuCorps()
110
{
142 jpm 111
    //-------------------------------------------------------------------------------------------------------------------
112
    // Initialisation des variables
113
    $sortie_xhtml = '';
114
    $objet_pear_auth = $GLOBALS['_GEN_commun']['pear_auth'];
115
    $objet_pear_db = $GLOBALS['_GEN_commun']['pear_db'];
116
    $objet_pear_url = $GLOBALS['_GEN_commun']['url'];
117
    $url_site = $GLOBALS['_GEN_commun']['url_site'];
463 florian 118
    if (isset($GLOBALS['_GEN_commun']['url_menu'])) {
119
	    $url_menu = $GLOBALS['_GEN_commun']['url_menu'];
120
    }
142 jpm 121
    $url_i18n = $GLOBALS['_GEN_commun']['url_i18n'];
122
    if (isset($_POST['adme_site_id'])) {
123
        $_GET['adme_site_id'] = $_POST['adme_site_id'];
7 jpm 124
    } else {
142 jpm 125
        $_GET['adme_site_id'] = (!isset($_GET['adme_site_id'])) ? 0 : $_GET['adme_site_id'];
7 jpm 126
    }
142 jpm 127
    $_GET['adme_menu_id'] = (!isset($_GET['adme_menu_id'])) ? 0 : $_GET['adme_menu_id'];
128
    $_GET['adme_action'] = (!isset($_GET['adme_action'])) ? '' : $_GET['adme_action'];
7 jpm 129
 
142 jpm 130
    //-------------------------------------------------------------------------------------------------------------------
7 jpm 131
    // Authentification
142 jpm 132
    if ($objet_pear_auth->getAuth()) {
133
        //---------------------------------------------------------------------------------------------------------------
134
        // GESTION DES MENUS CLASSIQUES
7 jpm 135
 
142 jpm 136
        // Ajouter un menu classique
150 jpm 137
        if (isset($_GET['adme_action']) && $_GET['adme_action'] == ADME_LG_ACTION_CLASSIQUE_AJOUTER) {
142 jpm 138
            $message = ADME_ajouterMenuClassique($objet_pear_db, $objet_pear_auth, $_GET['adme_site_id'], $_GET['adme_menu_id']);
7 jpm 139
        }
140
 
141
        // Formulaire de mise à jour du menu
150 jpm 142
        if (isset($_GET['adme_action']) && $_GET['adme_action'] == ADME_LG_ACTION_CLASSIQUE_MODIFIER) {
142 jpm 143
            $sortie_xhtml .= ADME_afficherFormMenuClassique($objet_pear_db, $objet_pear_url, $_GET['adme_site_id'], $_GET['adme_menu_id'], $_POST);
144
            return $sortie_xhtml;
7 jpm 145
        }
150 jpm 146
        if (isset($_POST[ADME_LG_ACTION_CLASSIQUE_VERIFIER])) {
142 jpm 147
            // Nous cherchons à enregistrer une modification de menu
148
            $message = ADME_validerFormAjouterMenuClassique($objet_pear_db, $_POST);
149
            if (!empty($message)) {
150
                // Les données ne sont pas valide. Nous retournons le formulaires avec les messages d'erreurs.
150 jpm 151
                $sortie_xhtml .= $message;
142 jpm 152
                $sortie_xhtml .= ADME_afficherFormMenuClassique($objet_pear_db, $objet_pear_url, $_GET['adme_menu_id'], $_POST);
150 jpm 153
                return $sortie_xhtml;
142 jpm 154
            } else {
155
                // Les données sont valide. Nous les enregistrons et retournons au formulaire de départ.
156
                $message = ADME_modifierMenuClassique($objet_pear_db, $objet_pear_auth, $_GET['adme_menu_id'], $_POST);
157
            }
7 jpm 158
        }
159
 
160
        // Déplacer le menu vers le haut
150 jpm 161
        if (isset($_GET['adme_action']) && $_GET['adme_action'] == ADME_LG_ACTION_CLASSIQUE_MONTER) {
142 jpm 162
            ADME_deplacerMenuClassique($objet_pear_db, $_GET['adme_site_id'], $_GET['adme_menu_id'], true);
7 jpm 163
        }
164
 
165
        // Déplacer le menu vers le bas
150 jpm 166
        if (isset($_GET['adme_action']) && $_GET['adme_action'] == ADME_LG_ACTION_CLASSIQUE_DESCENDRE) {
142 jpm 167
            ADME_deplacerMenuClassique($objet_pear_db, $_GET['adme_site_id'], $_GET['adme_menu_id'], false);
7 jpm 168
        }
169
 
409 ddelon 170
        // Déplacer le menu vers la gauche (diminuer d'un niveau)
171
        if (isset($_GET['adme_action']) && $_GET['adme_action'] == ADME_LG_ACTION_CLASSIQUE_DIMINUER) {
172
            ADME_indenterMenuClassique($objet_pear_db, $_GET['adme_site_id'], $_GET['adme_menu_id'], true);
173
        }
174
 
175
        // Déplacer le menu vers la droite (augmenter d'un niveau)
176
        if (isset($_GET['adme_action']) && $_GET['adme_action'] == ADME_LG_ACTION_CLASSIQUE_AUGMENTER) {
177
            ADME_indenterMenuClassique($objet_pear_db, $_GET['adme_site_id'], $_GET['adme_menu_id'], false);
178
        }
179
 
142 jpm 180
        // Supprimer le menu
150 jpm 181
        if (isset($_GET['adme_action']) && $_GET['adme_action'] == ADME_LG_ACTION_CLASSIQUE_SUPPRIMER) {
142 jpm 182
            // Récupération du menu de remplacement pour éviter de fermer l'arborescence
183
            if (GEN_donnerDernierFreres($_GET['adme_menu_id']) == false) {
184
                $adme_menu_id_remplacement = GEN_lireIdentifiantMenuPere($_GET['adme_menu_id']);;
185
            } else {
186
                $adme_menu_id_remplacement = GEN_donnerDernierFreres($_GET['adme_menu_id']);
187
            }
188
            // Suppression du menu classique
155 jpm 189
            $message = ADME_supprimerMenuClassique($objet_pear_db, $_GET['adme_site_id'], $_GET['adme_menu_id']);
142 jpm 190
            // Remplacement de l'id du menu courant par le remplaçant.
191
            $_GET['adme_menu_id'] = $adme_menu_id_remplacement;
7 jpm 192
        }
193
 
142 jpm 194
        //---------------------------------------------------------------------------------------------------------------
195
        // GESTION DES MENUS COMMUNS
7 jpm 196
 
197
        // Ajout un menu commun
150 jpm 198
        if (isset($_GET['adme_action']) && $_GET['adme_action'] == ADME_LG_ACTION_COMMUN_AJOUTER) {
142 jpm 199
            $message = ADME_ajouterMenuCommun($objet_pear_db, $objet_pear_auth, $_GET['adme_site_id'], $_GET['adme_menu_id']);
7 jpm 200
        }
201
 
142 jpm 202
        // Formulaire de mise à jour du menu commun.
150 jpm 203
        if (isset($_GET['adme_action']) && $_GET['adme_action'] == ADME_LG_ACTION_COMMUN_MODIFIER) {
142 jpm 204
            $sortie_xhtml .= ADME_afficherFormMenuCommun($objet_pear_db, $objet_pear_url, $_GET['adme_site_id'], $_GET['adme_menu_id'], $_POST);
205
            return $sortie_xhtml;
7 jpm 206
        }
150 jpm 207
        if (isset($_POST[ADME_LG_ACTION_COMMUN_VERIFIER])) {
142 jpm 208
            // Nous cherchons à enregistrer une modification de menu
209
            $message = ADME_validerFormAjouterMenuCommun($objet_pear_db, $_POST);
210
            if (!empty($message)) {
211
                // Les données ne sont pas valide. Nous retournons le formulaires avec les messages d'erreurs.
150 jpm 212
                $sortie_xhtml .= $message;
142 jpm 213
                $sortie_xhtml .= ADME_afficherFormMenuCommun($objet_pear_db, $objet_pear_url, $_GET['adme_site_id'], $_GET['adme_menu_id'], $_POST);
150 jpm 214
                return $sortie_xhtml;
142 jpm 215
            } else {
216
                // Les données sont valide. Nous les enregistrons et retournons au formulaire de départ.
217
                $message = ADME_modifierMenuCommun($objet_pear_db, $objet_pear_auth, $_GET['adme_menu_id'], $_POST);
218
            }
7 jpm 219
        }
220
 
221
        // Déplace vers le haut de la hiérarchie un menu commun
150 jpm 222
        if (isset($_GET['adme_action']) && $_GET['adme_action'] == ADME_LG_ACTION_COMMUN_MONTER) {
142 jpm 223
            ADME_deplacerMenuCommun($objet_pear_db, $_GET['adme_site_id'], $_GET['adme_menu_id'], true);
7 jpm 224
        }
225
 
226
        // Déplace vers le bas de la hiérarchie un menu commun
150 jpm 227
        if (isset($_GET['adme_action']) && $_GET['adme_action'] == ADME_LG_ACTION_COMMUN_DESCENDRE) {
142 jpm 228
            ADME_deplacerMenuCommun($objet_pear_db, $_GET['adme_site_id'], $_GET['adme_menu_id'], false);
7 jpm 229
        }
422 ddelon 230
 
231
        // Déplacer le menu vers la gauche (diminuer d'un niveau)
232
        if (isset($_GET['adme_action']) && $_GET['adme_action'] == ADME_LG_ACTION_COMMUN_DIMINUER) {
233
            ADME_indenterMenuCommun($objet_pear_db, $_GET['adme_site_id'], $_GET['adme_menu_id'], true);
234
        }
7 jpm 235
 
422 ddelon 236
        // Déplacer le menu vers la droite (augmenter d'un niveau)
237
        if (isset($_GET['adme_action']) && $_GET['adme_action'] == ADME_LG_ACTION_COMMUN_AUGMENTER) {
238
            ADME_indenterMenuCommun($objet_pear_db, $_GET['adme_site_id'], $_GET['adme_menu_id'], false);
239
        }
240
 
7 jpm 241
        // Supprime définitivement un menu commun
150 jpm 242
        if (isset($_GET['adme_action']) && $_GET['adme_action'] == ADME_LG_ACTION_COMMUN_SUPPRIMER) {
142 jpm 243
            // Récupération du menu de remplacement pour éviter de fermer l'arborescence
244
            if (GEN_donnerDernierFreres($_GET['adme_menu_id']) == false) {
245
                $adme_menu_id_remplacement = GEN_lireIdentifiantMenuPere($_GET['adme_menu_id']);;
246
            } else {
247
                $adme_menu_id_remplacement = GEN_donnerDernierFreres($_GET['adme_menu_id']);
248
            }
249
            // Suppression du menu commun
250
            ADME_supprimerMenuCommun($objet_pear_db, $_GET['adme_menu_id']);
251
            // Remplacement de l'id du menu courant par le remplaçant.
252
            $_GET['adme_menu_id'] = $adme_menu_id_remplacement;
7 jpm 253
        }
254
 
142 jpm 255
        //---------------------------------------------------------------------------------------------------------------
256
        // GESTION DES INTERFACES D'ADMINISTRATION
7 jpm 257
 
142 jpm 258
        // Appel de l'application d'administration
148 jpm 259
        if (isset($_GET['adme_action']) && $_GET['adme_action'] == ADME_LG_ACTION_ADMINISTRER) {
142 jpm 260
            $id_appli = GEN_retournerIdAppliMenu($objet_pear_db, $_GET['adme_menu_id']);
261
            $chemin_admin = GEN_retournerCheminInterfaceAdmin($objet_pear_db, $id_appli);
262
            $nom_admin = GEN_retournerNomInterfaceAdmin($objet_pear_db, $id_appli);
263
            if ($chemin_admin !== false) {
264
                include_once $chemin_admin;
265
                $objet_admin = new $nom_admin;
266
                if (method_exists($objet_admin, 'afficherContenuCorps')) {
267
                    $retour_admin = $objet_admin->afficherContenuCorps();
268
                }
269
                if ($retour_admin !== false) {
270
                    return $retour_admin;
271
                }
7 jpm 272
            }
273
        }
274
 
142 jpm 275
        //---------------------------------------------------------------------------------------------------------------
276
        // Affichage des messages si nécessaire
277
        if (! empty($message)) {
278
            $sortie_xhtml .= "\n".'<p class="pap_erreur">'.$message.'</p>';
7 jpm 279
        }
280
 
142 jpm 281
        //---------------------------------------------------------------------------------------------------------------
282
        // Affichage formulaire principal et retour du XHTML!
283
        $sortie_xhtml .= ADME_afficherFormPrincipal($objet_pear_db, $objet_pear_url, $_GET['adme_site_id'], $_GET['adme_menu_id'], $_GET['adme_action']);
284
        return $sortie_xhtml;
7 jpm 285
        // Fin de l'authentification
286
    } else {
142 jpm 287
        // Pas d'authentification nous affichons un message!
288
        return GEN_afficherInfoIdentification($objet_pear_url);
7 jpm 289
    }
290
}// Fin de la fonction afficherContenuCorps()
291
 
292
// +------------------------------------------------------------------------------------------------------+
142 jpm 293
// |                                            PIED du PROGRAMME                                         |
7 jpm 294
// +------------------------------------------------------------------------------------------------------+
295
 
296
 
297
 
298
/* +--Fin du code ----------------------------------------------------------------------------------------+
299
*
300
* $Log: not supported by cvs2svn $
463 florian 301
* Revision 1.17  2005/07/18 16:14:32  ddelon
302
* css admin + menu communs
303
*
422 ddelon 304
* Revision 1.16  2005/07/08 21:13:15  ddelon
305
* Gestion indentation menu
306
*
409 ddelon 307
* Revision 1.15  2005/02/28 11:04:25  jpm
308
* Modification des auteurs.
309
*
285 jpm 310
* Revision 1.14  2005/02/28 10:31:41  jpm
311
* Changement de nom de dossier.
312
*
276 jpm 313
* Revision 1.13  2004/11/16 13:01:41  jpm
314
* Ajout d'un commentaire.
315
*
163 jpm 316
* Revision 1.12  2004/11/15 16:51:08  jpm
317
* Correction bogue de mise à jour de l'ordre des menus.
318
*
155 jpm 319
* Revision 1.11  2004/11/10 17:26:18  jpm
320
* Fin gestion de la traduction.
321
*
150 jpm 322
* Revision 1.10  2004/11/10 11:58:58  jpm
323
* Mise en place des constantes de traduction de l'appli.
324
*
148 jpm 325
* Revision 1.9  2004/11/09 17:53:03  jpm
326
* Changement des noms des actions sur les menus classiques.
327
*
143 jpm 328
* Revision 1.8  2004/11/09 17:49:11  jpm
329
* Mise en conformité et gestion de différentes interfaces d'administration.
330
*
142 jpm 331
* Revision 1.7  2004/10/25 16:28:02  jpm
332
* Correction convention de codage.
333
*
111 jpm 334
* Revision 1.6  2004/09/23 17:45:19  jpm
335
* Amélioration de la gestion des liens annuler et du selecteur de sites.
336
*
56 jpm 337
* Revision 1.5  2004/09/23 16:49:24  jpm
338
* Correction d'une erreur dans l'url de l'ajout de menu commun.
339
*
54 jpm 340
* Revision 1.4  2004/07/06 17:24:54  jpm
341
* Suppression d'inclusions de fichiers inutiles.
342
*
30 jpm 343
* Revision 1.3  2004/07/06 17:07:28  jpm
344
* Modification de la documentation pour une mailleur analyse par PhpDocumentor.
345
*
25 jpm 346
* Revision 1.2  2004/06/16 15:06:30  jpm
347
* Suppression fichier inutile.
348
*
8 jpm 349
* Revision 1.1  2004/06/16 15:04:39  jpm
350
* Changement de nom de Génésia en Papyrus.
351
* Changement de l'arborescence.
352
*
7 jpm 353
* Revision 1.26  2004/05/10 14:32:21  jpm
354
* Changement du titre.
355
*
356
* Revision 1.25  2004/05/10 12:13:23  jpm
357
* Ajout de la sélection des sites.
358
*
359
* Revision 1.24  2004/05/07 16:33:05  jpm
360
* Intégration de constantes.
361
*
362
* Revision 1.23  2004/05/07 07:23:53  jpm
363
* Amélioration du code, des commentaires et correction de bogues.
364
*
365
* Revision 1.22  2004/05/05 06:45:44  jpm
366
* Suppression de l'appel de la fonction générant le "vous êtes ici" dans la fonction affichant l'entête de l'application.
367
*
368
* Revision 1.21  2004/05/04 16:27:33  jpm
369
* Réduction de code pour la fonction afficherContenuTete().
370
*
371
* Revision 1.20  2004/05/03 11:23:26  jpm
372
* Début mise en conformité des commentaires.
373
*
374
*
375
* +-- Fin du code ----------------------------------------------------------------------------------------+
376
*/
377
?>