Subversion Repositories Applications.papyrus

Rev

Rev 1673 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2150 mathias 1
<?php
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */
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
// ----
35
// CVS : $Id: adme_general.fonct.php,v 1.20 2007-10-24 14:43:02 ddelon Exp $
36
/**
37
* Contient l'affichage par défaut de l'appli quand aucune actin
38
*
39
* Ce fichier contient les fonctions d'affichage commune à toute l'application Admin Menu.
40
* Nous y trouvons, entre autre, la fonction d'affichage par défaut de l'appli.
41
*
42
*@package Admin_menu
43
*@subpackage Fonctions
44
//Auteur original :
45
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
46
//Autres auteurs :
47
*@author        Aucun
48
*@copyright     Tela-Botanica 2000-2004
49
*@version       $Revision: 1.20 $ $Date: 2007-10-24 14:43:02 $
50
// +------------------------------------------------------------------------------------------------------+
51
*/
52
 
53
// +------------------------------------------------------------------------------------------------------+
54
// |                                            ENTETE du PROGRAMME                                       |
55
// +------------------------------------------------------------------------------------------------------+
56
 
57
 
58
// +------------------------------------------------------------------------------------------------------+
59
// |                                           LISTE de FONCTIONS                                         |
60
// +------------------------------------------------------------------------------------------------------+
61
/** Fonction ADME_afficherFormPrincipal() - Affichage par défaut.
62
*
63
* Fournit l'affichage par défaut de l'application Admin Menus.
64
*
65
* @param  object objet Pear de connection à la base de données.
66
* @param  object objet Pear représentant l'url de base.
67
* @return string le XHTML par défaut de la page.
68
*/
69
function ADME_afficherFormPrincipal($objet_pear_db, $objet_pear_url, $adme_site_id, $adme_menu_id, $adme_action)
70
{
71
 
72
    $db=$objet_pear_db;
73
 
74
    $id_langue = $GLOBALS['_GEN_commun']['i18n']; //identifiant de la langue choisie
75
 
76
	// Langue en cours : langue choisie ou langue par defaut (principale)
77
 
78
	if (isset($id_langue) && ($id_langue!='')) {
79
		$langue_test=$id_langue;
80
	} else {
81
		$langue_test=GEN_I18N_ID_DEFAUT;
82
	}
83
 
84
//$langue_test=GEN_I18N_ID_DEFAUT;
85
 
86
	//requete pour recuperer l'id du menu par defaut
87
     $requete =  'SELECT gs_id_site '.
88
                'FROM gen_site, gen_site_relation '.
89
                'WHERE gsr_id_site_01 = gsr_id_site_02 '.
90
                'AND gsr_id_site_01 = gs_id_site '.
91
                'AND gsr_id_valeur=101 '.
92
                'AND gs_ce_i18n = "'.$langue_test.'" ';
93
    $resultat = $db->query($requete);
94
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '' ;
95
    while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
96
    	$id_site_par_defaut=$ligne->gs_id_site;
97
    }
98
 
99
    // Liste des sites principaux :
100
    // Recherche de tous les sites langue en cours
101
 
102
    $requete =  'SELECT * '.
103
                'FROM gen_site, gen_site_relation '.
104
                'WHERE gsr_id_site_01 = gsr_id_site_02 '.
105
                'AND gsr_id_site_01 = gs_id_site '.
106
                'AND gsr_id_valeur IN (102, 103) '.
107
                'AND gs_ce_i18n = "'.$langue_test.'" '.
108
                'ORDER BY gsr_ordre';
109
 
110
 
111
    $resultat = $db->query($requete);
112
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '' ;
113
 
114
 
115
 
116
    $liste_site=array();
117
    while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
118
 
