/gespac/gestion_demandes/form_interventions.php

http://gespac.googlecode.com/ · PHP · 365 lines · 251 code · 84 blank · 30 comment · 15 complexity · 1c9a63d25d66d65b007fe4e6ec0aa277 MD5 · raw file

  1. <?PHP
  2. #formulaire de cr?ation / modification d'une intervention
  3. include ('../includes.php'); // fichier contenant les fonctions, la config pear, les mdp databases ...
  4. $interv_id = $_GET['id'];
  5. ?>
  6. <!-- DIV target pour Ajax -->
  7. <div id="target"></div>
  8. <!-- FONCTIONS JAVASCRIPT -->
  9. <script>
  10. // Sur changement du type on affiche ou pas la salle et les pc
  11. function change_type(type) {
  12. var tr_salle = $("tr_salle");
  13. var tr_pc = $("tr_pc");
  14. var tr_texte = $("tr_texte");
  15. // Si le type de demande est "installation" ou "reparation"
  16. if ( type == "installation" || type == "reparation") {
  17. tr_salle.style.display = "";
  18. tr_pc.style.display = "none";
  19. tr_texte.style.display = "none";
  20. }
  21. else { // Si c'est un autre type
  22. tr_salle.style.display = "none";
  23. tr_pc.style.display = "none";
  24. tr_texte.style.display = "";
  25. }
  26. // Si le type est vide ...
  27. if ( type == "" ) {
  28. tr_salle.style.display = "none";
  29. tr_pc.style.display = "none";
  30. tr_texte.style.display = "none";
  31. }
  32. }
  33. // Sur changement de la salle on affiche le champ pc et on le remplit avec les pc de la salle <- [AMELIORATION] Ouh ! qu'il est laid ce code !
  34. function change_salle(salle_id) {
  35. var tr_pc = $("tr_pc");
  36. var pc_intervention = $("pc_intervention");
  37. tr_pc.style.display = "";
  38. pc_demande[0] = new Option(">>>S?lectionner un PC<<<","");
  39. pc_demande[1] = new Option("TOUTE LA SALLE",0);
  40. <?PHP
  41. // adresse de connexion ? la base de donn?es
  42. $dsn_gespac = 'mysql://'. $user .':' . $pass . '@localhost/' . $gespac;
  43. // cnx ? la base de donn?es GESPAC
  44. $db_gespac = & MDB2::factory($dsn_gespac);
  45. // requ?te qui va afficher dans le menu d?roulant les pc de la salle selectionn?e
  46. $sql = "SELECT mat_id, mat_nom FROM materiels WHERE salle_id = 1";
  47. $req_salles_disponibles = $db_gespac->queryAll ( $sql );
  48. $compteur = 2; // Commence ? 2 car on ajoute S?lectionner un PC et toute la salle ? 0 et 1
  49. foreach ( $req_salles_disponibles as $record) {
  50. $mat_id = $record[0];
  51. $mat_nom = $record[1];
  52. ?>
  53. // On remplit la liste du select en JS
  54. pc_intervention[<?PHP echo $compteur ?>] = new Option("<?PHP echo $mat_nom ?>",<?PHP echo $mat_id ?>);
  55. <?PHP $compteur++; } ?>
  56. }
  57. // affichage des anciennes demandes pour ce mat?riel
  58. function affiche_ancienne_inter (pc) {
  59. // a faire en ajax, un peu comme le chainage des CB
  60. }
  61. // Sur changement du PC on affiche le champ texte
  62. function change_pc () {
  63. var tr_texte = $("tr_texte");
  64. tr_texte.style.display = "";
  65. }
  66. // serveur AJAX mootools pour le chainage des combobox SALLE - PC
  67. function chainage_salle_pc( select, id, div_id ) {
  68. if ( select.options[0].value == '' ) {
  69. select.options[0] = null;
  70. }
  71. var myRequest = new Request(
  72. {
  73. url: 'gestion_demandes/chain_salle-mat.php',
  74. method: 'get',
  75. evalResponse: true,
  76. onRequest: function() {
  77. $(div_id).style.display = 'none';
  78. },
  79. onFailure: function(xhr) {
  80. window.alert("Erreur !");
  81. },
  82. onComplete: function(response) {
  83. $(div_id).style.display = '';
  84. }
  85. }
  86. ).send('value='+select.value+'&id_to_modify='+id+'&div_id='+div_id);
  87. }
  88. // serveur AJAX mootools pour le chainage PC - historique des demandes
  89. function chainage_pc_historique( pc_id, div_id ) {
  90. var salle_id = $("salle_intervention").value;
  91. var myRequest = new Request(
  92. {
  93. url: 'gestion_demandes/chain_pc-histo_interventions.php',
  94. method: 'get',
  95. evalResponse: true,
  96. onRequest: function() {
  97. $(div_id).style.display = 'none';
  98. },
  99. onFailure: function(xhr) {
  100. window.alert("Erreur !");
  101. },
  102. onComplete: function(response) {
  103. $(div_id).style.display = '';
  104. }
  105. }
  106. ).send('mat='+pc_id.value+'&salle='+salle_id+'&div_id='+div_id);
  107. }
  108. // affiche / masque l'historique
  109. function montre_masque_historique( ) {
  110. var historique = $("historique");
  111. if ( historique.style.display == "none" )
  112. historique.style.display = "";
  113. else
  114. historique.style.display = "none";
  115. }
  116. // v?rouille l'acc?s au bouton submit si les conditions ne sont pas remplies pour la r?ponse ? un dossier
  117. function validation_reponse () {
  118. var bt_submit = $("post_reponse");
  119. var commentaire = $("reponse_texte").value;
  120. if (commentaire == "") {
  121. bt_submit.disabled = true;
  122. } else {
  123. bt_submit.disabled = false;
  124. }
  125. }
  126. /******************************************
  127. *
  128. * AJAX
  129. *
  130. *******************************************/
  131. window.addEvent('domready', function(){
  132. $('post_form').addEvent('submit', function(e) { // Pour poster un formulaire
  133. new Event(e).stop();
  134. new Request({
  135. method: this.method,
  136. url: this.action,
  137. onSuccess: function(responseText, responseXML) {
  138. $('target').set('html', responseText);
  139. $('conteneur').set('load', {method: 'post'}); //On change la methode d'affichage de la page de GET ? POST (en effet, avec GET il r?cup?re la totalit? du tableau get en param?tres et lorsqu'on poste la page formation on d?passe la taille maxi d'une url)
  140. window.setTimeout("$('conteneur').load('gestion_demandes/voir_interventions.php');", 1500);
  141. SexyLightbox.close();
  142. }
  143. }).send(this.toQueryString());
  144. });
  145. });
  146. </script>
  147. <style>
  148. td { border : 1px solid #ccc; }
  149. </style>
  150. <?PHP
  151. // adresse de connexion ? la base de donn?es
  152. $dsn_gespac = 'mysql://'. $user .':' . $pass . '@localhost/' . $gespac;
  153. // cnx ? la base de donn?es GESPAC
  154. $db_gespac = & MDB2::factory($dsn_gespac);
  155. /*******************************************************************
  156. *
  157. * MODIFICATION INTERVENTION
  158. *
  159. *******************************************************************/
  160. //$req_info_demande = $db_gespac->queryAll ( "SELECT demandes.dem_id, dem_date, dem_text, dem_etat, user_demandeur_id, user_intervenant_id, demandes.mat_id, demandes.salle_id, salle_nom, user_nom, dem_type FROM demandes, salles, users, materiels, interventions WHERE salles.salle_id=demandes.salle_id AND demandes.user_demandeur_id=users.user_id AND interventions.dem_id = demandes.dem_id AND interv_id=$interv_id ORDER BY dem_date" );
  161. $req_info_demande = $db_gespac->queryAll ( "SELECT demandes.dem_id, dem_date, dem_text, dem_etat, user_demandeur_id, user_intervenant_id, demandes.mat_id, demandes.salle_id, user_nom, dem_type FROM demandes, users, materiels, interventions WHERE demandes.user_demandeur_id=users.user_id AND interventions.dem_id = demandes.dem_id AND interv_id=$interv_id ORDER BY dem_date" );
  162. $dem_id = $req_info_demande[0][0];
  163. $dem_date = $req_info_demande[0][1];
  164. $dem_text = stripslashes($req_info_demande[0][2]);
  165. $dem_etat = $req_info_demande[0][3];
  166. $user_demandeur_id = $req_info_demande[0][4];
  167. $user_intervenant_id = $req_info_demande[0][5];
  168. $mat_id = $req_info_demande[0][6];
  169. $salle_id = $req_info_demande[0][7];
  170. $user_demandeur_nom = stripslashes($req_info_demande[0][8]);
  171. $dem_type = $req_info_demande[0][9];
  172. echo "<h2>MODIFIER l'intervention du dossier <b>$dem_id</b> cr?? le : $dem_date </h2><br>";
  173. // on r?cup?re le nom de la salle
  174. if ($salle_id <> 0) {
  175. $salle_nom = $db_gespac->queryOne ("SELECT salle_nom FROM salles WHERE salle_id = $salle_id");
  176. $salle_nom = stripslashes($salle_nom);
  177. } else {
  178. $salle_nom = "Pas de salle";
  179. }
  180. // on change la valeur de mat_nom en fonction de si il y a une salle ou pas
  181. if ($salle_nom != "Pas de salle") {
  182. // On r?cup?re le nom du mat?riel
  183. if ( $mat_id <> 0) {
  184. $liste_nom_materiel = $db_gespac->queryAll ( "SELECT mat_nom FROM materiels WHERE mat_id=$mat_id" );
  185. $mat_nom = stripslashes($liste_nom_materiel[0][0]);
  186. } else {
  187. $mat_nom = "TOUS";
  188. }
  189. } else {
  190. $mat_nom = "Non communiqu?";
  191. }
  192. echo " <center>
  193. <table width=700px>
  194. <th>Etat actuel</th>
  195. <th>Type</th>
  196. <th>Demandeur</th>
  197. <th>Salle</th>
  198. <th>Mat?riel</th>
  199. <tr>
  200. <td>$dem_etat</td>
  201. <td>$dem_type</td>
  202. <td>$user_demandeur_nom</td>
  203. <td>$salle_nom</td>
  204. <td>$mat_nom</td>
  205. </tr>
  206. <tr>
  207. <td colspan=7>$dem_text</td>
  208. </tr>
  209. </table>
  210. ";
  211. // on g?re ici le style:display du div reponse (si le dossier est clotur?, on n'affiche pas le div)
  212. $montre_reponse = $dem_etat == "clos" ? "none" : "";
  213. ?>
  214. <br>
  215. <!-- BLOC DE REPONSE A L'INTER -->
  216. <div id="reponse" style="display:<?PHP echo $montre_reponse; ?>">
  217. <form action="gestion_demandes/post_interventions.php?action=mod" method="post" name="post_form" id="post_form" onsubmit="$('post_reponse').disabled=true;">
  218. <input type=hidden name="inter" value= <?PHP echo $interv_id;?> >
  219. <input type=hidden name="dossier" value= <?PHP echo $dem_id;?> >
  220. <input type=hidden name="salle" value= <?PHP echo $salle_id;?> >
  221. <input type=hidden name="mat" value= <?PHP echo $mat_id;?> >
  222. <textarea name="reponse" id="reponse_texte" cols=65 rows=10 onkeyup="validation_reponse();" ></textarea>
  223. <br>
  224. <!--
  225. <label>Changer l'?tat : </label>
  226. <select name="etat">
  227. <option value=rectifier> Rectifier l'intervention </option>
  228. <option value=cloturer> Clore l'intervention </option>
  229. </select>
  230. -->
  231. <br>
  232. <input type=submit value="Clore l'intervention" id="post_reponse" disabled>
  233. </form>
  234. </div>
  235. <br>
  236. <small><a href='#' onclick='javascript:montre_masque_historique();'>afficher/masquer l'historique</a></small>
  237. <br>
  238. <!-- BLOC HISTORIQUE DU DOSSIER -->
  239. <div id="historique" style='padding:10px;'>
  240. <?PHP
  241. // historique des demandes
  242. $historique_demandes = $db_gespac->queryAll ( "SELECT txt_date, txt_texte, user_nom, txt_etat FROM demandes_textes, users WHERE dem_id=$dem_id AND users.user_id=demandes_textes.user_id ORDER BY txt_date DESC;" );
  243. echo "
  244. <table style='border: 1px solid #ccc;width:700px;'>
  245. <th>Date</th>
  246. <th>Intervenant</th>
  247. <th>Etat</th>
  248. <th>Commentaire</th>
  249. ";
  250. foreach ( $historique_demandes as $record ) {
  251. $txt_date = $record[0];
  252. $txt_texte = stripslashes($record[1]);
  253. $user_nom = stripslashes($record[2]);
  254. $txt_etat = $record[3];
  255. echo "
  256. <tr>
  257. <td>$txt_date</td>
  258. <td>$user_nom</td>
  259. <td>$txt_etat</td>
  260. <td>$txt_texte</td>
  261. </tr>";
  262. }
  263. echo "</table>";
  264. ?>
  265. </div>