Subversion Repositories Applications.papyrus

Rev

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