Subversion Repositories Applications.papyrus

Rev

Rev 8 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
7 jpm 1
<?php
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */
3
// +------------------------------------------------------------------------------------------------------+
4
// | PHP version 4.1                                                                                      |
5
// +------------------------------------------------------------------------------------------------------+
6
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org)                                         |
7
// +------------------------------------------------------------------------------------------------------+
8
// | This library is free software; you can redistribute it and/or                                        |
9
// | modify it under the terms of the GNU Lesser General Public                                           |
10
// | License as published by the Free Software Foundation; either                                         |
11
// | version 2.1 of the License, or (at your option) any later version.                                   |
12
// |                                                                                                      |
13
// | This library is distributed in the hope that it will be useful,                                      |
14
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
15
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU                                    |
16
// | Lesser General Public License for more details.                                                      |
17
// |                                                                                                      |
18
// | You should have received a copy of the GNU Lesser General Public                                     |
19
// | License along with this library; if not, write to the Free Software                                  |
20
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
21
// +------------------------------------------------------------------------------------------------------+
22
// CVS : $Id: admin_menu.php,v 1.1 2004-06-16 15:04:39 jpm Exp $
23
/**
24
* Application gérant les menus de Papyrus
25
*
26
* Cette application permet de gérer les menus classiques, les menus communs
27
* et les liaison d'une application à un menu.
28
*
29
*@package Administrateur Menus
30
//Auteur original :
31
*@author        Laurent COUDOUNEAU <lc@gsite.org>
32
//Autres auteurs :
33
*@author        Alexandre GRANIER <alexandre@tela-botanica.org>
34
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
35
*@copyright     Tela-Botanica 2000-2004
36
*@version       $Revision: 1.1 $ $Date: 2004-06-16 15:04:39 $
37
// +------------------------------------------------------------------------------------------------------+
38
*/
39
 
40
// +------------------------------------------------------------------------------------------------------+
41
// |                                            ENTÊTE du PROGRAMME                                       |
42
// +------------------------------------------------------------------------------------------------------+
43
                                    /*Mettre ici les inclusions de fichiers*/
44
/** Inclusion du fichier de configuration de cette application.*/
45
require_once GEN_CHEMIN_PAP.'applications/admin_menu/configuration/adme_configuration.inc.php';
46
 
47
/** Inclusion de la bibliothèque PEAR de conception de formulaire.*/
48
require_once ADME_CHEMIN_BIBLIOTHEQUE_PEAR.'HTML/QuickForm.php';
49
 
50
/** Inclusion de l'API de fonctions gérant les erreurs sql.*/
51
require_once ADME_CHEMIN_BIBLIOTHEQUE_API.'debogage_1.0/BOG_sql.fonct.php';
52
 
53
/** Inclusion des fonctions de manipulation du sql.
54
* Permet la récupération d'un nouvel identifiant d'une table.*/
55
require_once ADME_CHEMIN_BIBLIOTHEQUE_API.'sql_1.0/SQL_manipulation.fonct.php';
56
 
57
/** <BR> Inclusion de la bibliothèque de fonctions concernant les tables "gen_site..." de Papyrus.*/
58
require_once ADME_CHEMIN_BIBLIOTHEQUE_GEN.'pap_site.fonct.php';
59
 
60
/** <BR> Inclusion de la bibliothèque de fonctions concernant les tables "gen_menu..." de Papyrus.*/
61
require_once ADME_CHEMIN_BIBLIOTHEQUE_GEN.'pap_menu.fonct.php';
62
 
63
/** <BR> Inclusion de la bibliothèque de fonctions concernant la gestion des menus classiques.*/
64
require_once ADME_CHEMIN_BIBLIOTHEQUE_ADME.'adme_menu_classique.fonct.php';//ok
65
 
66
/** <BR> Inclusion de la bibliothèque de fonctions concernant la gestion des menus communs.*/
67
require_once ADME_CHEMIN_BIBLIOTHEQUE_ADME.'adme_menu_commun.fonct.php';//ok
68
 
69
/** <BR> Inclusion de la bibliothèque de fonctions concernant la gestion de la rédaction de contenu.*/
70
require_once ADME_CHEMIN_BIBLIOTHEQUE_ADME.'adme_contenu.fonct.php';//ok
71
 
72
require_once ADME_CHEMIN_APPLICATION.'doc.php';
73
 
74
require_once ADME_CHEMIN_APPLICATION.'page.php';
75
 
