Subversion Repositories Applications.papyrus

Rev

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