Changeset 4027
- Timestamp:
- Oct 13, 2009, 9:07:50 AM (15 years ago)
- Location:
- extensions/event_cats
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
extensions/event_cats/admin/autolog_new.inc.php
r4026 r4027 56 56 build_ec_lists(); // in evntcats_funcs.php 57 57 58 $ec_prop_code = ''; 59 $ec_prop_user = '-1'; 60 $ec_prop_act1 = 'create'; 58 $ec_lists['duplicable_codes'] = array(); 59 60 foreach ($ec_lists['ec_table'] as $ec_entry) { 61 if ( 62 is_in($ec_entry['action'], 'ec_ok') and 63 !is_in($ec_entry['action'], '_f_pb') and 64 $ec_entry['forced'] == 'false' 65 ) { 66 $ec_lists['duplicable_codes'][$ec_entry['code']] = $ec_entry['user_id']; 67 } 68 } 69 70 $ec_def_vals = array(); 71 72 $ec_def_vals['code'] = ''; 73 $ec_def_vals['user'] = '-1'; 74 $ec_def_vals['act1'] = 'create'; 75 $ec_def_vals['auto_code_dg_nb'] = read_ec_conf('auto_code_dg_nb'); 61 76 62 77 /***************************************************************************** … … 67 82 if (isset($_POST['ec_entry_sel'])) { 68 83 if (array_key_exists($_POST['ec_entry_sel'], $ec_lists['ec_table'])) { 69 $ec_ prop_code= $ec_lists['ec_table'][$_POST['ec_entry_sel']]['code'];70 $ec_ prop_user= $ec_lists['ec_table'][$_POST['ec_entry_sel']]['user_id'];71 $ec_ prop_act1= $_POST['ec_entry_sel'];84 $ec_def_vals['code'] = $ec_lists['ec_table'][$_POST['ec_entry_sel']]['code']; 85 $ec_def_vals['user'] = $ec_lists['ec_table'][$_POST['ec_entry_sel']]['user_id']; 86 $ec_def_vals['act1'] = $_POST['ec_entry_sel']; 72 87 } 73 88 else { … … 86 101 $template->assign('ec_ap_ok',$ec_ap_ok); 87 102 $template->assign('ec_lists',$ec_lists); 88 $template->assign('ec_prop_code',$ec_prop_code); 89 $template->assign('ec_prop_user',$ec_prop_user); 90 $template->assign('ec_prop_act1',$ec_prop_act1); 103 $template->assign('ec_def_vals',$ec_def_vals); 91 104 92 105 ?> -
extensions/event_cats/admin/evntcats_admin.php
r4026 r4027 67 67 EVNTCATS_PATH.'admin/evntcats_theme.css">' 68 68 ); 69 70 if ( 71 isset($_POST['ec_in_up_auto_code_length']) and 72 $_POST['ec_in_up_auto_code_length'] != read_ec_conf('auto_code_dg_nb') 73 ) change_ec_conf('auto_code_dg_nb', $_POST['ec_in_up_auto_code_length']); 69 74 70 75 // +-----------------------------------------------------------------------+ -
extensions/event_cats/admin/template/autolog_new.js
r4026 r4027 10 10 var ec_old_new_psd_text = ''; 11 11 var ec_test_reg = ''; 12 var ec_prop_code = ''; 13 var ec_prop_user = ''; 14 var ec_prop_act1 = ''; 12 var ec_auto_code_digits_nb = ''; 15 13 var ec_selected_old_user = '-1'; 14 var ec_selected_old_code = '-1'; 16 15 var ec_selected_AP = '-1'; 17 16 var ec_selected_cat = '-1'; 18 17 var ec_selected_user = 'ec_sel_user_old'; 18 var ec_selected_code = 'ec_sel_code_new'; 19 19 var ec_JS_message = new Array(); 20 var ec_auto_code_digits_default = 21 document.getElementById('ec_in_up_auto_code_length_id').value; 22 var ec_auto_code_digits_nb = ec_auto_code_digits_default; 20 var ec_def_vals = new Array(); 21 22 function ec_mark_code(ec_id) { 23 if ( 24 !(document.getElementById('ec_sel_code_old').disabled == 'disabled' || 25 document.getElementById('ec_sel_code_old').disabled == true) 26 ) { 27 ec_selected_code = ec_id; 28 document.getElementById(ec_selected_code).checked = 'checked'; 29 switch (ec_selected_code) { 30 case 'ec_sel_code_new': 31 document.getElementById('ec_in_up_code_list_id').value = '-1'; 32 document.getElementById('ec_in_up_code_id').value = ec_new_code_text; 33 break; 34 case 'ec_sel_code_old': 35 document.getElementById('ec_in_up_code_list_id').value = 36 ec_selected_old_code; 37 document.getElementById('ec_in_up_code_id').value = ''; 38 break; 39 } 40 } 41 } 23 42 24 43 function ec_mark_user(ec_id) { … … 161 180 ec_new_code_text = t; 162 181 } 163 document.getElementById('ec_in_up_code_id').value = ec_new_code_text;182 ec_mark_code('ec_sel_code_new'); 164 183 } 165 184 … … 252 271 } 253 272 273 function ec_check_code_text() { 274 var t = document.getElementById('ec_in_up_code_id').value; 275 var treg = /^[a-zA-Z0-9_-]{4,32}$/ 276 if (t == '' || treg.test(t)) { 277 ec_new_code_text = t; 278 } 279 else { 280 alert(ec_JS_message['ec_submit_code_bad']); 281 ec_new_code_text = ''; 282 document.getElementById('ec_in_up_code_id').value = ''; 283 } 284 } 285 254 286 function ec_check_submit() { 255 if (document.getElementById('ec_in_up_code_id').value == '') { 287 if (( 288 document.getElementById('ec_sel_code_new').checked != '' && 289 document.getElementById('ec_in_up_code_id').value == '' 290 ) || ( 291 document.getElementById('ec_sel_code_old').checked != '' && 292 document.getElementById('ec_in_up_code_list_id').value == '-1' 293 ) 294 ) { 256 295 alert(ec_JS_message['ec_submit_code_miss']); 257 296 return false; … … 292 331 293 332 function ec_init() { 294 var t = (ec_ prop_code== '') ? '' : 'disabled';333 var t = (ec_def_vals['code'] == '') ? '' : 'disabled'; 295 334 ec_err = ''; 296 335 ec_selected_user = 'ec_sel_user_old'; 336 ec_selected_code = 'ec_sel_code_new'; 297 337 ec_selected_old_user = '-1'; 338 ec_selected_old_code = '-1'; 298 339 ec_selected_AP = '-1'; 299 340 ec_selected_cat = '-1'; … … 305 346 ec_old_new_psd_text = ''; 306 347 ec_test_reg = ''; 307 document.getElementById('ec_act1_id').value = ec_ prop_act1;348 document.getElementById('ec_act1_id').value = ec_def_vals['act1']; 308 349 document.getElementById('ec_in_up_pwd_warn').innerHTML = ''; 350 document.getElementById('ec_sel_code_old').checked = 'checked'; 351 document.getElementById('ec_sel_code_old').checked = 352 (ec_def_vals['code'] == '') ? '' : 'checked'; 309 353 document.getElementById('ec_sel_user_old').checked = 'checked'; 310 354 document.getElementById('ec_sel_user_old').checked = 311 (ec_ prop_user== '-1') ? '' : 'checked';355 (ec_def_vals['user'] == '-1') ? '' : 'checked'; 312 356 document.getElementById('ec_input_action_home').checked = 'checked'; 313 357 document.getElementById('ec_input_action_home').checked = ''; 314 358 document.getElementById('ec_in_up_usr_txt_id').value = ''; 315 359 document.getElementById('ec_in_up_psd_txt_id').value = ''; 316 document.getElementById('ec_in_up_usr_list_id').value = ec_ prop_user;317 document.getElementById('ec_in_up_code_id').value = ec_ prop_code;360 document.getElementById('ec_in_up_usr_list_id').value = ec_def_vals['user']; 361 document.getElementById('ec_in_up_code_id').value = ec_def_vals['code']; 318 362 document.getElementById('ec_in_up_aps_id').value = '-1'; 319 363 document.getElementById('ec_in_up_cats_id').value = '-1'; 320 364 document.getElementById('ec_in_up_imgs_id').value = ''; 365 document.getElementById('ec_in_up_auto_code_length_id').value = 366 ec_auto_code_digits_nb; 321 367 document.getElementById('ec_submit_gen_full_auto_id').disabled = t; 322 368 document.getElementById('ec_in_up_code_id').disabled = t; … … 329 375 document.getElementById('ec_sel_user_old').disabled = t; 330 376 document.getElementById('ec_in_up_usr_list_id').disabled = t; 331 ec_ prop_code= '';332 ec_ prop_user= '-1';333 ec_ prop_act1= 'create';334 } 377 ec_def_vals['code'] = ''; 378 ec_def_vals['user'] = '-1'; 379 ec_def_vals['act1'] = 'create'; 380 } -
extensions/event_cats/admin/template/autolog_new.tpl
r4026 r4027 51 51 <input class = "submit" type = "button" name = "ec_submit_gen_full_auto" value = "{'ec_new_full_auto'|@translate}" 52 52 id = "ec_submit_gen_full_auto_id" onclick = "ec_gen_full_auto();" style = "margin-top:0;"/> 53 </div> 53 </div><br> 54 54 55 <table style = "border-spacing: 30px" width = "97%">55 <table style = "border-spacing:15px" width = "97%"> 56 56 57 57 {* <!-- Code selection --> *} 58 58 <tr> 59 <td ><strong>{'ec_new_entry'|@translate}</strong></td>59 <td style = "vertical-align:top;"><strong>{'ec_new_entry'|@translate}</strong></td> 60 60 <td> 61 <input type = "text" name = "ec_in_up_code" maxlength = "32" size = "40" 62 id = "ec_in_up_code_id" onblur = "ec_new_code_text = this.value;" 63 /> 64 65 <label for = "ec_in_up_code_id" style = "margin:0;"> 66 <input class = "submit" type = "button" name = "ec_submit_gen_code" value = "{'ec_new_entry_button'|@translate}" 67 id = "ec_submit_gen_code_id" onclick = "ec_gen_code();" style = "margin:0;" 68 /> 69 </label> 70 {'ec_gen_code_nb_pre'|@translate} 71 <select {* name = "ec_in_up_auto_code_length" *} id = "ec_in_up_auto_code_length_id" onchange = "ec_auto_code_digits_nb = this.value;"> 72 <option value = "4">4</option> 73 <option value = "5">5</option> 74 <option value = "8">8</option> 75 <option value = "10" selected = "selected">10</option> 76 <option value = "12">12</option> 77 <option value = "15">15</option> 78 <option value = "16">16</option> 79 <option value = "20">20</option> 80 <option value = "24">24</option> 81 <option value = "25">25</option> 82 <option value = "30">30</option> 83 <option value = "32">32{'ec_gen_code_nb_max'|@translate}</option> 84 </select> 85 {'ec_gen_code_nb_end'|@translate} 61 <li> 62 {* <!-- New code (to create) --> *} 63 <label for = "ec_in_up_code_id" onclick = "ec_mark_code('ec_sel_code_new');"> 64 <input type = "radio" name = "ec_sel_code" for = "ec_in_up_code_id" value = "new" 65 id = "ec_sel_code_new" onclick = "ec_mark_code('ec_sel_code_new');" 66 /> 67 {'ec_up_code_lbl_code_new'|@translate} 68 </label> 69 70 <label for = "ec_in_up_code_id" style = "margin:0;"> 71 <input class = "submit" type = "button" name = "ec_submit_gen_code" value = "{'ec_new_entry_button'|@translate}" 72 id = "ec_submit_gen_code_id" onclick = "ec_gen_code();" style = "margin:0;" 73 /> 74 </label> 75 {'ec_gen_code_nb_pre'|@translate} 76 <select name = "ec_in_up_auto_code_length" id = "ec_in_up_auto_code_length_id" onchange = "ec_auto_code_digits_nb = this.value;"> 77 <option value = "4">4</option> 78 <option value = "5">5</option> 79 <option value = "8">8</option> 80 <option value = "10">10</option> 81 <option value = "12">12</option> 82 <option value = "15">15</option> 83 <option value = "16">16</option> 84 <option value = "20">20</option> 85 <option value = "24">24</option> 86 <option value = "25">25</option> 87 <option value = "30">30</option> 88 <option value = "32">32{'ec_gen_code_nb_max'|@translate}</option> 89 </select> 90 {'ec_gen_code_nb_end'|@translate}<br> 91 <ul><li> 92 <input type = "text" name = "ec_in_up_code" maxlength = "32" size = "40" 93 id = "ec_in_up_code_id" onblur = "ec_check_code_text();" 94 /> 95 </li></ul> 96 </li> 97 98 <li> 99 {* <!-- Known code --> *} 100 <label for = "ec_in_up_code_list_id" onclick = "ec_mark_code('ec_sel_code_old');"> 101 <input type = "radio" name = "ec_sel_code" for = "ec_in_up_code_list_id" 102 value = "old" id = "ec_sel_code_old" onclick = "ec_mark_code('ec_sel_code_old');" 103 /> 104 {'ec_up_code_lbl_code_old'|@translate} 105 </label> 106 <select name = "ec_in_up_code_list" id = "ec_in_up_code_list_id" onclick = "ec_mark_code('ec_sel_code_old');" 107 onchange = "ec_selected_old_code = this.value;" 108 > 109 <option label = "------------" value = "-1" id = "ec_old_code_-1">------------</option> 110 {foreach from=$ec_lists.duplicable_codes key=ec_key item=ec_val} 111 <option label = "{$ec_val}" value = "{$ec_key}" id = "ec_old_code_{$ec_key}">{$ec_key}</option> 112 {/foreach} 113 </select><br> 114 </li> 86 115 </td> 87 116 </tr> … … 91 120 <td style = "vertical-align:top;"><strong>{'ec_up_code_lbl_user'|@translate}</strong></td> 92 121 <td> 93 <li>94 {* <!-- New user (to create) --> *}95 <label for = "ec_in_up_usr_txt_id" onclick = "ec_mark_user('ec_sel_user_new');">96 <input type = "radio" name = "ec_sel_user" for = "ec_in_up_usr_txt_id" value = "new"97 id = "ec_sel_user_new" onclick = "ec_mark_user('ec_sel_user_new');"98 />99 {'ec_up_code_lbl_user_new'|@translate}100 </label>101 102 <input class = "submit" type = "button" name = "ec_submit_gen_user" value = "{'ec_up_code_lbl_gen_user'|@translate}"103 id = "ec_submit_gen_user_id" onclick = "ec_gen_user();"104 /><br>105 <ul><li>106 <label class = "ec_block">{'ec_new_user_name'|@translate}<br>107 <input type = "text" name = "ec_in_up_usr_txt" id = "ec_in_up_usr_txt_id" maxlength = "32"108 size = "20" onclick = "ec_mark_user('ec_sel_user_new');" onblur = "ec_new_user_text = this.value;"109 />110 </label>111 <label class = "ec_block">{'ec_new_user_pswd'|@translate}<br>112 <input type = "text" name = "ec_in_up_psd_txt" id = "ec_in_up_psd_txt_id" maxlength = "32"113 size = "20" onclick = "ec_mark_user('ec_sel_user_new');" onblur = "ec_new_psd_text = this.value; ec_check_pwd_text();"114 />115 </label>116 <label class = "ec_block"> <br>117 <span style = "font-weight:bold; color:red;" id = "ec_in_up_pwd_warn"> </span>118 </label>119 120 </li></ul><br>121 </li>122 123 <li>124 {* <!-- Known user --> *}125 <label for = "ec_in_up_usr_list_id" onclick = "ec_mark_user('ec_sel_user_old');">126 <input type = "radio" name = "ec_sel_user" for = "ec_in_up_usr_list_id"127 value = "old" id = "ec_sel_user_old" onclick = "ec_mark_user('ec_sel_user_old');"128 />129 {'ec_up_code_lbl_user_old'|@translate}130 </label>131 <select name = "ec_in_up_usr_list" id = "ec_in_up_usr_list_id" onclick = "ec_mark_user('ec_sel_user_old');"132 onchange = "ec_selected_old_user = this.value;"133 >134 <option label = "------------" value = "-1" id = "ec_old_user_-1">------------</option>135 {foreach from=$ec_lists.user_ids key=ec_key item=ec_val name=opt_loop}136 <option label = "{$ec_val}" value = "{$ec_key}" id = "ec_old_user_{$ec_key}">{$ec_val}</option>137 {/foreach}138 </select><br>139 </li>122 <li> 123 {* <!-- New user (to create) --> *} 124 <label for = "ec_in_up_usr_txt_id" onclick = "ec_mark_user('ec_sel_user_new');"> 125 <input type = "radio" name = "ec_sel_user" for = "ec_in_up_usr_txt_id" value = "new" 126 id = "ec_sel_user_new" onclick = "ec_mark_user('ec_sel_user_new');" 127 /> 128 {'ec_up_code_lbl_user_new'|@translate} 129 </label> 130 131 <input class = "submit" type = "button" name = "ec_submit_gen_user" value = "{'ec_up_code_lbl_gen_user'|@translate}" 132 id = "ec_submit_gen_user_id" onclick = "ec_gen_user();" 133 /><br> 134 <ul><li> 135 <label class = "ec_block">{'ec_new_user_name'|@translate}<br> 136 <input type = "text" name = "ec_in_up_usr_txt" id = "ec_in_up_usr_txt_id" maxlength = "32" 137 size = "20" onclick = "ec_mark_user('ec_sel_user_new');" onblur = "ec_new_user_text = this.value;" 138 /> 139 </label> 140 <label class = "ec_block">{'ec_new_user_pswd'|@translate}<br> 141 <input type = "text" name = "ec_in_up_psd_txt" id = "ec_in_up_psd_txt_id" maxlength = "32" 142 size = "20" onclick = "ec_mark_user('ec_sel_user_new');" onblur = "ec_new_psd_text = this.value; ec_check_pwd_text();" 143 /> 144 </label> 145 <label class = "ec_block"> <br> 146 <span style = "font-weight:bold; color:red;" id = "ec_in_up_pwd_warn"> </span> 147 </label> 148 149 </li></ul><br> 150 </li> 151 152 <li> 153 {* <!-- Known user --> *} 154 <label for = "ec_in_up_usr_list_id" onclick = "ec_mark_user('ec_sel_user_old');"> 155 <input type = "radio" name = "ec_sel_user" for = "ec_in_up_usr_list_id" 156 value = "old" id = "ec_sel_user_old" onclick = "ec_mark_user('ec_sel_user_old');" 157 /> 158 {'ec_up_code_lbl_user_old'|@translate} 159 </label> 160 <select name = "ec_in_up_usr_list" id = "ec_in_up_usr_list_id" onclick = "ec_mark_user('ec_sel_user_old');" 161 onchange = "ec_selected_old_user = this.value;" 162 > 163 <option label = "------------" value = "-1" id = "ec_old_user_-1">------------</option> 164 {foreach from=$ec_lists.user_ids key=ec_key item=ec_val} 165 <option label = "{$ec_val}" value = "{$ec_key}" id = "ec_old_user_{$ec_key}">{$ec_val}</option> 166 {/foreach} 167 </select><br> 168 </li> 140 169 </td> 141 170 </tr> … … 215 244 ec_JS_message['ec_submit_user_miss'] = "{'ec_submit_user_miss'|@translate}"; 216 245 ec_JS_message['ec_submit_action_miss'] = "{'ec_submit_action_miss'|@translate}"; 217 ec_prop_code = "{$ec_prop_code}"; 218 ec_prop_user = "{$ec_prop_user}"; 219 ec_prop_act1 = "{$ec_prop_act1}"; 246 ec_JS_message['ec_submit_code_bad'] = "{'ec_submit_code_bad'|@translate}"; 247 ec_def_vals['code'] = "{$ec_def_vals.code}"; 248 ec_def_vals['user'] = "{$ec_def_vals.user}"; 249 ec_def_vals['act1'] = "{$ec_def_vals.act1}"; 250 ec_auto_code_digits_nb = "{$ec_def_vals.auto_code_dg_nb}"; 220 251 ec_init(); 221 252 //--></script> -
extensions/event_cats/include/ec_conf.inc.php
r3999 r4027 25 25 /***************************************************************************** 26 26 Parameters ($ec_conf) : 27 _ plugin activated ($ec_conf[0] ) yes/no ;28 _ duplication allowance ($ec_conf[1] ) :27 _ plugin activated ($ec_conf[0] <=> read_ec_conf('activated')) yes/no ; 28 _ duplication allowance ($ec_conf[1] <=> read_ec_conf('dup_allow')) : 29 29 0 : no account ; 30 30 1 : all accounts ; 31 31 2 : no account but those specified ; \ 32 3 : all accounts but those specified. | could be different finally 32 3 : all accounts but those specified ; | could be different finally 33 _ the number of digits when creating a new code automatically 34 ($ec_conf[2] <=> read_ec_conf('auto_code_dg_nb')) ; 33 35 _ what to do in case an unknown code is used with "autolog" parameter 34 ($ec_conf[ 2]) :36 ($ec_conf[3] <=> read_ec_conf('unknown_code')) : 35 37 0 : nothing ("goto" home page, index.php (not logged in of course)) ; 36 38 1 : redirected to "access denied" page ; 37 39 2 : redirected to an Additional Page precised below. 38 40 _ the id of the Additional Page which must be used in case of usage of an 39 unknow code ($ec_conf[ 3]).41 unknow code ($ec_conf[4] <=> read_ec_conf('unknown_code_ap_id')). 40 42 *****************************************************************************/ 41 43 … … 51 53 } 52 54 else { 53 $ec_conf = explode(',' , '0,1, 0,0');55 $ec_conf = explode(',' , '0,1,10,0,0'); 54 56 change_ec_conf('activated', 0); 55 57 } … … 70 72 switch ($c) { 71 73 case 'activated': 72 $ d = 0;74 $ec_conf[0] = $v; 73 75 break; 74 76 case 'dup_allow': 75 $d = 1; 77 $ec_conf[1] = $v; 78 break; 79 case 'auto_code_dg_nb': 80 $ec_conf[2] = $v; 76 81 break; 77 82 case 'unknown_code': 78 $ d = 2;83 $ec_conf[3] = $v; 79 84 break; 80 85 case 'unknown_code_ap_id': 81 $ d = 3;86 $ec_conf[4] = $v; 82 87 break; 83 88 default: return false; 84 89 } 85 $ec_conf[$d] = $v;86 90 return pwg_query(" 87 91 UPDATE `".CONFIG_TABLE."` … … 105 109 case 'activated' : return $ec_conf[0]; 106 110 case 'dup_allow' : return $ec_conf[1]; 107 case 'unknown_code' : return $ec_conf[2]; 108 case 'unknown_code_ap_id': return $ec_conf[3]; 111 case 'auto_code_dg_nb' : return $ec_conf[2]; 112 case 'unknown_code' : return $ec_conf[3]; 113 case 'unknown_code_ap_id': return $ec_conf[4]; 109 114 default : return false; 110 115 } -
extensions/event_cats/language/fr_FR/plugin.lang.php
r4026 r4027 41 41 $lang['ec_new_full_auto'] = 'Tout automatique : nouveau code et nouvel utilisateur d\'après page à afficher ci-dessous'; 42 42 $lang['ec_new_entry'] = 'Code'; 43 $lang['ec_up_code_lbl_code_new'] = 'Nouveau code :'; 43 44 $lang['ec_new_entry_button'] = 'Générer un code automatiquement'; 44 45 $lang['ec_gen_code_nb_pre'] = 'de'; 45 46 $lang['ec_gen_code_nb_max'] = ' (max)'; 46 47 $lang['ec_gen_code_nb_end'] = 'caractères'; 48 $lang['ec_up_code_lbl_code_old'] = 'Code existant :'; 47 49 $lang['ec_up_code_lbl_user'] = 'Utilisateur identifié'; 48 $lang['ec_up_code_lbl_user_new'] = 'Nouvel utilisateur :';50 $lang['ec_up_code_lbl_user_new'] = 'Nouvel utilisateur (créer un compte générique) :'; 49 51 $lang['ec_new_user_name'] = 'Nom d\'utilisateur'; 50 52 $lang['ec_new_user_pswd'] = 'Mot de passe'; … … 66 68 $lang['ec_new_pwd_gen'] = 'Pensez à NOTER le mot de passe !'; 67 69 $lang['ec_submit_code_miss'] = 'Vous devez fournir un code.'; 70 $lang['ec_submit_code_bad'] = 'Un code doit comprendre entre 4 et 32 caractères inclus dans [a-zA-Z0-9_-].'; 68 71 $lang['ec_submit_user_miss'] = 'Vous devez fournir un utilisateur.'; 69 72 $lang['ec_submit_action_miss'] = 'Vous devez proposer une page à afficher.';
Note: See TracChangeset
for help on using the changeset viewer.