76
// +------------------------------------------------------------------------------------------------------+
77
// |                                            CORPS du PROGRAMME                                        |
78
// +------------------------------------------------------------------------------------------------------+
79
                                       /*Mettre ici le code du programme*/
80
/** Fonction afficherContenuTete() - Fonction appelé par le gestionnaire Papyrus.
81
*
82
* Elle retourne l'entête de l'application..
83
*
84
* @return  string  du code XHTML correspondant à la zone d'entête de l'application.
85
*/
86
function afficherContenuTete()
87
{
88
    return '';
89
}
90
 
91
function afficherContenuCorps()
92
{
93
    global $_GEN_commun;
94
    $objet_pear_auth = $_GEN_commun['pear_auth'];
95
    $objet_pear_db = $_GEN_commun['pear_db'];
96
    $db = $_GEN_commun['pear_db'];
97
 
98
    $url_site = $_GEN_commun['url_site'];
99
    $url_menu = $_GEN_commun['url_menu'];
100
    $url_i18n = $_GEN_commun['url_i18n'];
101
    $outputText = '' ;
102
    //------------------------------------------------------------------------------
103
    // Vérification de la présence d'arguments pour l'application.
104
 
105
    if (!isset($_POST['adminProject'])) {
106
        if (!isset($_GET['adminProject'])) {
107
            $adminProject = '';
108
        } else {
109
            $adminProject = $_GET['adminProject'];
110
        }
111
    } else {
112
        $adminProject = $_POST['adminProject'];
113
    }
114
    /*
115
    $adminProject = $_GEN_commun['info_site']->gs_code_alpha;
116
 
117
    if (isset($_GEN_commun['info_application']->site)) {
118
        $adminProject = $_GEN_commun['info_application']->site;
119
    }
120
    */
121
    global $adminLocale;
122
    if (empty($adminLocale)) {
123
        $adminLocale = $_GEN_commun['info_site']->gs_ce_i18n;
124
    }
125
    //------------------------------------------------------------------------------
126
    // Internationalisation ?
127
    if (isset ($doclocale) && ($doclocale != '')) {
128
        $adminLocale = $doclocale;
129
    }
130
 
131
    //------------------------------------------------------------------------------
132
    // Arguments spécifique à l'application.
133
    global $menuid;
134
    global $upperid;
135
    global $doccmd;
136
    global $docopen;
137
    global $menuopen;
138
    global $upperopen;
139
 
140
    global $doc_name;
141
    global $doc_title;
142
 
143
    global $docid;
144
    global $pageid;
145
    global $pageopen;
146
 
147
    //------------------------------------------------------------------------------
148
    // L'url de base pour revenir au menu (=page) en cours.
149
    $url =
150
        'papyrus.php'.
151
        '?'.GEN_URL_CLE_SITE.'='.$url_site.
152
        '&'.GEN_URL_CLE_MENU.'='.$url_menu;
153
 
154
    $baseURL =
155
        'papyrus.php'.
156
        '?'.GEN_URL_CLE_SITE.'='.$url_site.
157
        '&amp;'.GEN_URL_CLE_MENU.'='.$url_menu.
158
        '&amp;'.GEN_URL_CLE_I18N.'='.$url_i18n;
159
 
160
    $baseURLjs =
161
        'papyrus.php'.
162
        '?'.GEN_URL_CLE_SITE.'='.$url_site.
163
        '&'.GEN_URL_CLE_MENU.'='.$url_menu.
164
        '&'.GEN_URL_CLE_I18N.'='.$url_i18n.
165
        '&adminProject='.$adminProject;
166
        //'&doclocale='.$doclocale;
167
 
168
    // Virer la variable baseHidden devenu inutile
169
    $baseHidden = '';
170
 
171
    //------------------------------------------------------------------------------
172
    // Authentification
173
    if ($_GEN_commun['pear_auth']->getAuth()) {
174
        //------------------------------------------------------------------------------
175
        // Gestion des commandes.
176
 
177
        //------------------------------------------------------------------------------
178
        // Gestion des menus classiques
179
 
180
        // Ajout d'un menu
181
        if ($doccmd == 'addmenu') {
182
            $doccmd = '';
183
            addMenu($adminProject, $adminLocale);
184
        }
185
 
186
        // Formulaire de mise à jour du menu
187
        if ($doccmd == 'showmenu') {
188
            $outputText .= showMenu (   $db, $adminProject, $adminLocale, $baseURL, $baseURLjs, $baseHidden,
189
                                        $menuid, $docid, $pageid, $menuopen, $docopen, $pageopen);
190
            return $outputText ;
191
        }
192
 
193
        // Mise à jour du menu
194
        if ($doccmd == 'commitupdmenu') {
195
            commitUpdateLevel ($db, $adminProject, $adminLocale, $menuid);
196
            $doccmd = '';
197
        }
198
 
199
        // Déplacer le menu vers le haut
200
        if ($doccmd == 'upmenu') {
201
            moveMenu ($db, $adminProject, $adminLocale, $menuid, true);
202
            $doccmd = '';
203
        }
204
 
205
        // Déplacer le menu vers le bas
206
        if ($doccmd == 'dnmenu') {
207
            moveMenu ($db, $adminProject, $adminLocale, $menuid, false);
208
            $doccmd = '';
209
        }
210
 
211
        // Détruire le menu
212
        if ($doccmd == 'delmenu') {
213
            $msg = deleteMenu($objet_pear_db, $menuid);
214
            $doccmd = '';
215
        }
216
 
217
        //------------------------------------------------------------------------------
218
        // Gestion des Menus communs
219
 
220
        // Ajout un menu commun
221
        if ($doccmd == 'addupper') {
222
            addUpper($db, $adminProject, $adminLocale);
223
            $doccmd = '';
224
        }
225
 
226
        // Valide et modifie un menu commun.
227
        if ($doccmd == 'commitupduppertxt') {
228
            commitUpdateUpperText($db, $adminProject, $adminLocale, $upperid);
229
            $doccmd = '';
230
        }
231
 
232
        // Update upper menu.
233
        if ($doccmd == 'upduppertxt') {
234
            $outputText .=
235
            showUpper(  $db, $adminProject, $adminLocale,
236
                        $baseURL, $baseURLjs, $baseHidden,
237
                        $upperid, $menuopen, $upperopen, $docopen);
238
            return $outputText;
239
        }
240
 
241
        // Valide et modifie un menu commun
242
        if ($doccmd == 'commitupdupper') {
243
            commitUpdateUpper($db, $adminProject, $adminLocale, $upperid);
244
            $doccmd = '';
245
        }
246
 
247
        // Déplace vers le haut de la hiérarchie un menu commun
248
        if ($doccmd == 'upupper') {
249
            moveUpper($db, $adminProject, $adminLocale, $upperid, true);
250
            $doccmd = '';
251
        }
252
 
253
        // Déplace vers le bas de la hiérarchie un menu commun
254
        if ($doccmd == 'dnupper') {
255
            moveUpper($db, $adminProject, $adminLocale, $upperid, false);
256
            $doccmd = '';
257
        }
258
 
259
        // Supprime définitivement un menu commun
260
        if ($doccmd == 'delupper') {
261
            deleteUpper($db, $adminProject, $adminLocale, $upperid);
262
            $doccmd = '';
263
        }
264
 
265
        //------------------------------------------------------------------------------
266
        // Gestion de la rédaction
267
 
268
        // Rédiger
269
        if ($doccmd == 'contenuredac') {
270
            if (isset($upperid) && !empty($upperid) && !isset($menuid) && empty($menuid)) {
271
                $menuid = $upperid;
272
            }
273
            $outputText .= redigerContenu(  $db, $adminProject, $adminLocale, $baseURL, $baseURLjs, $baseHidden,
274
                                            $menuid, $docid, $pageid, $menuopen, $docopen, $pageopen);
275
            return $outputText;
276
        }
277
        // Mise à jour du contenu
278
        if ($doccmd == 'contenuenreg') {
279
            ajouterContenu($db, $adminProject, $adminLocale, $menuid, $_POST);
280
            $doccmd = '';
281
        }
282
 
283
        //------------------------------------------------------------------------------
284
        // Autres
285
 
286
        // Message ?
287
        if (! empty($msg)) {
288
            $outputText .= "\n".'<p class="erreur">'.$msg.'</p>';
289
        }
290
 
291
        //------------------------------------------------------------------------------
292
        // Nous affichons la liste des menus classiques et communs
293
        $annuName = '';
294
        $outputText .=
295
        listAll(    $db,
296
                    $baseURL, $baseURLjs, $url, $baseHidden,
297
                    $adminProject, $adminLocale, $annuName,
298
                    $annuName, $menuid, $upperid,
299
                    $doccmd, $menuopen, $upperopen);
300
        return $outputText ;
301
        // Fin de l'authentification
302
    } else {
303
        return GEN_afficherInfoIdentification($baseURL);
304
    }
305
}// Fin de la fonction afficherContenuCorps()
306
 
