PageRenderTime 79ms CodeModel.GetById 74ms app.highlight 1ms RepoModel.GetById 1ms app.codeStats 0ms

/gespac/gestion_demandes/voir_demandes.php

http://gespac.googlecode.com/
PHP | 431 lines | 249 code | 116 blank | 66 comment | 52 complexity | 80bd7f9a898e87c4ce4e263608f08186 MD5 | raw file
  1<?PHP
  2
  3/*
  4
  5	- user fait une demande
  6		-> dem_etat passe de "" ? "? répondre"
  7		-> envoi d'un mail ? l'ati avec le contenu de la demande
  8	
  9	- l'ati ou autre répond ? la demande
 10		-> il peut demander une précision sur la demande
 11		-> il peut décliner la demande 
 12			-> expliquer la réponse
 13			-> cloture de la demande
 14				-> changement de l'état ? cloturer
 15		-> il peut accepter la demande
 16			-> changement d'état ? "en cours d'inter"
 17
 18
 19	- les demandes sont entassées dans le champ dem_text
 20		-> c'est plus lourd ? gérer qu'une table des textes associée ? la table des demandes, mais bon, ca suffira pour le moment 
 21
 22		
 23	- La création de la demande par un user :
 24		-> type de la demande
 25			* installation
 26			* réparation
 27			* usages
 28			* formation
 29		-> si installation ou réparation on demande
 30			* la salle 
 31			* l'ordi (mettre dans le menu une ligne "toute la salle")
 32			
 33*/
 34
 35	include ('../includes.php');	// fichier contenant les fonctions, la config pear, les mdp databases ...
 36	
 37	// si le grade du compte est root, on donne automatiquement les droits d'acc?s en écriture. Sinon, on teste si le compte a acc?s ? la page.
 38	$E_chk = ($_SESSION['grade'] == 'root') ? true : preg_match ("#E-03-01#", $_SESSION['droits']);
 39	
 40	
 41?>
 42
 43<h3>Visualisation des dossiers</h3>
 44
 45<!--	DIV target pour Ajax	-->
 46<div id="target"></div>
 47
 48
 49	<?PHP 
 50
 51		// adresse de connexion ? la base de données
 52		$dsn_gespac     = 'mysql://'. $user .':' . $pass . '@localhost/' . $gespac;
 53
 54		// cnx ? la base de données GESPAC
 55		$db_gespac 	= & MDB2::factory($dsn_gespac);
 56
 57		$login = $_SESSION['login'];
 58		
 59		$liste_des_demandes = $db_gespac->queryAll ( "SELECT dem_id, dem_date, dem_text, dem_etat, dem_type, user_demandeur_id, user_intervenant_id, user_nom FROM demandes, users WHERE demandes.user_demandeur_id=users.user_id ORDER BY dem_date DESC" );
 60		$liste_des_demandes_user = $db_gespac->queryAll ( "SELECT dem_id, dem_date, dem_text, dem_etat, dem_type, user_demandeur_id, user_intervenant_id, user_nom FROM demandes, users WHERE demandes.user_demandeur_id=users.user_id AND user_logon='$login' ORDER BY dem_date DESC" );
 61		
 62		//on récupére le grade_nom de l'utilisateur connecté
 63		$grade_nom = $db_gespac->queryOne ("SELECT grade_nom FROM users, grades WHERE grades.grade_id = users.grade_id AND user_logon='$login'");
 64		
 65		if ($grade_nom == 'ati' | $grade_nom == 'root') {
 66			// si le grade est celui d'un ati ou du root on met la valeur de la session ? 1
 67			$_SESSION['entete_demandeur'] = 1;
 68		} else {
 69			$_SESSION['entete_demandeur'] = 0;
 70		}
 71		
 72
 73	?>
 74	
 75	<!-- 	bouton pour le filtrage du tableau	-->
 76	<form>
 77		<center><small>Filtrer :</small> <input name="filt" onkeyup="filter(this, 'demandes_table', '1')" type="text"></center>
 78	</form>
 79	
 80	<center><small><a href='#' id="masque_montre" onclick="montre_masque_dossiers_clotures();" title="masque">masquer/montrer les dossiers clos</a></small> | 
 81	<small><a href='#' onclick="AffichePage('conteneur', 'gestion_demandes/voir_demandes.php?selection=0');" id="label_dossiers" title="Mes dossiers">Afficher uniquement mes dossiers</a></small> | 
 82	<small><a href='#' onclick="AffichePage('conteneur', 'gestion_demandes/voir_demandes.php?selection=1');" id="label_dossiers" title="Tous les dossiers">Lister tous les dossiers</a></small></center><br>
 83	
 84	<?PHP 
 85		if ( $E_chk ) echo "<a href='#' onclick=\"AffichePage('conteneur', 'gestion_demandes/form_demandes.php?id=-1');\"> <img src='img/add.png'>Ouvrir un dossier </a>"; 
 86		
 87		
 88	?>
 89
 90	<center>
 91	
 92	<table class="tablehover" id="demandes_table" width=800>
 93	
 94		<th>N°</th>
 95		<th>Date</th>
 96		<th>Etat</th>
 97		<th>Type</th>
 98		<th class="td_demandeur">Demandeur</th>
 99		<th>Salle</th>