119
    		if ($langue_test == GEN_I18N_ID_DEFAUT) {
120
 
121
    		  $requete_est_traduction =   'SELECT gsr_id_site_01 '.
122
	                       'FROM  gen_site_relation '.
123
	                       'WHERE '.$ligne->gs_id_site.' = gsr_id_site_02 ' .
124
	                  	   'AND  gsr_id_site_01 <> gsr_id_site_02 ' .
125
	                       'AND gsr_id_valeur = 1 ';// 1 = "avoir traduction"
126
 
127
 
128
	            $resultat_est_traduction = $db->query($requete_est_traduction);
129
	            (DB::isError($resultat_est_traduction))
130
	                ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_est_traduction->getMessage(), $requete_est_traduction))
131
	                : '';
132
 
133
	   			if ( $resultat_est_traduction->numRows() == 0 ) {
134
    	 			$liste_site[]=$ligne;
135
	            }
136
    		}
137
    		else {
138
    			   $liste_site[]=$ligne;
139
    		}
140
    }
141
    $resultat->free();
142
 
143
    // Si la langue en cours n'est pas la langue par défaut, recherche des sites ayant comme langue
144
    // la langue par defaut, non traduits dans la langue en cours et n'etant pas des traductions
145
 
146
 
147
	if ($langue_test != GEN_I18N_ID_DEFAUT) {
148
 
149
 
150
	    $requete =  'SELECT * '.
151
	                'FROM gen_site, gen_site_relation '.
152
	                'WHERE gsr_id_site_01 = gsr_id_site_02 '.
153
	                'AND gs_id_site = gsr_id_site_01 '.
154
	                'AND gsr_id_valeur IN (102, 103) '.
155
	                'AND gs_ce_i18n = "'.GEN_I18N_ID_DEFAUT.'" '.
156
	                'ORDER BY gs_code_num ASC';// 102 = site "principal" et 103 = site "externe"
157
 
158
	    $resultat = $db->query($requete);
159
	    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
160
 
161
 
162
 
163
 
164
	    // Recherche de tous les sites de la langue principale  qui ne sont pas traduits dans la langue en cours
165
 
166
	    while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
167
 
168
	    		$requete_est_traduction =   'SELECT gsr_id_site_01 '.
169
	                                'FROM  gen_site_relation '.
170
	                                'WHERE '.$ligne->gs_id_site.' = gsr_id_site_02 ' .
171
	                                'AND  gsr_id_site_01 <> gsr_id_site_02 ' .
172
	                                'AND gsr_id_valeur = 1 ';// 1 = "avoir traduction"
173
 
174
 
175
	            $resultat_est_traduction = $db->query($requete_est_traduction);
176
	            (DB::isError($resultat_est_traduction))
177
	                ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_est_traduction->getMessage(), $requete_est_traduction))
178
	                : '';
179
 
180
	            if ( $resultat_est_traduction->numRows() == 0 ) {
181
 
182
 
183
					if (isset($id_langue) && ($id_langue!='')) {
184
						$langue_test=$id_langue;
185
					} else {
186
						$langue_test=GEN_I18N_ID_DEFAUT;
187
					}
188
 
189
		    		$requete_traduction =   'SELECT gsr_id_site_01 '.
190
		                                    'FROM  gen_site_relation, gen_site '.
191
		                                    'WHERE '.$ligne->gs_id_site.' = gsr_id_site_01 ' .
192
		                                    'AND gsr_id_site_02 = gs_id_site '.
193
		                                    'AND gs_ce_i18n = "'.$langue_test.'" '.
194
		                                    'AND gsr_id_valeur = 1 ';// 1 = "avoir traduction"
195
 
196
		            $resultat_traduction = $db->query($requete_traduction);
197
		            (DB::isError($resultat_traduction))
198
		                ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_traduction->getMessage(), $requete_traduction))
199
		                : '';
200
 
201
		            if ( $resultat_traduction->numRows() == 0 ) {
202
		            	$liste_site []=$ligne;
203
		            }
204
 
205
		            $resultat_traduction->free();
206
 