307
// +------------------------------------------------------------------------------------------------------+
308
// |                                           LISTE de FONCTIONS                                         |
309
// +------------------------------------------------------------------------------------------------------+
310
                                        /*Mettre ici la liste de fonctions.*/
311
 
312
function listAll($db,
313
                  $baseURL, $baseURLjs, $url, $baseHidden,
314
                  $adminProject, $adminLocale, $adminAnnu,
315
                  $annuName, $menuid, $upperid,
316
                  $doccmd, $menuopen, $upperopen)
317
{
318
    $res  = '';
319
    $res .= "\n";
320
 
321
    // Liste des sites principaux
322
    $requete =  'SELECT * '.
323
                'FROM gen_site, gen_site_relation '.
324
                'WHERE gsr_id_site_01 = gsr_id_site_02 '.
325
                'AND gsr_id_valeur = 102 '.// 102 = site "principal"
326
                'AND gsr_id_site_01 = gs_id_site '.
327
                'ORDER BY gsr_ordre';
328
 
329
    $resultat = $db->query($requete);
330
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '' ;
331
 
332
    //----------------------------------------------------------------------------
333
    // Création du formulaire
334
 
335
    $form =& new HTML_QuickForm('form_sites', 'post', $url);
336
    $tab_index = 1000;
337
    $squelette =& $form->defaultRenderer();
338
    $squelette->setFormTemplate("\n".'<form{attributes}>'."\n".'<p>'."\n".'{content}'."\n".'</p>'."\n".'</form>'."\n");
339
    $squelette->setElementTemplate( '{label}'."\n".'{element}'."\n".
340
                                    '<!-- BEGIN required --><span class="symbole_obligatoire">*</span><!-- END required -->'."\n".
341
                                    '<!-- BEGIN error --><span class="erreur">{error}</span><!-- END error -->'."\n");
342
    $partie_site_debut =    '<fieldset>'."\n".
343
                            '<legend>Listes des sites</legend>'."\n";
344
    $form->addElement('html', $partie_site_debut);
345
    $aso_options = array();
346
    while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
347
        if (empty($adminProject)) {
348
            $adminProject = $ligne->gs_code_alpha;
349
        }
350
        $aso_options[$ligne->gs_code_alpha] = htmlentities($ligne->gs_nom.' ('.$ligne->gs_code_alpha.')');
351
    }
