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