Subversion Repositories Applications.papyrus

Rev

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

Rev Author Line No. Line
126 jpm 1
<?php
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */
410 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
// ----
1330 florian 35
// CVS : $Id: adme_general.fonct.php,v 1.18.2.2 2007-04-19 13:10:55 florian Exp $
126 jpm 36
/**
134 jpm 37
* Contient l'affichage par défaut de l'appli quand aucune actin
126 jpm 38
*
134 jpm 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.
126 jpm 41
*
134 jpm 42
*@package Admin_menu
43
*@subpackage Fonctions
126 jpm 44
//Auteur original :
134 jpm 45
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
126 jpm 46
//Autres auteurs :
47
*@author        Aucun
48
*@copyright     Tela-Botanica 2000-2004
1330 florian 49
*@version       $Revision: 1.18.2.2 $ $Date: 2007-04-19 13:10:55 $
126 jpm 50
// +------------------------------------------------------------------------------------------------------+
51
*/
52
 
53
// +------------------------------------------------------------------------------------------------------+
54
// |                                            ENTETE du PROGRAMME                                       |
55
// +------------------------------------------------------------------------------------------------------+
56
 
57
 
58
// +------------------------------------------------------------------------------------------------------+
59
// |                                           LISTE de FONCTIONS                                         |
60
// +------------------------------------------------------------------------------------------------------+
141 jpm 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)
126 jpm 70
{
754 ddelon 71
 
793 ddelon 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;
1017 florian 85
 
1094 florian 86
	//requete pour recuperer l'id du site par defaut
1017 florian 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
 
793 ddelon 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
 
1017 florian 114
 
115
 
793 ddelon 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
	}
754 ddelon 213
 
793 ddelon 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
 
790 ddelon 237
 
126 jpm 238
    //---------------------------------------------------------------------------------------------------------------
239
    // Création du formulaire
240
    // Notes : Quickform semble remplacer les & des &amp; à nouveau par des &amp; solution utiliser str_replace()...
1094 florian 241
    $form =& new HTML_Quickform('adme__sites', 'post', str_replace('&amp;', '&', $objet_pear_url->getUrl()));
126 jpm 242
    $tab_index = 1000;
243
    $squelette =& $form->defaultRenderer();
1094 florian 244
    $squelette->setformTemplate("\n".'<form {attributes}>'."\n".'{content}'."\n"."\n".'</form>'."\n");
126 jpm 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".
150 jpm 249
                            '<legend>'.ADME_LG_FORM_SITE_TITRE.'</legend>'."\n";
126 jpm 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();');
148 jpm 253
    $label = '<label for="'.$id.'">'.ADME_LG_FORM_SITE_CHOIX.'</label>';
1094 florian 254
    $objet_select = new HTML_Quickform_select($id, $label, '', $aso_attributs);
126 jpm 255
    $aso_options = array();
754 ddelon 256
    foreach ($liste_site as $ligne ) {
141 jpm 257
        if (!isset($adme_site_id) || $adme_site_id == 0) {
258
            $adme_site_id = $ligne->gs_id_site;
126 jpm 259
        }
141 jpm 260
        if ($ligne->gs_id_site == $adme_site_id) {
132 jpm 261
            $objet_select->addOption(htmlentities($ligne->gs_nom.' ('.$ligne->gs_code_alpha.')'), $ligne->gs_id_site, 'selected="selected"');
251 jpm 262
            // Attribution du nom du site sur lequel on travaille pour le titre
263
            $site_nom = $ligne->gs_nom;
126 jpm 264
        } else {
132 jpm 265
            $objet_select->addOption(htmlentities($ligne->gs_nom.' ('.$ligne->gs_code_alpha.')'), $ligne->gs_id_site);
126 jpm 266
        }
267
    }
268
    $form->addElement($objet_select);
148 jpm 269
    $form->addElement('submit', 'choisir_site', ADME_LG_FORM_SITE_VALIDER);
126 jpm 270
    $partie_site_fin = "\n".'</fieldset>';
271
    $form->addElement('html', $partie_site_fin);
272
 
273
    // Instanciation des valeurs par défaut du formulaire
1017 florian 274
    if (isset($id_site_par_defaut)) {
1330 florian 275
    	if (!isset($_GET['adme_site_id'])) {
1094 florian 276
    		$adme_site_id=$id_site_par_defaut;
277
    	} else {
1330 florian 278
    		$adme_site_id=$_GET['adme_site_id'];
1094 florian 279
    	}
1017 florian 280
    }
281
    $form->setDefaults(array('adme_site_id' => $adme_site_id));
282
 
793 ddelon 283
    $retour ='';
148 jpm 284
    $retour .= '<h1>'.ADME_LG_MENU_TITRE.$site_nom.'</h1>'."\n";
126 jpm 285
    $retour .= $form->toHTML()."\n";
286
 
287
    //---------------------------------------------------------------------------------------------------------------
288
    // Gestion des menus classiques
289
    $retour .= '<p>'."\n";
290
    $objet_pear_url_copie = $objet_pear_url;
166 jpm 291
    $objet_pear_url_copie->addQueryString('adme_action', ADME_LG_ACTION_CLASSIQUE_AJOUTER);
141 jpm 292
    $objet_pear_url_copie->addQueryString('adme_site_id', $adme_site_id);
126 jpm 293
    $objet_pear_url_copie->addQueryString('adme_menu_id', 0);
294
    $url_ajout_menu_classique_n1 = $objet_pear_url_copie->getURL();
832 florian 295
    //unset($url_ajout_menu_n1);