352
    $resultat->free();
353
    $id = 'adminProject';
354
    $aso_attributs = array('id'=> $id, 'tabindex' => $tab_index++);
355
    $label = '<label for="'.$id.'">'.'Choix du site à administrer : '.'</label>';
356
    $form->addElement('select', $id, $label, $aso_options, $aso_attributs);
357
    $form->addElement('submit', 'choisir_site', 'OK');
358
    $partie_site_fin = '</fieldset>'."\n";
359
    $form->addElement('html', $partie_site_fin);
360
 
361
    // Instanciation des valeurs par défaut du formulaire
362
    $form->setDefaults($adminProject);
363
 
364
    $res .= '<h1>'.'Configuration des menus du site : '.$adminProject.'</h1>'."\n";
365
    $res .= '<p>'."\n";
366
    $res .= $form->toHTML()."\n";
367
 
368
    //----------------------------------------------------------------------------
369
    // Affiche la langue courante pour les menus à administrer
370
    $requete =  'SELECT * '.
371
                'FROM gen_i18n '.
372
                'WHERE gi_id_i18n = "'.$adminLocale.'"';
373
 
374
    $LOCALEresult = $db->query($requete);
375
    if (DB::isError($LOCALEresult)) {
376
        die(BOG_afficherErreurSql(__FILE__, __LINE__, $LOCALEresult->getMessage(), $requete));
377
    }
378
 
379
    $FLAGrow = $LOCALEresult->fetchRow(DB_FETCHMODE_OBJECT);
380
    if ($FLAGrow) {
381
        $res .= $FLAGrow->gi_nom.'&nbsp;'."\n";
382
    }
383
    $LOCALEresult->free() ;
384
 
385
 
386
    // Internationalisation disponible pour le site principal.
387
    $requete =  'SELECT gs_ce_i18n, gi_nom '.
388
                'FROM gen_site, gen_i18n '.
389
                'WHERE gs_ce_i18n = gi_id_i18n '.
390
                'AND gs_code_alpha = "'.$adminProject.'" ';
391
 
392
    $LOCALEresult = $db->query($requete);