207
	            }
208
	               $resultat_est_traduction->free();
209
 
210
	    }
211
	    $resultat->free();
212
	}
213
 
214
              // Traduction d'un site principal uniquement :
215
 
216
	        $requete =  'SELECT * '.
217
	                    'FROM gen_site_relation '.
218
	                    'WHERE gsr_id_site_02 = '.$adme_site_id.' '.
219
	                    'AND gsr_id_valeur =1  '; // 1 = "avoir traduction"
220
 
221
	        $resultat = $db->query($requete);
222
 
223
	        if (DB::isError($resultat)) {
224
	            die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
225
	        }
226
 
227
	        if ( $resultat->numRows() == 0 ) {
228
	        	$adme_site_id =$adme_site_id;
229
	        }
230
	        else {
231
	        	$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
232
		        $adme_site_id = $ligne->gsr_id_site_01;
233
		    }
234
	        $resultat->free();
235
 
236
 
237
 
238
    //---------------------------------------------------------------------------------------------------------------
239
    // Création du formulaire
240
    // Notes : Quickform semble remplacer les & des &amp; à nouveau par des &amp; solution utiliser str_replace()...
241
    $form =& new HTML_QuickForm('adme_form_sites', 'post', str_replace('&amp;', '&', $objet_pear_url->getUrl()));
242
    $tab_index = 1000;
243
    $squelette =& $form->defaultRenderer();
244
    $squelette->setformTemplate("\n".'<form {attributes}>'."\n".'{content}'."\n"."\n".'</form>'."\n");
245
    $squelette->setElementTemplate( '{label}'."\n".'{element}'."\n".
246
                                    '<!-- BEGIN required --><span class="symbole_obligatoire">*</span><!-- END required -->'."\n".
247
                                    '<!-- BEGIN error --><span class="erreur">{error}</span><!-- END error -->'."\n");
248
    $partie_site_debut =    '<fieldset>'."\n".
249
                            '<legend>'.ADME_LG_FORM_SITE_TITRE.'</legend>'."\n";
250
    $form->addElement('html', $partie_site_debut);
251
    $id = 'adme_site_id';
252
    $aso_attributs = array('id'=> $id, 'tabindex' => $tab_index++, 'onchange' => 'javascript:this.form.submit();');
253
    $label = '<label for="'.$id.'">'.ADME_LG_FORM_SITE_CHOIX.'</label>';
254
    $objet_select = new HTML_QuickForm_select($id, $label, '', $aso_attributs);
255
    $aso_options = array();
256
 
257
//print    $adme_site_id;
258
 
259
    foreach ($liste_site as $ligne ) {
260
        if (!isset($adme_site_id) || $adme_site_id == 0) {
261
            $adme_site_id = $ligne->gs_id_site;
262
        }
263
//        print   $ligne->gs_id_site;
264
 
265
        if ($ligne->gs_id_site == $adme_site_id) {
266
            $objet_select->addOption(htmlentities($ligne->gs_nom.' ('.$ligne->gs_code_alpha.')'), $ligne->gs_id_site, 'selected="selected"');
267
            // Attribution du nom du site sur lequel on travaille pour le titre
268
            $site_nom = $ligne->gs_nom;
269
        } else {
270
            $objet_select->addOption(htmlentities($ligne->gs_nom.' ('.$ligne->gs_code_alpha.')'), $ligne->gs_id_site);
271
        }
272
    }
273
    $form->addElement($objet_select);
274
    $form->addElement('submit', 'choisir_site', ADME_LG_FORM_SITE_VALIDER);
275
    $partie_site_fin = "\n".'</fieldset>';
276
    $form->addElement('html', $partie_site_fin);
277
 
278
    // Instanciation des valeurs par défaut du formulaire
279
    if (isset($id_site_par_defaut)) {
280
    	if (!isset($_GET['adme_site_id'])) {
281
    		$adme_site_id=$id_site_par_defaut;
282
    	} else {
283
    		$adme_site_id=$_GET['adme_site_id'];
284
    	}
285
    }