100		<th>Matériel</th>		
101		<th>Commentaire</th>
102		
103		<?PHP
104		
105		if ($_GET['selection'] == 0) { 
106			
107			
108			if ($E_chk) echo "<th>&nbsp</th>";
109			
110			$compteur = 0;
111			
112			// On parcourt le tableau
113			foreach ( $liste_des_demandes_user as $record ) {
114				
115				// alternance des couleurs
116				$tr_class = ($compteur % 2) == 0 ? "tr1" : "tr2";
117						
118				echo "<tr class=$tr_class>";
119				
120					$dem_id 				= $record[0];
121					$dem_date 				= $record[1];
122					$dem_text 				= stripslashes($record[2]);
123					$dem_etat 				= $record[3];
124					$dem_type 				= $record[4];
125					$user_demandeur_id 		= $record[5];
126					$user_intervenant_id 	= $record[6];
127					$user_demandeur_nom		= stripslashes($record[7]);
128					
129					
130					// On récup?re la salle et le materiel si c'est une installation ou une reparation
131					if ( $dem_type == "installation" || $dem_type == "reparation" ) {
132						$rq_extraction_salle_mat = $db_gespac->queryAll ( "SELECT demandes.mat_id, demandes.salle_id, salle_nom FROM demandes, salles, users WHERE salles.salle_id=demandes.salle_id AND demandes.user_demandeur_id=users.user_id AND dem_id=$dem_id" );
133
134						$mat_id 	= $rq_extraction_salle_mat [0][0];
135						$salle_id 	= $rq_extraction_salle_mat [0][1];
136						$salle_nom 	= stripslashes($rq_extraction_salle_mat [0][2]);
137						
138						// On récup?re le nom du matériel
139						if ( $mat_id <> 0) {
140							$liste_nom_materiel = $db_gespac->queryAll ( "SELECT mat_nom FROM materiels WHERE mat_id=$mat_id" );
141							$mat_nom = stripslashes($liste_nom_materiel[0][0]);
142						}
143						else {	$mat_nom = "TOUS";	}
144						
145					} else {
146						$mat_nom = "NA";
147						$salle_nom = "NA";
148					}
149					
150					
151					// On change la couleur quand le dossier est clos et on masque la case de modification
152					switch ($dem_etat) {
153						case "clos" : {
154							$etat_couleur = "#36F572";
155							$hidemodif = "none";
156							break;
157						}
158						
159						case "attente" : {
160							$etat_couleur = "#FFD700";
161							$hidemodif = "";
162							break;
163						}
164						
165						case "rectifier" : {
166							$etat_couleur = "#FFD700";
167							$hidemodif = "";
168							break;
169						}
170						
171						case "precisions" : {
172							$etat_couleur = "#FFD700";
173							$hidemodif = "";
174							break;
175						}
176						
177						case "intervention" : {
178							$etat_couleur = "#F57236";
179							$hidemodif = "";
180							break;
181						}
182					}
183					
184					
185														
186					echo "<td> <a href='gestion_demandes/voir_dossier.php?height=480&width=640&id=$dem_id' rel='slb_demandes' title='voir le dossier $dem_id'> <img src='img/loupe.gif'>$dem_id</a> </td>";					
187					echo "<td> $dem_date </td>";
188					echo "<td bgcolor=$etat_couleur> $dem_etat </td>";
189					echo "<td> $dem_type </td>";
190					echo "<td class='td_demandeur'> $user_demandeur_nom </td>";
191					echo "<td> $salle_nom  </td>";
192					echo "<td> $mat_nom </td>";
193					echo "<td> $dem_text </td>";
194					if ($E_chk) echo "<td width=20 align=center> <a href='#' onclick=\"AffichePage('conteneur', 'gestion_demandes/form_demandes.php?id=$dem_id');\" style='display:$hidemodif;'>	<img src='img/write.png' title='gérer la demande $dem_id'>	</a> </td>";
195				
196				echo "</tr>";
197				
198				$compteur++;
199			}
200			
201		} else {
202			
203			if ($E_chk) echo "<th>&nbsp</th>";
204			
205			$compteur = 0;
206			
207			// On parcourt le tableau
208			foreach ( $liste_des_demandes as $record ) {
209				
210				// alternance des couleurs
211				$tr_class = ($compteur % 2) == 0 ? "tr1" : "tr2";
212						
213				echo "<tr class=$tr_class>";
214				
215					$dem_id 				= $record[0];
216					$dem_date 				= $record[1];
217					$dem_text 				= stripslashes($record[2]);
218					$dem_etat 				= $record[3];
219					$dem_type 				= $record[4];
220					$user_demandeur_id 		= $record[5];
221					$user_intervenant_id 	= $record[6];
222					$user_demandeur_nom		= stripslashes($record[7]);
223					
224					
225					// On récup?re la salle et le materiel si c'est une installation ou une reparation
226					if ( $dem_type == "installation" || $dem_type == "reparation" ) {
227						$rq_extraction_salle_mat = $db_gespac->queryAll ( "SELECT demandes.mat_id, demandes.salle_id, salle_nom FROM demandes, salles, users WHERE salles.salle_id=demandes.salle_id AND demandes.user_demandeur_id=users.user_id AND dem_id=$dem_id" );
228
229						$mat_id 	= $rq_extraction_salle_mat [0][0];
230						$salle_id 	= $rq_extraction_salle_mat [0][1];
231						$salle_nom 	= stripslashes($rq_extraction_salle_mat [0][2]);
232						
233						// On récup?re le nom du matériel
234						if ( $mat_id <> 0) {
235							$liste_nom_materiel = $db_gespac->queryAll ( "SELECT mat_nom FROM materiels WHERE mat_id=$mat_id" );
236							$mat_nom = stripslashes($liste_nom_materiel[0][0]);
237						}
238						else {	$mat_nom = "TOUS";	}
239						
240					} else {
241						$mat_nom = "NA";
242						$salle_nom = "NA";
243					}
244					
245					
246					// On change la couleur quand le dossier est clos et on masque la case de modification
247					switch ($dem_etat) {
248						case "clos" : {
249							$etat_couleur = "#36F572";
250							$hidemodif = "none";
251							break;
252						}
253						
254						case "attente" : {
255							$etat_couleur = "#FFD700";
256							$hidemodif = "";
257							break;
258						}
259						
260						case "rectifier" : {
261							$etat_couleur = "#FFD700";
262							$hidemodif = "";
263							break;
264						}
265						
266						case "precisions" : {
267							$etat_couleur = "#FFD700";
268							$hidemodif = "";
269							break;
270						}
271						
272						case "intervention" : {
273							$etat_couleur = "#F57236";
274							$hidemodif = "";
275							break;
276						}
277					}
278					
279					
280														
281					echo "<td> <a href='gestion_demandes/voir_dossier.php?height=480&width=640&id=$dem_id' rel='slb_demandes' title='voir le dossier $dem_id'> <img src='img/loupe.gif'>$dem_id</a> </td>";					
282					echo "<td> $dem_date </td>";
283					echo "<td bgcolor=$etat_couleur> $dem_etat </td>";
284					echo "<td> $dem_type </td>";
285					echo "<td class='td_demandeur'> $user_demandeur_nom </td>";
286					echo "<td> $salle_nom  </td>";
287					echo "<td> $mat_nom </td>";
288					echo "<td> $dem_text </td>";
289					if ($E_chk) echo "<td width=20 align=center> <a href='#' onclick=\"AffichePage('conteneur', 'gestion_demandes/form_demandes.php?id=$dem_id');\" style='display:$hidemodif;'>	<img src='img/write.png' title='gérer la demande $dem_id'>	</a> </td>";
290				
291				echo "</tr>";
292				
293				$compteur++;
294			}
295		}
296		?>		
297
298	</table>
299	
300	</center>
301	
302	
303<?PHP
304	if ( $E_chk )
305		echo "<a href='#' onclick=\"AffichePage('conteneur', 'gestion_demandes/form_demandes.php?id=-1');\"> <img src='img/add.png'>Ouvrir un dossier </a>";
306
307	// On se déconnecte de la db
308	$db_gespac->disconnect();
309
310?>
311
312<script type="text/javascript">
313
314	window.addEvent('domready', function(){
315		SexyLightbox = new SexyLightBox({color:'black', dir: 'img/sexyimages', find:'slb_demandes'});
316	});
317
318	
319	// init de la couleur de fond
320	document.getElementById('conteneur').style.backgroundColor = "#fff";
321	
322	// *********************************************************************************
323	//
324	//				Fonction de filtrage des tables
325	//
326	// *********************************************************************************
327
328	function filter (phrase, _id){
329
330		var words = phrase.value.toLowerCase().split(" ");
331		var table = document.getElementById(_id);
332		var ele;
333		var elements_liste = "";
334				
335		for (var r = 1; r < table.rows.length; r++){
336			
337			ele = table.rows[r].innerHTML.replace(/<[^>]+>/g,"");
338			var displayStyle = 'none';
339			
340			for (var i = 0; i < words.length; i++) {
341				if (ele.toLowerCase().indexOf(words[i])>=0) {	// la phrase de recherche est reconnue
342					displayStyle = '';
343				}	
344				else {	// on masque les rows qui ne correspondent pas
345					displayStyle = 'none';
346					break;
347				}
348			}
349			
350			// Affichage on / off en fonction de displayStyle
351			table.rows[r].style.display = displayStyle;	
352		}
353	}	
354
355		
356	
357	// *********************************************************************************
358	//
359	//				Masque / Montre les dossiers cloturés
360	//
361	// *********************************************************************************
362
363	function montre_masque_dossiers_clotures () {
364
365		var table = document.getElementById("demandes_table");
366		var lien = document.getElementById("masque_montre");
367		
368		if ( lien.title == "masque" ) {		// on masque les rows "cloturer" 
369			
370			lien.title = "affiche"
371			
372			for (var r = 1; r < table.rows.length; r++) {
373				
374				if (table.rows[r].cells[2].innerHTML == " clos " )	// attention aux espaces avant et apr?s !
375					displayStyle = "none";			
376				else
377					displayStyle = "";
378
379				// Affichage on / off en fonction de displayStyle
380				table.rows[r].style.display = displayStyle;	
381			}
382		
383		} else {	// On affiche toutes les rows
384			
385			lien.title = "masque"
386			
387			for (var r = 1; r < table.rows.length; r++) {
388				// Affichage de toutes les rows du tableau
389				table.rows[r].style.display = "";	
390			}
391		}
392
393	}
394	
395	
396	// *********************************************************************************
397	//
398	//			Change le label pour afficher mes dossiers ou tous les dossiers
399	//
400	// *********************************************************************************	
401	
402	function label_dossiers() {
403		if ( $('label_dossiers').innerHTML == 'Afficher uniquement mes dossiers' ) {
404			$('label_dossiers').innerHTML = "Lister tous les dossiers";
405		} else {
406			$('label_dossiers').innerHTML = "Afficher uniquement mes dossiers";
407		}
408	}
409	
410	
411	function hidethem (col_name, show) { 
412	
413		if ( show == true)
414			var state = "";
415		else var state = "none";
416	
417		$$(col_name).each(function(item) {
418			item.style.display = state;
419		})
420	}
421	
422	
423	function init_entetes (value) {
424		
425		if (value.substr(0, 1) == "1") { hidethem('.td_demandeur', true);} 
426		else {hidethem('.td_demandeur', false);}
427	}
428	
429	init_entetes ('<?PHP echo $_SESSION['entete_demandeur'];?>');
430	
431</script>