393
    (DB::isError ($LOCALEresult))
394
        ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $LOCALEresult->getMessage(), $requete))
395
        : '';
396
 
397
    while ($LOCALErow = $LOCALEresult->fetchRow(DB_FETCHMODE_OBJECT)) {
398
        if ($adminLocale != $LOCALErow->gs_ce_i18n) {
399
            $res .= '<a href="'.$baseURL.'&amp;adminLocale='.$LOCALErow->gs_ce_i18n.'">'.
400
                        $LOCALErow->gi_nom.
401
                    '</a>'."\n";
402
        }
403
    }
404
    $LOCALEresult->free() ;
405
    $res .= '</p>'."\n";
406
 
407
    //----------------------------------------------------------------------------
408
    // Gestion des menus classiques
409
    $etiquette_title_ajouter = 'Ajouter un menu classique';
410
    $res .= '<p>'."\n";
411
    $res .= '<a href="'.$baseURL.'&amp;adminProject='.$adminProject.'&amp;doccmd=addmenu&amp;menuid=0" >'.
412
                $etiquette_title_ajouter.'&nbsp;'.
413
                '<img src="'.ADME_IMAGE_NOUVEAU.'" alt="" width="16" height="16" border="0" />'.
414
            '</a>'."\n";
415
    $res .= '</p>'."\n";
416
 
417
    $res .= '<form name="updform" action="papyrus.php" method="post">'."\n";
418
 
419
    $res .= lister_menu_racine( $db,
420
                                $baseURL, $baseURLjs, $baseHidden,
421
                                $adminProject, $adminLocale, $adminAnnu,
422
                                $menuid, $upperid,
423
                                $doccmd, $menuopen,  $upperopen, 0);
424
    //----------------------------------------------------------------------------
425
    // Gestion des menus communs
426
    $etiquette_title_ajouter = 'Ajouter un menu commun';
427
    $res .=     '<p>'."\n";
428
    $res .=     '<a href="'.$baseURL.'&amp;doccmd=addupper">'.
429
                    $etiquette_title_ajouter.'&nbsp;'.
430
                    '<img src="'.ADME_IMAGE_NOUVEAU.'" alt="" width="16" height="16" border="0" />'.
431
                '</a>'."\n";
432
    $res .=     '</p>'."\n";
433
    $res .= listUpper(  $db,
434
                        $baseURL, $baseURLjs, $baseHidden,
435
                        $adminProject, $adminLocale, $adminAnnu,
436
                        $menuid, $upperid,
437
                        $doccmd, $menuopen);
438
 
439
    // Valeur de formulaire cachées.
440
    $res .= '<input type="hidden" name="menuid" value="'.$menuid.'" />'."\n";
441
    $res .= '<input type="hidden" name="upperid" value="'.$upperid.'" />'."\n";
442
    $res .= '<input type="hidden" name="menuopen" value="'.$menuopen.'" />'."\n";
443
    $res .= $baseHidden;
444
 
445
    $res .= '</form>'."\n";
446
 
447
    return $res;
448
}
449
 
450
// +------------------------------------------------------------------------------------------------------+
451
// |                                            PIED du PROGRAMME                                         |
452
// +------------------------------------------------------------------------------------------------------+
453
                                           /*Partie non obligatoire*/
454
 
455
 
456
/* +--Fin du code ----------------------------------------------------------------------------------------+
457
*
458
* $Log: not supported by cvs2svn $
459
* Revision 1.26  2004/05/10 14:32:21  jpm
460
* Changement du titre.
461
*
462
* Revision 1.25  2004/05/10 12:13:23  jpm
463
* Ajout de la sélection des sites.
464
*
465
* Revision 1.24  2004/05/07 16:33:05  jpm
466
* Intégration de constantes.
467
*
468
* Revision 1.23  2004/05/07 07:23:53  jpm
469
* Amélioration du code, des commentaires et correction de bogues.
470
*
471
* Revision 1.22  2004/05/05 06:45:44  jpm
472
* Suppression de l'appel de la fonction générant le "vous êtes ici" dans la fonction affichant l'entête de l'application.
473
*
474
* Revision 1.21  2004/05/04 16:27:33  jpm
475
* Réduction de code pour la fonction afficherContenuTete().
476
*
477
* Revision 1.20  2004/05/03 11:23:26  jpm
478
* Début mise en conformité des commentaires.
479
*
480
*
481
* +-- Fin du code ----------------------------------------------------------------------------------------+
482
*/
483
?>