286
    $form->setDefaults(array('adme_site_id' => $adme_site_id));
287
 
288
    $retour ='';
289
    $retour .= '<h1>'.ADME_LG_MENU_TITRE.$site_nom.'</h1>'."\n";
290
    $retour .= $form->toHTML()."\n";
291
 
292
    //---------------------------------------------------------------------------------------------------------------
293
    // Gestion des menus classiques
294
    $objet_pear_url_copie = $objet_pear_url;
295
 
296
    $retour .= '<p>'."\n";
297
    $objet_pear_url_copie->addQueryString('adme_action', ADME_LG_ACTION_CLASSIQUE_AJOUTER);
298
    $objet_pear_url_copie->addQueryString('adme_site_id', $adme_site_id);
299
    $objet_pear_url_copie->addQueryString('adme_menu_id', 0);
300
    $url_ajout_menu_classique_n1 = $objet_pear_url_copie->getURL();
301
    //unset($url_ajout_menu_n1);
302
    $retour .=    '<a href="'.$url_ajout_menu_classique_n1.'" >'.
303
                            ADME_LG_MENU_CLASSIQUE_RACINE.'&nbsp;'.
304
                            '<img class="'.ADME_CLASS_IMG_ICONE.'" src="'.ADME_IMAGE_NOUVEAU.'" alt="+" />'.
305
                        '</a>'."\n";
306
    $retour .= '</p>'."\n";
307
 
308
    $objet_pear_url_copie_depl = $objet_pear_url;
309
 
310
    $objet_pear_url_copie_depl->removeQueryString('adme_action');
311
    $objet_pear_url_copie_depl->removeQueryString('adme_site_id');
312
    $objet_pear_url_copie_depl->removeQueryString('adme_menu_id');
313
    $objet_pear_url_copie_depl->addQueryString('adme_action', ADME_LG_ACTION_CLASSIQUE_DEPLACER_MENUS);
314
    $url_deplacement_menu_commun = $objet_pear_url_copie_depl->getURL() ;
315
    $retour .= '<form id="adme_form_menu_deplacement" name="adme_form_menu_deplacement" method="post" action="'.$url_deplacement_menu_commun.'" class="form_inv">' ;
316
 
317
    $retour .= ADME_afficherListeMenuClassique($objet_pear_db, $objet_pear_url, $adme_site_id, $adme_menu_id, $adme_action, 0);
318
 
319
    $retour .= '<fieldset class="fields_deplacer_menu">' ;
320
    $retour .= '<legend> '.ADME_LG_MENU_DEPLACER.' </legend>' ;
321
    $objet_select->setAttributes(array('name'=>'adme_id_site_arrivee', 'id'=> 'adme_id_site_arrivee', 'tabindex' => $tab_index++));
322
    $retour .= $objet_select->toHtml() ;
323
    $retour .= '<input type="hidden" name="adme_id_site_depart" id="adme_id_site_depart" value="'.$adme_site_id.'" />' ;
324
    $retour .= '<input type="submit" value="deplacer" title="deplacer" />' ;
325
    $retour .= '</fieldset>';
326
    $retour .= '</form>' ;
327
 
328
    //$objet_pear_url_copie_depl->removeQueryString('adme_action');
329
 
330
 
331
    //---------------------------------------------------------------------------------------------------------------
332
    // Gestion des menus communs
333
    $retour .=     '<p>'."\n";
334
    $objet_pear_url_copie = $objet_pear_url;
335
    $objet_pear_url_copie->addQueryString('adme_action', ADME_LG_ACTION_COMMUN_AJOUTER);
336
    $objet_pear_url_copie->addQueryString('adme_site_id', $adme_site_id);
337
    $objet_pear_url_copie->addQueryString('adme_menu_id', 0);
