/[openfoncier]/trunk/app/consultation_multiple.php
ViewVC logotype

Contents of /trunk/app/consultation_multiple.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1360 - (show annotations)
Mon Mar 11 15:28:07 2013 UTC (11 years, 10 months ago) by fmichon
File size: 27305 byte(s)
Mise au carré des éditions + Suppression de surcharges inutiles depuis la mise à niveau openmairie-exemple

1 <?php
2 /**
3 * Script personnalisé pour les consultations multiples.
4 *
5 * @package openfoncier
6 * @version SVN : $Id$
7 */
8
9 require_once "../obj/utils.class.php";
10
11 // Identifiant de l'objet metier a copier
12 (isset($_GET['idx']) ? $idx = $_GET['idx'] : $idx = "");
13 // Nom de l'objet metier
14 (isset($_GET['obj']) ? $obj = $_GET['obj'] : $obj = "");
15 //formulaire retour
16 (isset($_GET['ret']) ? $retourformulaire = $_GET['ret'] : $retourformulaire = "");
17 (isset($_GET['date_envoi']) ? $date_envoi = $_GET['date_envoi'] : $date_envoi = "");
18
19 $f = new utils("nohtml");
20
21 $liste_gauche = "";
22
23 if ( isset($_GET) && isset($_GET['data']) && !empty($_GET['data']) ){
24 $f->disableLog();
25 /*Récupération des données et formatage.*/
26 $donnees_temp = explode(';', $_GET['data']);
27 for ( $i = 1 ; $i < count($donnees_temp) ; $i++ )
28 $donnees[] = explode('_', $donnees_temp[$i]);
29
30 /* Nombre de consultations papier à générer */
31 $nbConsPap = 0;
32
33 /* Ajout des données en base de données
34 * 0 : l'ID du service
35 * 1 : consultation papier {0,1}
36 * */
37 if ( isset($donnees) && count($donnees) > 0 ){
38
39 require_once "../core/om_dbform.class.php";
40 $om_dbform = new dbForm();
41 require_once "../obj/consultation.class.php";
42 $consultation = new consultation("]",$f->db,DEBUG);
43
44 foreach ($donnees as $value) {
45
46 $sql = "SELECT delai, type_consultation FROM ".DB_PREFIXE."service WHERE service = $value[0]";
47 $res = $f->db->query($sql);
48 $f->isDatabaseError($res);
49 $row=& $res->fetchRow();
50 $delai = $row[0];
51 $type_consultation = $row[1];
52
53 /*Calcul du delai de retour*/
54 $date_envoi_temp = $om_dbform->datePHP($date_envoi);
55 $delai = $om_dbform->dateDB($consultation->moisdate($date_envoi_temp, $delai));
56
57 /*Les données à ajouter*/
58 $arrayVal = array(
59 'consultation' => "]",
60 'dossier' => $idx,
61 'date_envoi' => $date_envoi,
62 'date_retour' => NULL,
63 'date_limite' => $delai,
64 'service' => $value[0],
65 'avis_consultation' => NULL,
66 'date_reception' => NULL,
67 'motivation' => "",
68 'fichier' => NULL,
69 'lu' => TRUE
70 );
71
72 $consultation->ajouter($arrayVal, $f->db, DEBUG);
73
74 /*Comptage du nombre de consultations papier demandées et récupération des ids des PDFs à éditer*/
75 if ($value[1]==1){
76 $idxConsultations[] = $consultation->valF['consultation'];
77 $objConsultations[] = $type_consultation;
78 $nbConsPap++;
79 }
80 }
81
82 /*Génération du PDF*/
83 if ( isset($idxConsultations) && count($idxConsultations) > 0 ){
84
85 $textIdsConsultations = "idx=";
86 foreach ($idxConsultations as $value) {
87 $textIdsConsultations .= $value.";";
88 }
89 $textObjConsultations = "obj=";
90 foreach ($objConsultations as $value) {
91 $textObjConsultations .= "consultation_".$value.";";
92 }
93 echo "
94 <script language='javascript' type='text/javascript'>
95 $.download('../pdf/pdfetat.php?output=download','".$textObjConsultations."&".$textIdsConsultations."', 'POST', 'consultation_avec_avis_attendu');
96 </script>
97 ";
98 }
99 /*Affichage du message d'information*/
100 $f->displayMessage("valid", count($donnees)._(' service(s) selectionne(s) dont ').$nbConsPap._(' consultation(s) papier.'));
101 }
102
103 }
104 else {
105 /*Requête qui récupère les services qui sont dans des thématiques*/
106 $sql =
107 "SELECT
108 ser_cat.service_categorie, ser_cat.libelle AS them_lib,
109 ser.service, ser.libelle AS ser_lib, ser.consultation_papier
110 FROM
111 ".DB_PREFIXE."lien_service_service_categorie lie,
112 ".DB_PREFIXE."service_categorie ser_cat,
113 ".DB_PREFIXE."service ser
114 WHERE
115 ser_cat.service_categorie = lie.service_categorie AND
116 ser.service = lie.service AND
117 (
118 (ser.om_validite_debut IS NULL
119 AND (ser.om_validite_fin IS NULL
120 OR ser.om_validite_fin > CURRENT_DATE))
121 OR
122 (ser.om_validite_debut <= CURRENT_DATE
123 AND (ser.om_validite_fin IS NULL
124 OR ser.om_validite_fin > CURRENT_DATE))
125 )
126 ORDER BY them_lib, ser_lib
127 ";
128
129 $res = $f->db->query($sql);
130 $f->addToLog("app/consultation_multiple.php: db->query(\"".$sql."\")", VERBOSE_MODE);
131 $f->isDatabaseError($res);
132
133 $temp_ser_cat = 0;
134 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
135 $name = $row['service_categorie'].'_'.
136 $row['service'].'_'.
137 (($row['consultation_papier'] == '' || $row['consultation_papier'] == 'f' ) ? '0' : '1' ).'_';
138 /*On change de thématique, donc rajoute le nom de la thématique*/
139 if ( $temp_ser_cat != $row['service_categorie'] ){
140
141 $temp_ser_cat = $row['service_categorie'];
142 $liste_gauche .= '
143 <div id="them_'.$row['service_categorie'].'" class="liste_gauche_them" >'.
144 $row['them_lib'].
145 '</div>
146 <div
147 class="liste_gauche_service t'.$name.'"
148 id="t'.$name.'" >
149 '.$row['ser_lib'].'
150 <input class="t'.$name.'" type="checkbox" '.(($row['consultation_papier'] == '' || $row['consultation_papier'] == 'f' ) ? '' : 'checked="checked"' ).'/>
151 </div>
152 ';
153 }
154
155 /*On est dans la même thématique*/
156 else {
157
158 $liste_gauche .= '
159 <div
160 class="liste_gauche_service t'.$name.'"
161 id="t'.$name.'" >
162 '.$row['ser_lib'].'
163 <input class="t'.$name.'" type="checkbox" '.(($row['consultation_papier'] == '' || $row['consultation_papier'] == 'f' ) ? '' : 'checked="checked"' ).'/>
164 </div>
165 ';
166 }
167
168 }
169
170 /*Requête qui récupère les services qui ne sont pas dans une thématique*/
171 $sql =
172 "SELECT service, libelle, consultation_papier
173 FROM ".DB_PREFIXE."service
174 WHERE service NOT IN
175 (
176 SELECT service
177 FROM ".DB_PREFIXE."lien_service_service_categorie
178 )
179 AND
180 (
181 om_validite_fin <= CURRENT_DATE OR
182 om_validite_fin IS NULL
183 )
184 ";
185
186 $res = $f->db->query($sql);
187 $f->isDatabaseError($res);
188
189 if ( $res->numrows() > 0 )
190 $liste_gauche .= '
191 <div id="them_0" class="liste_gauche_them">Autres</div>';
192
193 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
194
195 /*Ajout de tous les services qui n'ont pas de thématique*/
196 $name = '0_'.
197 $row['service'].'_'.
198 (($row['consultation_papier'] == '' || $row['consultation_papier'] == 'f' ) ? '0' : '1' ).'_';
199 $liste_gauche .= '
200 <div
201 class="liste_gauche_service t'.$name.'"
202 id="t'.$name.'" >
203 '.$row['libelle'].'&nbsp;
204 <input class="t'.$name.'" type="checkbox" '.(($row['consultation_papier'] == '' || $row['consultation_papier'] == 'f' ) ? '' : 'checked="checked"' ).'/>
205 </div>
206 ';
207 }
208
209 /*Affichage du formulaire*/
210 echo '<div class="subtitle">';
211 echo '<h3>';
212 echo _("Application");
213 echo '<span class="om-icon om-icon-16 om-icon-fix arrow-right-16"></span>';
214 echo _("consultation");
215 echo '</h3>';
216 echo '</div>';
217 echo '<div class="sformulaire">';
218 echo '<form onsubmit="ajaxIt(\'consultation\', \'../app/consultation_multiple.php\');return false;"
219 method="get" action="" name="f2" id="form_val">';
220 echo '<div class="formEntete ui-corner-all">';
221 echo "<div>";
222 echo '<div class="bloc">';
223 echo "<fieldset class='cadre ui-corner-all ui-widget-content'>\n";
224 echo "\t<legend class='ui-corner-all ui-widget-content ui-state-active'>".
225 _("Consultation par thematique ")."</legend>";
226 echo "<div class='fieldsetContent' style='width:100%'>";
227 echo '<div class="field-ser-them field-type-hiddenstatic">';
228 echo '<div class="form-libelle">';
229 echo '<label class="libelle-dossier" for="dossier">';
230 echo _('dossier');
231 echo '<span class="not-null-tag">*</span>';
232 echo '</label>';
233 echo '</div>';
234 echo '<div class="form-content">';
235 echo '<input class="champFormulaire" type="hidden" value="'.$idx.'" name="dossier"/>';
236 echo $idx;
237 echo '</div>';
238 echo '</div>';
239 /*Code du nouveau champ*/
240 echo '<div class="field-ser-them ser-them">';
241 echo '<div class="list-ser-them">';
242 echo $liste_gauche;
243 echo '</div>';
244 echo '<div class="button-ser-them">';
245 echo '<ul>';
246 echo '<li>';
247 echo '<input type="button" value="'._("Ajouter").' >>" id="add-ser-them"/>';
248 echo '</li>';
249 echo '<li>';
250 echo '<input type="button" value="<< '._("Supprimer").'" id="del-ser-them"/>';
251 echo '</li>';
252 echo '</ul>';
253 echo '</div>';
254 echo '<div class="list-sel-ser-them">';
255 echo '<div class=\'row\'>';
256 echo '<div class=\'cell1 liste_droite_title list-sel-ser-them-title\'>'._('Service a consulter').'</div>';
257 echo '<div class=\'cell2 liste_droite_title list-sel-ser-them-title\'>'._('Version papier').'</div>';
258 echo '</div>';
259 echo '</div>';
260 echo '</div>';
261 /* -- FIN --*/
262 echo '<div class="field-ser-them field-type-date2">';
263 echo '<div class="form-libelle">';
264 echo '<label class="libelle-date_envoi" for="date_envoi">';
265 echo _('date_envoi');
266 echo '<span class="not-null-tag">*</span>';
267 echo '</label>';
268 echo '</div>';
269 echo '<div class="form-content">';
270 echo '<input id="date_envoi" class="champFormulaire datepicker"
271 type="text" onkeyup="" onchange="fdate(this)"
272 maxlength="10" size="12" value="'.date("d/m/Y").'"
273 name="date_envoi">';
274 echo '</div>';
275 echo '</div>';
276 echo "</div>";
277 echo "</fieldset>";
278 echo '</div>';
279 echo '</div>';
280 echo '</div>';
281 echo '<div class="formControls">';
282 echo '<input class="om-button ui-button ui-widget ui-state-default ui-corner-all"
283 type="button" onclick="if ( $(\'.liste_gauche_service_selected\').length > 0 && $(\'#date_envoi\').val() != \'\' ) { ajaxIt(\'consultation\', \'../app/consultation_multiple.php\'); } else alert(\'Veuillez choisir au moins un service et une date d envoi\');"
284 value="Ajouter le(s) enregistrement(s) de la table : \'Consultation\'"
285 id="button_val">';
286 echo '<a class="retour" onclick="ajaxIt(\'consultation\', \'../scr/soustab.php?obj='.$obj.'&retourformulaire='.$retourformulaire.'&idxformulaire='.$idx.'&premier=0&tricol=\');"
287 href="#">';
288 echo 'Retour';
289 echo '</a>';
290 echo '</div>';
291 echo '</form>';
292 echo '</div>';
293
294 echo "
295 <script language='javascript' type='text/javascript'>
296 $(function(){
297
298 /*
299 Sélectionne tous les services d'un thème au clique sur celui ci.
300 */
301 $('.liste_gauche_them').click(
302 function(){
303
304 var id = $(this).attr('id').split('_')[1];
305 var numSer = 0;
306 var numSerWithClass = 0;
307
308 $('.list-ser-them div').each(
309 function() {
310
311 if ( $(this).attr('id').indexOf('them') == -1 &&
312 $(this).attr('id').indexOf(id) == 1 &&
313 $(this).hasClass('liste_gauche_service_selected') )
314
315 numSerWithClass++;
316
317 if ( $(this).attr('id').indexOf('them') == -1 &&
318 $(this).attr('id').indexOf(id) == 1 )
319
320 numSer++;
321 }
322 );
323
324 if ( numSerWithClass < numSer && numSerWithClass >= 0 ){
325
326 $('.list-ser-them div').each(
327 function() {
328
329 if ( $(this).attr('id').indexOf('them') == -1 &&
330 $(this).attr('id').indexOf(id) == 1 &&
331 !$(this).hasClass('liste_gauche_service_selected') )
332
333 $(this).addClass('liste_gauche_service_selected');
334 }
335 );
336 }
337
338 else {
339
340 $('.list-ser-them div').each(
341 function() {
342
343 if ( $(this).attr('id').indexOf('them') == -1 &&
344 $(this).attr('id').indexOf(id) == 1 &&
345 $(this).hasClass('liste_gauche_service_selected') )
346
347 $(this).removeClass('liste_gauche_service_selected');
348 }
349 );
350 }
351 }
352 );
353
354 /*
355 Change la class CSS d'un service sur lequel on clique dans la liste de gauche.
356 */
357 $('.liste_gauche_service').click(
358 function(){
359 $(this).toggleClass('liste_gauche_service_selected');
360 }
361 );
362
363 /*
364 Change la class CSS d'un service sur lequel on clique dans la liste de droite.
365 */
366 $('.field-ser-them').on(
367 'click',
368 '.cell1',
369 function(){
370 if ( !$(this).hasClass('liste_droite_title') )
371 $(this).parent().toggleClass('liste_droite_service_selected');
372 }
373 );
374
375 $('.liste_droite_service input[type=checkbox]').live(
376 'click',
377 'input[type=checkbox]',
378 function(){
379
380 old_id = $(this).attr('class');
381
382 tab_don = old_id.split('_');
383
384 new_id = tab_don[0] + '_' + tab_don[1] + '_' + ((tab_don[2] == 0 ) ? 1 : 0 ) + '_';
385
386 changeOneData( ';' + tab_don[1] + '_' + tab_don[2], ';' + tab_don[1] + '_' + ((tab_don[2] == 0) ? 1 : 0) );
387 $('div[class=\"' + old_id + '\"]').attr('class', new_id);
388 $(this).attr('class', new_id);
389
390 }
391 );
392
393 $('#date_envoi').change(
394 function (){
395
396 var listServ = new Array();
397 var data = '';
398
399 $('.liste_gauche_service_selected').each(
400 function(i) {
401
402 var name = $(this).attr('name');
403
404 if ( listServ.length > 0 && listServ.indexOf(name.split('_')[1]) != -1 )
405 return;
406 listServ[i] = name.split('_')[1];
407 data += ';' + name.split('_')[1] + '_' + name.split('_')[2] ;
408
409 }
410 );
411
412 changeActionVal(data);
413 }
414 );
415
416 /*
417 Passe les services sélectionnés dans la liste de gauche dans celle de droite.
418 */
419 $('#add-ser-them').click(
420 function() {
421
422 changeDataLeftColumn();
423 }
424 );
425
426 /*
427 Passe les services sélectionnés dans la liste de droite dans celle de gauche.
428 */
429 $('#del-ser-them').click(
430 function() {
431
432 var data = '';
433
434 $('.liste_droite_service_selected').each(
435 function() {
436
437 var name = $('#'+ $(this).attr('id') + ' .cell1 div').attr('name');
438
439 manageListServ('.list-ser-them div', name, 1);
440 data += ';' + name.split('_')[1] + '_' + name.split('_')[2] ;
441
442 $(this).remove();
443 }
444 );
445
446 changeActionVal(data);
447 }
448 );
449 });
450
451 /*
452 Vérifie que l'objet n'est pas une thématique et que son identifiant correspond.
453 */
454 function isNotthemIsOneServ( objet, id ){
455 return ( $(objet).attr('id').indexOf('them') == -1 &&
456 $(objet).attr('id').indexOf('_' + id.split('_')[1] + '_') != -1 );
457 }
458
459 /*
460 Affiche ou cache un élément qui n'est pas une thématique et dont son identifiant correspond.
461 */
462 function manageListServ( objet , name, type){
463
464 $(objet).each(
465 function() {
466
467 if ( isNotthemIsOneServ(this, name) ){
468 if ( type == 0 )
469
470 $(this).hide() ;
471
472 else {
473
474 if ( $(this).hasClass('liste_gauche_service_selected') )
475
476 $(this).toggleClass('liste_gauche_service_selected');
477
478 $(this).show() ;
479
480 }
481 }
482 }
483 );
484 }
485
486 /*
487 Change les actions qui sont réalisées lors de la soumission du formulaire
488 */
489 function changeActionVal(data){
490 date = $('#date_envoi').val();
491
492 $('#form_val').attr(
493 'onsubmit',
494 'if ( $(\'.liste_gauche_service_selected\').length > 0 && $(\'#date_envoi\').val() != \'\' ) { messageIt(\'consultation\', \'../app/consultation_multiple.php?obj=$obj&data='+data+'&idx=$idx&date_envoi='+date+'\',true);return false;' +
495 'messageIt(\'consultation\', \'../scr/soustab.php?obj=$obj&retourformulaire=$retourformulaire&idxformulaire=$idx&premier=0&tricol=\',false);} else alert(\'Veuillez choisir au moins un service et une date d envoi\');'
496
497 );
498 $('#button_val').attr(
499 'onclick',
500 'if ( $(\'.liste_gauche_service_selected\').length > 0 && $(\'#date_envoi\').val() != \'\' ) { messageIt(\'consultation\', \'../app/consultation_multiple.php?obj=$obj&data='+data+'&idx=$idx&date_envoi='+date+'\',true);' +
501 'messageIt(\'consultation\', \'../scr/soustab.php?obj=$obj&retourformulaire=$retourformulaire&idxformulaire=$idx&premier=0&tricol=\',false);} else alert(\'Veuillez choisir au moins un service et une date d envoi\');'
502
503 );
504 }
505
506 /*
507 Change les actions qui sont réalisées lors de la soumission du formulaire
508 */
509 function changeOneData( oldData, newData) {
510
511 date = $('#date_envoi').val();
512
513 $('#form_val').attr(
514 'onsubmit',
515 $('#form_val').attr('onsubmit').replace(oldData,newData)
516 );
517 $('#button_val').attr(
518 'onclick',
519 $('#button_val').attr('onclick').replace(oldData,newData)
520 );
521 }
522
523 function changeDataLeftColumn(){
524
525 $('.list-sel-ser-them').empty();
526 $('.list-sel-ser-them').html(
527 '<div class=\"row\">' +
528 '<div class=\"cell1 liste_droite_title list-sel-ser-them-title\">Service a consulter</div>' +
529 '<div class=\"cell2 liste_droite_title list-sel-ser-them-title\">Version papier</div>' +
530 '</div>'
531 );
532
533 var listServ = new Array();
534 var data = '';
535
536 $('.liste_gauche_service_selected').each(
537 function(i) {
538
539 var id = $(this).attr('id');
540
541 if ( $.inArray(id.split('_')[1], listServ) != -1 )
542 return;
543
544 data += ';' + id.split('_')[1] + '_' + id.split('_')[2] ;
545 listServ[i] = id.split('_')[1];
546
547 $('.list-sel-ser-them').append(
548 '<div id=\'s' + i + '\' class=\'row liste_droite_service\'>'+
549 '<div class=\'cell1\'>'+
550 '<div class=\'' + $(this).attr('id') + '\' name=\'' + $(this).attr('id') + '\'>'+
551 $(this).html().split('<')[0]+
552 '</div>'+
553 '</div>' +
554 '<div class=\'cell2\'>'+
555 '<div>'+
556 '<input class=\'' + $(this).attr('id') + '\''+$(this).html().split('<input')[1]+
557 '</div>'+
558 '</div>'+
559 '</div>'
560 );
561
562 $(this).hide();
563
564 manageListServ('.list-ser-them div', id, 0);
565
566 }
567 );
568 changeActionVal(data);
569 }
570 </script>";
571 }
572 ?>

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26