126 jpm 296
    $retour .=    '<a href="'.$url_ajout_menu_classique_n1.'" >'.
148 jpm 297
                            ADME_LG_MENU_CLASSIQUE_RACINE.'&nbsp;'.
126 jpm 298
                            '<img class="'.ADME_CLASS_IMG_ICONE.'" src="'.ADME_IMAGE_NOUVEAU.'" alt="+" />'.
299
                        '</a>'."\n";
300
    $retour .= '</p>'."\n";
301
 
141 jpm 302
    $retour .= ADME_afficherListeMenuClassique($objet_pear_db, $objet_pear_url, $adme_site_id, $adme_menu_id, $adme_action, 0);
126 jpm 303
    //---------------------------------------------------------------------------------------------------------------
304
    // Gestion des menus communs
305
    $retour .=     '<p>'."\n";
306
    $objet_pear_url_copie = $objet_pear_url;
166 jpm 307
    $objet_pear_url_copie->addQueryString('adme_action', ADME_LG_ACTION_COMMUN_AJOUTER);
141 jpm 308
    $objet_pear_url_copie->addQueryString('adme_site_id', $adme_site_id);
126 jpm 309
    $objet_pear_url_copie->addQueryString('adme_menu_id', 0);
310
    $url_ajout_menu_commun_n1 = $objet_pear_url_copie->getURL();
832 florian 311
    //unset($url_ajout_menu_n1);
126 jpm 312
    $retour .=     '<a href="'.$url_ajout_menu_commun_n1.'">'.
148 jpm 313
                            ADME_LG_MENU_COMMUN_RACINE.'&nbsp;'.
126 jpm 314
                            '<img class="'.ADME_CLASS_IMG_ICONE.'" src="'.ADME_IMAGE_NOUVEAU.'" alt="+" />'.
315
                        '</a>'."\n";
316
    $retour .=     '</p>'."\n";
141 jpm 317
    $retour .= ADME_afficherListeMenuCommun($objet_pear_db, $objet_pear_url, $adme_site_id, $adme_menu_id, $adme_action, 0);
126 jpm 318
    return $retour;
319
}
320
// +------------------------------------------------------------------------------------------------------+
321
// |                                            PIED du PROGRAMME                                         |
322
// +------------------------------------------------------------------------------------------------------+
323
 
324
 
325
/* +--Fin du code ----------------------------------------------------------------------------------------+
326
*
327
* $Log: not supported by cvs2svn $
1330 florian 328
* Revision 1.18.2.1  2006/12/01 17:03:09  florian
329
* correction bug changement de sites
330
*
1094 florian 331
* Revision 1.18  2006/10/16 15:49:07  ddelon
332
* Refactorisation code mulitlinguisme et gestion menu invisibles
333
*
1033 ddelon 334
* Revision 1.17  2006/10/06 13:38:45  florian
335
* ergonomie amélioree
336
*
1017 florian 337
* Revision 1.16  2006/04/28 12:41:49  florian
338
* corrections erreurs chemin
339
*
832 florian 340
* Revision 1.15  2006/03/24 13:03:24  ddelon
341
* bug afficheur multilinguisme
342
*
793 ddelon 343
* Revision 1.14  2006/03/23 20:24:59  ddelon
344
* *** empty log message ***
345
*
790 ddelon 346
* Revision 1.13  2006/03/13 21:00:20  ddelon
347
* Suppression messages d'erreur multilinguisme
348
*
767 ddelon 349
* Revision 1.12  2006/03/02 10:49:49  ddelon
350
* Fusion branche multilinguisme dans branche principale
351
*
754 ddelon 352
* Revision 1.11.2.1  2006/02/28 14:02:11  ddelon
353
* Finition multilinguisme
354
*
355
* Revision 1.11  2005/07/18 16:14:32  ddelon
356
* css admin + menu communs
357
*
422 ddelon 358
* Revision 1.10  2005/07/08 21:57:24  ddelon
359
* Copyright
360
*
410 ddelon 361
* Revision 1.9  2005/05/12 16:51:37  alex
362
* Changement de l'odre d'apparition des sites dans l'administration des menus.
363
*
367 alex 364
* Revision 1.8  2005/01/26 16:18:05  jpm
365
* Correction bogue 221 : mauvais réglage du titre.
366
*
251 jpm 367
* Revision 1.7  2004/11/24 11:31:51  jpm
368
* Ajout d'une contante de langue à la place d'un texte.
369
*
166 jpm 370
* Revision 1.6  2004/11/10 17:26:07  jpm
371
* Fin gestion de la traduction.
372
*
150 jpm 373
* Revision 1.5  2004/11/10 11:58:54  jpm
374
* Mise en place des constantes de traduction de l'appli.
375
*
148 jpm 376
* Revision 1.4  2004/11/09 17:48:35  jpm
377
* Gestion de différentes interfaces d'administration.
378
*
141 jpm 379
* Revision 1.3  2004/11/09 12:37:34  jpm
380
* Fin de gestion des menus et mise en conformité avec la convention de codage.
381
*
134 jpm 382
* Revision 1.2  2004/11/08 17:41:07  jpm
383
* Légères corrections : multisite, corrections SQL.
384
*
132 jpm 385
* Revision 1.1  2004/11/04 12:26:42  jpm
386
* Contient les fonctions d'affichage général de l'appli ADME.
126 jpm 387
*
132 jpm 388
*
126 jpm 389
* +-- Fin du code ----------------------------------------------------------------------------------------+
390
*/
391
?>