338
    $url_ajout_menu_commun_n1 = $objet_pear_url_copie->getURL();
339
    //unset($url_ajout_menu_n1);
340
    $retour .=     '<a href="'.$url_ajout_menu_commun_n1.'">'.
341
                            ADME_LG_MENU_COMMUN_RACINE.'&nbsp;'.
342
                            '<img class="'.ADME_CLASS_IMG_ICONE.'" src="'.ADME_IMAGE_NOUVEAU.'" alt="+" />'.
343
                        '</a>'."\n";
344
    $retour .=     '</p>'."\n";
345
    $retour .= ADME_afficherListeMenuCommun($objet_pear_db, $objet_pear_url, $adme_site_id, $adme_menu_id, $adme_action, 0);
346
    return $retour;
347
}
348
// +------------------------------------------------------------------------------------------------------+
349
// |                                            PIED du PROGRAMME                                         |
350
// +------------------------------------------------------------------------------------------------------+
351
 
352
 
353
/* +--Fin du code ----------------------------------------------------------------------------------------+
354
*
355
* $Log: not supported by cvs2svn $
356
* Revision 1.19  2007-04-19 15:34:35  neiluj
357
* préparration release (livraison) "Narmer" - v0.25
358
*
359
* Revision 1.18  2006/10/16 15:49:07  ddelon
360
* Refactorisation code mulitlinguisme et gestion menu invisibles
361
*
362
* Revision 1.17  2006/10/06 13:38:45  florian
363
* ergonomie amélioree
364
*
365
* Revision 1.16  2006/04/28 12:41:49  florian
366
* corrections erreurs chemin
367
*
368
* Revision 1.15  2006/03/24 13:03:24  ddelon
369
* bug afficheur multilinguisme
370
*
371
* Revision 1.14  2006/03/23 20:24:59  ddelon
372
* *** empty log message ***
373
*
374
* Revision 1.13  2006/03/13 21:00:20  ddelon
375
* Suppression messages d'erreur multilinguisme
376
*
377
* Revision 1.12  2006/03/02 10:49:49  ddelon
378
* Fusion branche multilinguisme dans branche principale
379
*
380
* Revision 1.11.2.1  2006/02/28 14:02:11  ddelon
381
* Finition multilinguisme
382
*
383
* Revision 1.11  2005/07/18 16:14:32  ddelon
384
* css admin + menu communs
385
*
386
* Revision 1.10  2005/07/08 21:57:24  ddelon
387
* Copyright
388
*
389
* Revision 1.9  2005/05/12 16:51:37  alex
390
* Changement de l'odre d'apparition des sites dans l'administration des menus.
391
*
392
* Revision 1.8  2005/01/26 16:18:05  jpm
393
* Correction bogue 221 : mauvais réglage du titre.
394
*
395
* Revision 1.7  2004/11/24 11:31:51  jpm
396
* Ajout d'une contante de langue à la place d'un texte.
397
*
398
* Revision 1.6  2004/11/10 17:26:07  jpm
399
* Fin gestion de la traduction.
400
*
401
* Revision 1.5  2004/11/10 11:58:54  jpm
402
* Mise en place des constantes de traduction de l'appli.
403
*
404
* Revision 1.4  2004/11/09 17:48:35  jpm
405
* Gestion de différentes interfaces d'administration.
406
*
407
* Revision 1.3  2004/11/09 12:37:34  jpm
408
* Fin de gestion des menus et mise en conformité avec la convention de codage.
409
*
410
* Revision 1.2  2004/11/08 17:41:07  jpm
411
* Légères corrections : multisite, corrections SQL.
412
*
413
* Revision 1.1  2004/11/04 12:26:42  jpm
414
* Contient les fonctions d'affichage général de l'appli ADME.
415
*
416
*
417
* +-- Fin du code ----------------------------------------------------------------------------------------+
418
*/
126 jpm 419
?>