/gespac/gestion_inventaire/voir_materiels.php

http://gespac.googlecode.com/ · PHP · 764 lines · 466 code · 202 blank · 96 comment · 108 complexity · eaddd631a0df5b10ae96ede929aee4e2 MD5 · raw file

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <?PHP
  3. /*
  4. fichier de visualisation de l'inventaire :
  5. */
  6. // 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.
  7. $E_chk = ($_SESSION['grade'] == 'root') ? true : preg_match ("#E-02-01#", $_SESSION['droits']);
  8. if ( !isset($_SESSION['entetes']) ) $_SESSION['entetes'] = "0111001111"; // Cases א cocher par dיfaut
  9. ?>
  10. <!-- L'ENTETE DE LA PAGE ET SES OPTIONS -->
  11. <div class="entetes" id="entete-materiels">
  12. <span class="entetes-titre">LES MATERIELS<img class="help-button" src="<?PHP echo ICONSPATH . "info.png";?>"></span><span id='nb_selectionnes'></span>
  13. <div class="helpbox">Cette page permet de gיrer l'ajout, la modification et la suppression des matיriels du parc.<br>On peut aussi modifier ou renommer un lot de matיriels.</div>
  14. <span class="entetes-options">
  15. <span class="option"> <!-- filtre du matיriels -->
  16. <form>
  17. <small><a href="#" title="Cherchez dans une colonne prיcise avec le sיparateur deux points (CDI:n pour le nom, CDI:t pour tout le tableau) " onclick="alert('Cherchez dans une colonne prיcise avec le sיparateur deux points (CDI:n pour le nom, CDI:s pour la salle, CDI:t pour tout le tableau, ...) \n Le filtre d`exclusion permet de ne pas sיlectionner une valeur particuliטre.\n Ainsi `CDI:n / ecran:n` permet de selectionner tout le matיriel appelי CDI mais pas les יcrans CDI. \n On peut aussi ajouter des champs avec l`opיrateur +. par exemple `cdi:n+fonctionnel:e/ecran:n+d3e:s`.');">[?]</a></small>
  18. <input placeholder=" filtrer" name="filt" id="filt" onKeyPress="return disableEnterKey(event)" type="text" value=<?PHP echo $_GET['filter']; ?> >
  19. <span id="nb_filtre" title='nombre de matיriels affichיs'></span>
  20. </form>
  21. </span>
  22. <span class="option"> <!-- Crיer CSV -->
  23. <?PHP echo "<span><a href='#' onclick=\"AffichePage('target','gestion_inventaire/post_export_filtre.php?filtre=" . urlencode($filtre) . "');\" title='gיnיrer CSV'> <img src='" . ICONSPATH . "csv.png'></a></span>"; ?>
  24. </span>
  25. <span class="option"> <!-- Ajout Matיriel -->
  26. <?PHP if ( $E_chk ) {echo "<span><a href='gestion_inventaire/form_materiels.php?height=600&width=640&action=add' rel='slb_mat' title='ajout d un matיriel'> <img src='" . ICONSPATH . "add.png'></a></span>";} ?>
  27. </span>
  28. <span class="option"> <!-- Modifier le lot -->
  29. <?PHP if ( $E_chk ) {echo "<span id='modif_selection'><a href='gestion_inventaire/form_materiels.php?height=300&width=640&action=modlot' rel='slb_mat' title='modifier selection'> <img src='" . ICONSPATH . "modif1.png'></a></span>";}?>
  30. </span>
  31. <span class="option"> <!-- renommer le lot -->
  32. <?PHP if ( $E_chk ) {echo "<span id='rename_selection'><a href='gestion_inventaire/form_materiels.php?height=280&width=640&action=renomlot' rel='slb_mat' title='renommer selection'> <img src='" . ICONSPATH . "pen.png'></a> </span>";} ?>
  33. </span>
  34. <span class="option"> <!-- affecter une salle au lot -->
  35. <?PHP if ( $E_chk ) { ?>
  36. <span id='affect_selection'><a href='#' onclick='toggle_affectsalle();'><img src="<?PHP echo ICONSPATH . "refresh.png";?>" title="Affectation directe א une salle"></a></span>
  37. <div id='affect_box'>
  38. <form action="gestion_inventaire/post_materiels.php?action=affect" method="post" name="post_form" id="post_form" >
  39. <input type=hidden name='materiel_a_poster' id='materiel_a_poster' value=''>
  40. <?PHP
  41. echo "<select name=salle_select id=salle_select>";
  42. // Pour le remplissage de la combobox des salles pour l'affectation
  43. // stockage des lignes retournיes par sql dans un tableau nommי combo_des_salles
  44. $combo_des_salles = $con_gespac->QueryAll ( "SELECT salle_id, salle_nom FROM salles ORDER BY salle_nom;" );
  45. foreach ($combo_des_salles as $combo_option ) {
  46. $option_id = $combo_option['salle_id'];
  47. $option_salle = $combo_option['salle_nom'];
  48. //On colle par dיfaut la salle STOCK, donc ID = 1
  49. $defaut = $option_id == 1 ? "selected" : "";
  50. echo "<option value=$option_id $defaut> $option_salle </option>";
  51. }
  52. echo "</select>";
  53. echo "<input type=submit value='Affecter' >";
  54. ?>
  55. </form>
  56. </div>
  57. <?PHP } ?>
  58. </span>
  59. <span class="option"> <!-- Affichage des colonnes -->
  60. <a href='#' onclick='showhide_options();'><img src="<?PHP echo ICONSPATH . "eye.png";?>" title="colonnes א montrer ou א cacher"></a>
  61. <div id="options_colonnes">
  62. <input type="checkbox" class="opt_entete" id="chk_pret" onclick="hidethem('.td_pret', this.checked);post_modif_entete();"><label for="chk_pret">Prךt</label><br>
  63. <input type="checkbox" class="opt_entete" id="chk_dsit" onclick="hidethem('.td_dsit', this.checked);post_modif_entete();"><label for="chk_dsit">DSIT</label><br>
  64. <input type="checkbox" class="opt_entete" id="chk_serial" onclick="hidethem('.td_serial', this.checked);post_modif_entete();"><label for="chk_serial">Serial</label><br>
  65. <input type="checkbox" class="opt_entete" id="chk_etat" onclick="hidethem('.td_etat', this.checked);post_modif_entete();"><label for="chk_etat">Etat</label><br>
  66. <input type="checkbox" class="opt_entete" id="chk_type" onclick="hidethem('.td_type', this.checked);post_modif_entete();"><label for="chk_type">Famille</label><br>
  67. <input type="checkbox" class="opt_entete" id="chk_stype" onclick="hidethem('.td_stype', this.checked);post_modif_entete();"><label for="chk_stype">Sous Famille</label><br>
  68. <input type="checkbox" class="opt_entete" id="chk_modele" onclick="hidethem('.td_modele', this.checked);post_modif_entete();"><label for="chk_modele">Modטle</label><br>
  69. <input type="checkbox" class="opt_entete" id="chk_marque" onclick="hidethem('.td_marque', this.checked);post_modif_entete();"><label for="chk_marque">Marque</label><br>
  70. <input type="checkbox" class="opt_entete" id="chk_salle" onclick="hidethem('.td_salle', this.checked);post_modif_entete();"><label for="chk_salle">Salle</label><br>
  71. <input type="checkbox" class="opt_entete" id="chk_origine" onclick="hidethem('.td_origine', this.checked);post_modif_entete();"><label for="chk_origine">Origine</label>
  72. </div>
  73. </span>
  74. </span>
  75. </div>
  76. <div class=spacer></div>
  77. <?PHP
  78. // cnx א la base de donnיes GESPAC
  79. $con_gespac = new Sql ($host, $user, $pass, $gespac);
  80. // stockage des lignes retournיes par sql dans un tableau nommי liste_des_materiels
  81. $liste_des_materiels = $con_gespac->QueryAll ( "SELECT mat_nom, mat_dsit, mat_serial, mat_etat, marque_marque, marque_model, marque_type, marque_stype, mat_id, salle_nom, salles.salle_id, mat_origine, user_nom FROM materiels, marques, salles, users WHERE (materiels.user_id=users.user_id AND materiels.marque_id=marques.marque_id and materiels.salle_id=salles.salle_id) ORDER BY mat_nom" );
  82. $tri_nom = "nom_asc";
  83. $tri_pret = "pret_asc";
  84. $tri_dsit = "dsit_asc";
  85. $tri_serial = "serial_asc";
  86. $tri_etat = "etat_asc";
  87. $tri_type = "type_asc";
  88. $tri_stype = "stype_asc";
  89. $tri_marque = "marque_asc";
  90. $tri_modele = "modele_asc";
  91. $tri_salle = "salle_asc";
  92. $tri_origine = "origine_asc";
  93. if (isset($_GET['tri'])) {
  94. switch ($_GET['tri']) {
  95. case "nom_asc" : $orderby = "ORDER BY mat_nom asc"; $tri_nom = "nom_desc"; $img_nom = "<img src=\"./img/down.png\" />"; break;
  96. case "nom_desc" : $orderby = "ORDER BY mat_nom desc"; $img_nom = "<img src=\"./img/up.png\" />"; break;
  97. //case "pret_asc" : $orderby = "ORDER BY user_nom asc"; $tri_pret = "pret_desc"; $img_pret = "<img src=\"./img/down.png\" />"; break;
  98. //case "pret_desc" : $orderby = "ORDER BY user_nom desc"; $img_pret = "<img src=\"./img/up.png\" />"; break;
  99. case "dsit_asc" : $orderby = "ORDER BY mat_dsit asc"; $tri_dsit = "dsit_desc"; $img_dsit = "<img src=\"./img/down.png\" />"; break;
  100. case "dsit_desc" : $orderby = "ORDER BY mat_dsit desc"; $img_dsit = "<img src=\"./img/up.png\" />"; break;
  101. case "serial_asc" : $orderby = "ORDER BY mat_serial asc"; $tri_serial = "serial_desc"; $img_serial = "<img src=\"./img/down.png\" />"; break;
  102. case "serial_desc" : $orderby = "ORDER BY mat_serial desc"; $img_serial = "<img src=\"./img/up.png\" />"; break;
  103. case "etat_asc" : $orderby = "ORDER BY mat_etat asc"; $tri_etat = "etat_desc"; $img_etat = "<img src=\"./img/down.png\" />"; break;
  104. case "etat_desc" : $orderby = "ORDER BY mat_etat desc"; $img_etat = "<img src=\"./img/up.png\" />"; break;
  105. case "type_asc" : $orderby = "ORDER BY marque_type asc"; $tri_type = "type_desc"; $img_type = "<img src=\"./img/down.png\" />"; break;
  106. case "type_desc" : $orderby = "ORDER BY marque_type desc"; $img_type = "<img src=\"./img/up.png\" />"; break;
  107. case "stype_asc" : $orderby = "ORDER BY marque_stype asc"; $tri_stype = "stype_desc"; $img_stype = "<img src=\"./img/down.png\" />"; break;
  108. case "stype_desc" : $orderby = "ORDER BY marque_stype desc"; $img_stype = "<img src=\"./img/up.png\" />"; break;
  109. case "marque_asc" : $orderby = "ORDER BY marque_marque asc"; $tri_marque = "marque_desc"; $img_marque = "<img src=\"./img/down.png\" />"; break;
  110. case "marque_desc" : $orderby = "ORDER BY marque_marque desc"; $img_marque = "<img src=\"./img/up.png\" />"; break;
  111. case "modele_asc" : $orderby = "ORDER BY marque_model asc"; $tri_modele = "modele_desc"; $img_modele = "<img src=\"./img/down.png\" />"; break;
  112. case "modele_desc" : $orderby = "ORDER BY marque_model desc"; $img_modele = "<img src=\"./img/up.png\" />"; break;
  113. case "salle_asc" : $orderby = "ORDER BY salle_nom asc"; $tri_salle = "salle_desc"; $img_salle = "<img src=\"./img/down.png\" />"; break;
  114. case "salle_desc" : $orderby = "ORDER BY salle_nom desc"; $img_salle = "<img src=\"./img/up.png\" />"; break;
  115. case "origine_asc" : $orderby = "ORDER BY mat_origine asc"; $tri_origine = "origine_desc"; $img_origine = "<img src=\"./img/down.png\" />"; break;
  116. case "origine_desc" : $orderby = "ORDER BY mat_origine desc"; $img_origine = "<img src=\"./img/up.png\" />"; break;
  117. default : $orderby = "ORDER BY mat_nom asc"; break;
  118. }
  119. } else {
  120. $orderby = "ORDER BY mat_nom asc";
  121. }
  122. // cnx א la base de donnיes GESPAC
  123. $con_gespac = new Sql ($host, $user, $pass, $gespac);
  124. $filtre = $_GET['filter'];
  125. $filter_explode_exclusion = @explode ("/", $filtre);
  126. $value_like_tab = $filter_explode_exclusion[0]; // Pour le filtre d'inclusion
  127. $value_notlike_tab = $filter_explode_exclusion[1]; // Pour le filtre d'exclusion
  128. /**************************
  129. * PARTIE INCLUSION
  130. ***************************/
  131. $filter_explode_like = @explode ("+", $value_like_tab);
  132. $curseur_like = 1;
  133. foreach ( $filter_explode_like as $value_like) {
  134. // Si la valeur du champ est renseignיe on l'intטgre א la requךte
  135. if ( $value_like <> "" ) {
  136. $value_like_explode = @explode (":", $value_like);
  137. $value_inc = trim($value_like_explode[0]);
  138. $champ_inc = trim($value_like_explode[1]);
  139. // Si le champ numיrique n'est pas renseignי, on lui affecte une valeur bidon pour tomber dans le cas "default"
  140. if ( !isset($champ_inc) || $champ_inc == "") $champ_inc = -1;
  141. switch ($champ_inc) {
  142. case "t" : $like .= "(mat_nom LIKE '%$value_inc%' OR user_nom LIKE '%$value_inc%' OR mat_dsit LIKE '%$value_inc%' OR mat_serial LIKE '%$value_inc%' OR mat_origine LIKE '%$value_inc%' OR mat_etat LIKE '%$value_inc%' OR marque_type LIKE '%$value_inc%' OR marque_stype LIKE '%$value_inc%' OR marque_marque LIKE '%$value_inc%' OR marque_model LIKE '%$value_inc%' OR salle_nom LIKE '%$value_inc%')"; break;
  143. case "n" : $like .= "mat_nom LIKE '%$value_inc%'"; break;
  144. case "p" : $like .= "user_nom LIKE '%$value_inc%'"; break;
  145. case "d" : $like .= "mat_dsit LIKE '%$value_inc%'"; break;
  146. case "s" : $like .= "mat_serial LIKE '%$value_inc%'"; break;
  147. case "e" : $like .= "mat_etat LIKE '%$value_inc%'"; break;
  148. case "f" : $like .= "marque_type LIKE '%$value_inc%'"; break;
  149. case "sf" : $like .= "marque_stype LIKE '%$value_inc%'"; break;
  150. case "m" : $like .= "marque_marque LIKE '%$value_inc%'"; break;
  151. case "mo" : $like .= "marque_model LIKE '%$value_inc%'"; break;
  152. case "sa" : $like .= "salle_nom LIKE '%$value_inc%'"; break;
  153. case "o" : $like .= "mat_origine LIKE '%$value_inc%'"; break;
  154. default : $like .= "mat_nom LIKE '%$value_inc%'"; break;
  155. }
  156. // Si ce n'est pas le dernier יlיment du tableau on rajoute " AND " sinon on ne rajoute rien
  157. if ( $curseur_like <> count($filter_explode_like) ) {
  158. $like .= " AND ";
  159. }
  160. $curseur_like++;
  161. }
  162. }
  163. /**************************
  164. * PARTIE EXCLUSION
  165. ***************************/
  166. $filter_explode_notlike = @explode ("+", $value_notlike_tab);
  167. $curseur_notlike = 1;
  168. foreach ( $filter_explode_notlike as $value_notlike) {
  169. // Si la valeur du champ est renseignיe on l'intטgre א la requךte
  170. if ( $value_notlike <> "" ) {
  171. $value_notlike_explode = @explode (":", $value_notlike);
  172. $value_exc = trim($value_notlike_explode[0]);
  173. $champ_exc = trim($value_notlike_explode[1]);
  174. // Si le champ numיrique n'est pas renseignי, on lui affecte une valeur bidon pour tomber dans le cas "default"
  175. if ( !isset($champ_exc) || $champ_exc == "") $champ_exc = -1;
  176. switch ($champ_exc) {
  177. case "t" : $notlike .= "(mat_nom NOT LIKE '%$value_exc%' OR user_nom NOT LIKE '%$value_exc%' OR mat_dsit NOT LIKE '%$value_exc%' OR mat_serial NOT LIKE '%$value_exc%' OR mat_origine NOT LIKE '%$value_exc%' OR mat_etat NOT LIKE '%$value_exc%' OR marque_type NOT LIKE '%$value_exc%' OR marque_stype NOT LIKE '%$value_exc%' OR marque_marque NOT LIKE '%$value_exc%' OR marque_model NOT LIKE '%$value_exc%' OR salle_nom NOT LIKE '%$value_exc%')"; break;
  178. case "n" : $notlike .= "mat_nom NOT LIKE '%$value_exc%'"; break;
  179. case "p" : $notlike .= "user_nom NOT LIKE '%$value_exc%'"; break;
  180. case "d" : $notlike .= "mat_dsit NOT LIKE '%$value_exc%'"; break;
  181. case "s" : $notlike .= "mat_serial NOT LIKE '%$value_exc%'"; break;
  182. case "e" : $notlike .= "mat_etat NOT LIKE '%$value_exc%'"; break;
  183. case "f" : $notlike .= "marque_type NOT LIKE '%$value_exc%'"; break;
  184. case "sf" : $notlike .= "marque_stype NOT LIKE '%$value_exc%'"; break;
  185. case "m" : $notlike .= "marque_marque NOT LIKE '%$value_exc%'"; break;
  186. case "mo" : $notlike .= "marque_model NOT LIKE '%$value_exc%'"; break;
  187. case "sa" : $notlike .= "salle_nom NOT LIKE '%$value_exc%'"; break;
  188. case "o" : $notlike .= "mat_origine NOT LIKE '%$value_exc%'"; break;
  189. default : $notlike .= "mat_nom NOT LIKE '%$value_exc%'"; break;
  190. }
  191. }
  192. // Si ce n'est pas le dernier יlיment du tableau on rajoute " AND " sinon on ne rajoute rien
  193. if ( $curseur_notlike <> count($filter_explode_notlike) ) {
  194. $notlike .= " AND ";
  195. }
  196. $curseur_notlike++;
  197. }
  198. /**************************
  199. * PARTIE JONCTION
  200. ***************************/
  201. // permet de mettre la particule "AND" dans le cas ou le filtre d'exclusion existe
  202. if ( $value_like_tab <> "" && $value_notlike_tab <> "" ) $jonction = " AND ";
  203. //echo $like . $jonction . $notlike;
  204. if ( $_GET['filter'] <> '' ) {
  205. $liste_des_materiels = $con_gespac->QueryAll ( "SELECT mat_nom, mat_dsit, mat_serial, mat_etat, marque_marque, marque_model, marque_type, marque_stype, mat_id, salle_nom, salles.salle_id, mat_origine, user_nom FROM materiels, marques, salles, users WHERE (materiels.user_id=users.user_id AND materiels.marque_id=marques.marque_id and materiels.salle_id=salles.salle_id AND $like $jonction $notlike) $orderby" );
  206. echo "<script>$('nb_filtre').innerHTML = ' <small>[" . count($liste_des_materiels) . "]</small>';</script>";
  207. }
  208. else {
  209. $liste_des_materiels = $con_gespac->QueryAll ( "SELECT mat_nom, mat_dsit, mat_serial, mat_etat, marque_marque, marque_model, marque_type, marque_stype, mat_id, salle_nom, salles.salle_id, mat_origine, user_nom FROM materiels, marques, salles, users WHERE (materiels.user_id=users.user_id AND materiels.marque_id=marques.marque_id and materiels.salle_id=salles.salle_id) $orderby" );
  210. echo "<script>$('nb_filtre').innerHTML = ' <small>[" . count($liste_des_materiels) . "]</small>';</script>";
  211. }
  212. ?>
  213. <center>
  214. <table class="tablehover" id="mat_table">
  215. <!-- Entךtes du tableau des matיriels. On gטre ici le tri.-->
  216. <?PHP if ( $E_chk ) echo "<th> <input type=checkbox id=checkall onclick=\"checkall('mat_table');\" > </th>"; ?>
  217. <th title="n : le nom de la machine">
  218. <a href="#" onclick="order_by('<?PHP echo $tri_nom; ?>', $('filt').value);">
  219. Nom<sup>n</sup> <?PHP echo $img_nom; ?></a></th>
  220. <th class="td_pret" style='display:none' title="p : le nom du professeur א qui le matיriel est prךtי">Prךtי א<sup>p</sup></th>
  221. <th class="td_dsit" title="d : le numיro de sיrie de la DSIT">
  222. <a href="#" onclick="order_by('<?PHP echo $tri_dsit; ?>', $('filt').value);">
  223. DSIT<sup>d</sup><?PHP echo $img_dsit; ?></a></th>
  224. <th class="td_serial" title="s : le numיro de sיrie de la machine">
  225. <a href="#" onclick="order_by('<?PHP echo $tri_serial; ?>', $('filt').value);">
  226. Serial<sup>s</sup><?PHP echo $img_serial; ?></a></th>
  227. <th class="td_etat" title="e : L'יtat gיnיral de la machine">
  228. <a href="#" onclick="order_by('<?PHP echo $tri_etat; ?>', $('filt').value);">
  229. Etat<sup>e</sup><?PHP echo $img_etat; ?></a></th>
  230. <th class="td_type" style='display:none' title="f : Famille du matיriel">
  231. <a href="#" onclick="order_by('<?PHP echo $tri_type; ?>', $('filt').value);">
  232. Famille<sup>f</sup><?PHP echo $img_type; ?></a></th>
  233. <th class="td_stype" style='display:none' title="sf : Sous Famille du matיriel">
  234. <a href="#" onclick="order_by('<?PHP echo $tri_stype; ?>', $('filt').value);">
  235. Sous-famille<sup>sf</sup> <?PHP echo $img_stype; ?></a></th>
  236. <th class="td_marque" title="m : Marque du matיriel">
  237. <a href="#" onclick="order_by('<?PHP echo $tri_marque; ?>', $('filt').value);">
  238. Marque<sup>m</sup> <?PHP echo $img_marque; ?></a></th>
  239. <th class="td_modele" title="mo : Modטle du matיriel">
  240. <a href="#" onclick="order_by('<?PHP echo $tri_modele; ?>', $('filt').value);">
  241. Modטle<sup>mo</sup> <?PHP echo $img_modele; ?></a></th>
  242. <th class="td_salle" title="sa : Salle oש est affectי le matיriel">
  243. <a href="#" onclick="order_by('<?PHP echo $tri_salle; ?>', $('filt').value);">
  244. Salle<sup>sa</sup> <?PHP echo $img_salle; ?></a></th>
  245. <th class='td_origine' title="o : Propriיtaire et annיe d'achat du matיriel">
  246. <a href="#" onclick="order_by('<?PHP echo $tri_origine; ?>', $('filt').value);">
  247. Origine<sup>o</sup> <?PHP echo $img_origine; ?></a></th>
  248. <?PHP
  249. if ( $E_chk ) {
  250. echo "<th>&nbsp</th>
  251. <th>&nbsp</th>";
  252. }
  253. $compteur = 0;
  254. // On parcourt le tableau
  255. foreach ( $liste_des_materiels as $record ) {
  256. // On יcrit les lignes en brut dans la page html
  257. // alternance des couleurs
  258. $tr_class = ($compteur % 2) == 0 ? "tr1" : "tr2";
  259. $nom = $record['mat_nom'];
  260. $dsit = $record['mat_dsit'];
  261. $serial = $record['mat_serial'];
  262. $etat = $record['mat_etat'];
  263. $marque = $record['marque_marque'];
  264. $model = $record['marque_model'];
  265. $type = $record['marque_type'];
  266. $stype = $record['marque_stype'];
  267. $id = $record['mat_id'];
  268. $salle = $record['salle_nom'];
  269. $salle_id = $record['salle_id'];
  270. $origine = $record['mat_origine'];
  271. $user = $record['user_nom'];
  272. // test si la machine est prיtיe ou pas
  273. $rq_machine_pretee = $con_gespac->QueryOne ( "SELECT mat_id FROM materiels WHERE user_id<>1 AND mat_id=$id" );
  274. $mat_id = @$rq_machine_pretee; // crado : le @ permet de ne pas afficher d'erreur si la requete ne renvoie rien. A modifier, יvidement
  275. if ( !isset($mat_id) ) { // la machine n'est pas prךtיe ($mat_id n'existe pas)
  276. $id_pret = 0;
  277. } else { // la machine est prךtיe ($mat_id existe)
  278. $id_pret = 1;
  279. }
  280. if ($salle == 'PRETS') {
  281. if ($user == 'ati') {
  282. $font_color = "#18c900";
  283. $pret = "Disponible";
  284. } else {
  285. $font_color = "#0BAFF0";
  286. $pret = "$user";
  287. }
  288. } else {
  289. $font_color = "#FF0000";
  290. $pret = "Indisponible";
  291. }
  292. echo "<tr id=tr_id$id class=$tr_class>";
  293. /* chckbox */ if ( $E_chk ) echo "<td> <input type=checkbox name=chk indexed=true value='$id' onclick=\"select_cette_ligne('$id', $compteur) ; \"> </td>";
  294. /* nom */ echo "<td> <a href='gestion_inventaire/voir_fiche_materiel.php?height=500&width=640&mat_nom=$nom&mat_ssn=$serial' rel='slb_mat' title='Nom du matיriel : $nom'>$nom</a> </td>";
  295. /* pret */ echo "<td class='td_pret' style='display:none'><font color=$font_color> $pret </font></td>";
  296. /* dsit */ echo "<td class='td_dsit'> $dsit </td>";
  297. /* serial */ echo "<td class='td_serial'> $serial </td>";
  298. /* etat */ echo "<td class='td_etat'> <a href='gestion_inventaire/voir_membres_etat.php?height=480&width=640&etat=$etat' rel='slb_mat' title='Liste des materiels $etat'>$etat</a> </td>";
  299. /* type */ echo "<td class='td_type' style='display:none'> <a href='gestion_inventaire/voir_membres-marque_type.php?height=480&width=720&marque_type=$type' rel='slb_mat' title='Liste de la famille $type'>$type</a></td>";
  300. /* stype */ echo "<td class='td_stype' style='display:none'> <a href='gestion_inventaire/voir_membres-marque_stype.php?height=480&width=720&marque_stype=$stype' rel='slb_mat' title='Liste de la sous famille $stype'>$stype</a></td>";
  301. /* marque */ echo "<td class='td_marque'> <a href='gestion_inventaire/voir_membres-marque_marque.php?height=480&width=720&marque_marque=$marque' rel='slb_mat' title='Liste de la marque $marque'>$marque</a></td>";
  302. /* modele */ echo "<td class='td_modele' > <a href='gestion_inventaire/voir_membres-marque_model.php?height=480&width=720&marque_model=$model' rel='slb_mat' title='Liste du modטle $model'>$model</a></td>";
  303. /* salle */ echo "<td class='td_salle'> <a href='gestion_inventaire/voir_membres_salle.php?height=480&width=640&salle_id=$salle_id' rel='slb_mat' title='Liste du matיriel dans la salle $salle'>$salle</a> </td>";
  304. /* origine */ echo "<td class='td_origine'> <a href='gestion_inventaire/voir_membres_origine.php?height=480&width=640&origine=$origine' rel='slb_mat' title='Liste du matיriel ayant pour origine $origine'>$origine</a> </td>";
  305. if ( $E_chk ) {
  306. /* modif */ echo "<td class='buttons'><a href='gestion_inventaire/form_materiels.php?height=500&width=640&action=mod&id=$id&mat_ssn=$serial' rel='slb_mat' title='Formulaire de modification du matיriel $nom'><img src='" . ICONSPATH . "edit.png'> </a></td>";
  307. /* suppr */ echo "<td class='buttons'><a href='#' onclick=\"javascript:validation_suppr_materiel('$id', '$model', '$nom', this.parentNode.parentNode.rowIndex, $id_pret);\"> <img src='" . ICONSPATH . "delete.png' title='supprimer $nom'> </a> </td>";
  308. }
  309. echo "</tr>";
  310. $compteur++;
  311. }
  312. ?>
  313. </table>
  314. </center>
  315. <!-- Ancre bas de page -->
  316. <a name="basdepage"></a>
  317. <br>
  318. </body>
  319. <script type="text/javascript">
  320. window.addEvent('domready', function(){
  321. // activation des slb
  322. SexyLightbox = new SexyLightBox({color:'black', dir: 'img/sexyimages', find:'slb_mat'});
  323. // fonction de filtrage
  324. function filter (phrase) {
  325. document.location.href='index.php?page=materiels&filter=' + encodeURIComponent(phrase);
  326. };
  327. // Tamporisation du filtre + envoi
  328. $('filt').addEvent('keyup', function(el) {
  329. el.stop();
  330. if($defined(this.timer))
  331. $clear(this.timer);
  332. this.timer = (function() { filter($('filt').value); }).delay(1000);
  333. });
  334. // AJAX
  335. $('post_form').addEvent('submit', function(e) { // Pour poster un formulaire
  336. new Event(e).stop();
  337. new Request({
  338. method: this.method,
  339. url: this.action,
  340. onSuccess: function(responseText, responseXML, filt) {
  341. $('targetback').setStyle("display","block"); $('target').setStyle("display","block");
  342. $('target').set('html', responseText);
  343. window.setTimeout("document.location.href='index.php?page=materiels&filter=" + $('filt').value + "'", 1500);
  344. }
  345. }).send(this.toQueryString());
  346. });
  347. });
  348. // *********************************************************************************
  349. //
  350. // Fonction de validation de la suppression d'un matיriel
  351. //
  352. // *********************************************************************************
  353. function validation_suppr_materiel (id, model, nom, row, id_pret) {
  354. if (id_pret == 0) {
  355. var valida = confirm('Voulez vous supprimer le matיriel ' + nom + ' de modטle ' + model + " ?");
  356. // si la rיponse est TRUE ==> on lance la page post_materiels.php
  357. if (valida) {
  358. /* On dיselectionne toutes les coches */
  359. select_cette_ligne ( id, row, 0 );
  360. $('targetback').setStyle("display","block"); $('target').setStyle("display","block");
  361. $('target').load("gestion_inventaire/post_materiels.php?action=suppr&id=" + id);
  362. window.setTimeout("document.location.href='index.php?page=materiels&filter=" + $('filt').value + "'", 1500);
  363. }
  364. } else {
  365. alert('Cette machine est prךtיe ! Rendez-la avant la suppression !');
  366. }
  367. }
  368. // *********************************************************************************
  369. //
  370. // Selection/dיselection de toutes les rows
  371. //
  372. // *********************************************************************************
  373. function checkall(_table) {
  374. var table = document.getElementById(_table); // le tableau du matיriel
  375. var checkall_box = document.getElementById('checkall'); // la checkbox "checkall"
  376. for ( var i = 1 ; i < table.rows.length ; i++ ) {
  377. var lg = table.rows[i].id // le tr_id (genre tr115)
  378. if (checkall_box.checked == true) {
  379. document.getElementsByName("chk")[i - 1].checked = true; // on coche toutes les checkbox
  380. select_cette_ligne( lg.substring(5), i, 1 ) //on selectionne la ligne et on ajoute l'index
  381. } else {
  382. document.getElementsByName("chk")[i - 1].checked = false; // on dיcoche toutes les checkbox
  383. select_cette_ligne( lg.substring(5), i, 0 ) //on dיselectionne la ligne et on la retire de l'index
  384. }
  385. }
  386. }
  387. // *********************************************************************************
  388. //
  389. // Ajout des index pour postage sur clic de la checkbox
  390. //
  391. // *********************************************************************************
  392. function select_cette_ligne( tr_id, num_ligne, check ) {
  393. var chaine_id = $('materiel_a_poster').value;
  394. var table_id = chaine_id.split(";");
  395. var nb_selectionnes = $('nb_selectionnes');
  396. var ligne = "tr_id" + tr_id; //on rיcupטre l'tr_id de la row
  397. var li = document.getElementById(ligne);
  398. if ( li.style.display == "" ) { // si une ligne est masquיe on ne la selectionne pas (pratique pour le filtre)
  399. switch (check) {
  400. case 1: // On force la selection si la ligne n'est pas dיjא cochיe
  401. if ( !table_id.contains(tr_id) ) { // la valeur n'existe pas dans la liste
  402. table_id.push(tr_id);
  403. li.className = "selected";
  404. nb_selectionnes.innerHTML = "[" + (table_id.length-1) + "] sיlectionnי(s)"; // On entre le nombre de machines sיlectionnיes
  405. }
  406. break;
  407. case 0: // On force la dיselection
  408. if ( table_id.contains(tr_id) ) { // la valeur existe dans la liste on le supprime donc le tr_id de la liste
  409. table_id.erase(tr_id);
  410. nb_selectionnes.innerHTML = " [" + (table_id.length-1) + "] sיlectionnי(s)"; // On entre le nombre de machines sיlectionnיes
  411. // alternance des couleurs calculיe avec la paritי
  412. if ( num_ligne % 2 == 0 ) li.className="tr1"; else li.className="tr2";
  413. }
  414. break;
  415. default: // le check n'est pas prיcisי, la fonction dיtermine si la ligne est selectionnיe ou pas
  416. if ( table_id.contains(tr_id) ) { // la valeur existe dans la liste on le supprime donc le tr_id de la liste
  417. table_id.erase(tr_id);
  418. nb_selectionnes.innerHTML = " [" + (table_id.length-1) + "] sיlectionnי(s)"; // On entre le nombre de machines sיlectionnיes
  419. // alternance des couleurs calculיe avec la paritי
  420. if ( num_ligne % 2 == 0 ) li.className="tr1"; else li.className="tr2";
  421. } else { // le tr_id n'est pas trouvי dans la liste, on crיי un nouvel tr_id א la fin du tableau
  422. table_id.push(tr_id);
  423. li.className = "selected";
  424. nb_selectionnes.innerHTML = " [" + (table_id.length-1) + "] sיlectionnי(s)"; // On entre le nombre de machines sיlectionnיes
  425. }
  426. break;
  427. }
  428. // on concatטne tout le tableau dans une chaine de valeurs sיparיes par des ;
  429. $('materiel_a_poster').value = table_id.join(";");
  430. if ( $('materiel_a_poster').value != "" ) {
  431. $('modif_selection').setStyle("display","inline");
  432. $('rename_selection').setStyle("display","inline");
  433. $('affect_selection').setStyle("display","inline");
  434. nb_selectionnes.setStyle("display","inline");
  435. } else {
  436. $('modif_selection').setStyle("display","none");
  437. $('rename_selection').setStyle("display","none");
  438. $('affect_selection').setStyle("display","none");
  439. nb_selectionnes.setStyle("display","none");
  440. }
  441. }
  442. }
  443. // *********************************************************************************
  444. //
  445. // Modifie א la volיe l'affectation dans la salle
  446. //
  447. // *********************************************************************************
  448. function change_affectation_salle ( salleid ) {
  449. var table = document.getElementById("mat_table");
  450. var salle_selected_id = document.getElementById('salle_select').selectedIndex;
  451. var salle_selected_text = document.getElementById('salle_select').options[salle_selected_id].text;
  452. for (var r = 1; r < table.rows.length; r++){
  453. if ( document.getElementsByName("chk")[r-1].checked == true ) {
  454. var lg = "<a href='gestion_inventaire/voir_membres_salle.php?height=480&width=640&salle_id=" + salleid + "' rel='slb_mat' title='Membres de la salle " + salle_selected_text + "'>" + salle_selected_text + "</a>";
  455. // On change le texte de la salle par la nouvelle affectation
  456. document.getElementById('mat_table').rows[r].cells[6].innerHTML = lg;
  457. }
  458. }
  459. }
  460. // *********************************************************************************
  461. //
  462. // Montre ou masque des colonnes
  463. //
  464. // *********************************************************************************
  465. function hidethem (col_name, show) {
  466. if ( show == true)
  467. var state = "";
  468. else var state = "none";
  469. $$(col_name).each(function(item) {
  470. item.style.display = state;
  471. })
  472. // On ajuste la taille de la barre d'entךte
  473. //$("entete-materiels").style.width = $("contenu").getStyle('width');
  474. }
  475. function post_modif_entete () {
  476. $('target').load("gestion_inventaire/post_materiels.php?action=entetes&value=" + etat_entetes() );
  477. }
  478. // *********************************************************************************
  479. //
  480. // Montre ou masque les options d'affichage de la page
  481. //
  482. // *********************************************************************************
  483. function showhide_options() {
  484. if ( $('options_colonnes').style.display == 'block' ) {
  485. $('options_colonnes').style.display = 'none';
  486. } else {
  487. $('options_colonnes').style.display = 'block';
  488. }
  489. }
  490. // *********************************************************************************
  491. //
  492. // Montre ou masque l'affecation directe א une salle
  493. //
  494. // *********************************************************************************
  495. function toggle_affectsalle() {
  496. if ( $('affect_box').style.display == 'block' ) {
  497. $('affect_box').style.display = 'none';
  498. } else {
  499. $('affect_box').style.display = 'block';
  500. }
  501. }
  502. // *********************************************************************************
  503. //
  504. // Tri ORDERBY
  505. //
  506. // *********************************************************************************
  507. function order_by (tri, phrase) {
  508. document.location.href="index.php?page=materiels&tri=" + tri + "&filter=" + phrase;
  509. }
  510. // *********************************************************************************
  511. //
  512. // On retourne la liste des יtats des entךtes (colonne montrיe ou masquיe)
  513. //
  514. // *********************************************************************************
  515. function etat_entetes () {
  516. var liste = "";
  517. $$('.opt_entete').each(function(item) {
  518. if ( item.checked )
  519. liste += "1";
  520. else
  521. liste += "0";
  522. });
  523. return liste;
  524. }
  525. // *********************************************************************************
  526. //
  527. // initialisation des cases א cocher et de l'יtat des colonnes (hide/show)
  528. //
  529. // *********************************************************************************
  530. function init_entetes (value) {
  531. if (value.substr(0, 1) == "1") {$('chk_pret').checked = true; hidethem('.td_pret', true);}
  532. else {$('chk_pret').checked = false; hidethem('.td_pret', false);}
  533. if (value.substr(1, 1) == "1") {$('chk_dsit').checked = true; hidethem('.td_dsit', true);}
  534. else {$('chk_dsit').checked = false; hidethem('.td_dsit', false);}
  535. if (value.substr(2, 1) == "1") {$('chk_serial').checked = true; hidethem('.td_serial', true);}
  536. else {$('chk_serial').checked = false; hidethem('.td_serial', false);}
  537. if (value.substr(3, 1) == "1") {$('chk_etat').checked = true; hidethem('.td_etat', true);}
  538. else {$('chk_etat').checked = false; hidethem('.td_etat', false);}
  539. if (value.substr(4, 1) == "1") {$('chk_type').checked = true; hidethem('.td_type', true);}
  540. else {$('chk_type').checked = false; hidethem('.td_type', false);}
  541. if (value.substr(5, 1) == "1") {$('chk_stype').checked = true; hidethem('.td_stype', true);}
  542. else {$('chk_stype').checked = false; hidethem('.td_stype', false);}
  543. if (value.substr(6, 1) == "1") {$('chk_modele').checked = true; hidethem('.td_modele', true);}
  544. else {$('chk_modele').checked = false; hidethem('.td_modele', false);}
  545. if (value.substr(7, 1) == "1") {$('chk_marque').checked = true; hidethem('.td_marque', true);}
  546. else {$('chk_marque').checked = false; hidethem('.td_marque', false);}
  547. if (value.substr(8, 1) == "1") {$('chk_salle').checked = true; hidethem('.td_salle', true);}
  548. else {$('chk_salle').checked = false; hidethem('.td_salle', false);}
  549. if (value.substr(9, 1) == "1") {$('chk_origine').checked = true; hidethem('.td_origine', true);}
  550. else {$('chk_origine').checked = false; hidethem('.td_origine', false);}
  551. }
  552. // On initialise tout le bazar d'entךte en cochant les checkbox et en cachant/montrant les colonnes
  553. init_entetes ('<?PHP echo $_SESSION['entetes'];?>');
  554. </script>