Commit fca9604ce2c13b128735c644da629f5ac1ff3907

Authored by Etienne Pallier
1 parent 6b4e9456
Exists in master and in 1 other branch dev

Bugfix "Lignes par page" sur liste matériels => marchait pas pour "150"

v4.103.23-3.7.9
@@ -119,8 +119,9 @@ Outre ces changements, voici d'autres changements importants : @@ -119,8 +119,9 @@ Outre ces changements, voici d'autres changements importants :
119 119
120 120
121 ------- 121 -------
122 -01/10/2020 v4.103.22-3.7.9 (EP)  
123 - - (i) Ajout règles validation pour responsabilités attribuées à un User 122 +01/10/2020 v4.103.23-3.7.9 (EP)
  123 + - (i) Ajout règles validation pour responsabilités attribuées à un User
  124 + - (b) Bugfix "Lignes par page" sur liste matériels => marchait pas pour "150"
124 125
125 ------- 126 -------
126 30/09/2020 v4.103.21-3.7.9 (EP) 127 30/09/2020 v4.103.21-3.7.9 (EP)
@@ -43,7 +43,7 @@ Logiciel testé et validé sur les configurations suivantes : @@ -43,7 +43,7 @@ Logiciel testé et validé sur les configurations suivantes :
43 -------------------------------------------------------------------------------------------- 43 --------------------------------------------------------------------------------------------
44 44
45 Date: 01/10/2020 45 Date: 01/10/2020
46 -Version: 4.103.22-3.7.9 46 +Version: 4.103.23-3.7.9
47 47
48 48
49 HISTORIQUE DES CHANGEMENTS DE VERSION : voir le fichier CHANGES.txt (ou la page web /pages/changes) 49 HISTORIQUE DES CHANGEMENTS DE VERSION : voir le fichier CHANGES.txt (ou la page web /pages/changes)
src/Controller/MaterielsController.php
@@ -3361,7 +3361,7 @@ class MaterielsController extends AppController { @@ -3361,7 +3361,7 @@ class MaterielsController extends AppController {
3361 3361
3362 $CAS = 0; 3362 $CAS = 0;
3363 3363
3364 - // CAS 1 - EXPORT SELECTED materiels only 3364 + // CAS 1 - EXPORT uniquement les materiels selectionnés (cochés)
3365 if ($this->request->getData('export') !== null) { 3365 if ($this->request->getData('export') !== null) {
3366 $CAS = 1; 3366 $CAS = 1;
3367 $this->myDebug("IN EXPORT"); 3367 $this->myDebug("IN EXPORT");
@@ -3421,9 +3421,76 @@ class MaterielsController extends AppController { @@ -3421,9 +3421,76 @@ class MaterielsController extends AppController {
3421 //$this->myDebug($materiels); 3421 //$this->myDebug($materiels);
3422 //} 3422 //}
3423 3423
3424 - // CAS 2 - EXPORT ALL materiels  
3425 - } else if ($this->request->getData('exportAll') !== null) { 3424 + // CAS 2 - EXPORT liste courante
  3425 + } else if ($this->request->getData('exportCurrent') !== null) {
  3426 +
3426 $CAS = 2; 3427 $CAS = 2;
  3428 + $this->myDebug("IN exportCurrent");
  3429 + $what = $this->request->getData('what');
  3430 + debug($what);
  3431 +
  3432 + $selectedMateriels = [];
  3433 + $i = 0;
  3434 + //$data = $this->request->getData();
  3435 + $data = $this->request->getData();
  3436 + debug($data);exit;
  3437 + foreach ($data as $val) {
  3438 + if ($val == 1) {
  3439 + $selectedMateriels[$i] = key($data);
  3440 + $i ++;
  3441 + }
  3442 + next($data);
  3443 + }
  3444 +
  3445 + $this->myDebug($selectedMateriels);
  3446 + /*
  3447 + // Si la liste de materiels cochés est vide, ne rien faire
  3448 + if (empty($selectedMateriels)) {
  3449 + if ($what != '' && $what != 'search') return $this->redirect(['action' => 'index', $what]);
  3450 + else if ($what == 'search') return $this->redirect('javascript:window.history.go(-3)');
  3451 + else return $this->redirect(['action' => 'index']);
  3452 + }
  3453 + */
  3454 +
  3455 + //if (sizeof($selectedMateriels) > 0) {
  3456 + if (! empty($selectedMateriels)) {
  3457 + /*
  3458 + $materiels = $this->Materiels->find('all')
  3459 + ->where(['Materiels.id' => $selectedMateriels[0]])
  3460 + ->contain($contain);
  3461 + for ($j = 0; $j < sizeof($selectedMateriels); $j ++) {
  3462 + $materiels->orWhere([
  3463 + 'Materiels.id' => $selectedMateriels[$j]
  3464 + ]);
  3465 + }
  3466 + */
  3467 + //$materielsTable = TableRegistry::getTableLocator()->get('Materiels');
  3468 + //$materiels = $materielsTable->find()
  3469 + $materiels = $this->Materiels->find()
  3470 + ->contain($contain)
  3471 + ->where(['Materiels.id' => $selectedMateriels[0]]);
  3472 + for ($j = 0; $j < sizeof($selectedMateriels); $j ++)
  3473 + $materiels->orWhere( ['Materiels.id' => $selectedMateriels[$j]] );
  3474 + $materiels->order($order);
  3475 + /*
  3476 + $materiels = $this->Materiels->find()
  3477 + ->contain($contain)
  3478 + ->where([
  3479 + //'OR' => [['id' => 2], ['id' => 10]],
  3480 + 'OR' => [$selectedMateriels],
  3481 + ]);
  3482 + */
  3483 + }
  3484 + //$this->myDebug($materiels);
  3485 + //}
  3486 +
  3487 +
  3488 +
  3489 +
  3490 +
  3491 + // CAS 3 - EXPORT TOUS les matériels de la BD
  3492 + } else if ($this->request->getData('exportAll') !== null) {
  3493 + $CAS = 3;
3427 $this->myDebug("IN EXPORT ALL"); 3494 $this->myDebug("IN EXPORT ALL");
3428 3495
3429 // Exporte seulement les materiels du statut coché 3496 // Exporte seulement les materiels du statut coché
@@ -3464,9 +3531,10 @@ class MaterielsController extends AppController { @@ -3464,9 +3531,10 @@ class MaterielsController extends AppController {
3464 $this->myDebug("what is " . $what); 3531 $this->myDebug("what is " . $what);
3465 $this->myDebug("statut is " . $status); 3532 $this->myDebug("statut is " . $status);
3466 3533
3467 - // CAS 3 - Export du résultat de Recherche 3534 +
  3535 + // CAS 4 - Export du résultat de Recherche (find)
3468 } else if (isset($this->request->getAttribute('params')['pass'][0])) { 3536 } else if (isset($this->request->getAttribute('params')['pass'][0])) {
3469 - $CAS = 3; 3537 + $CAS = 4;
3470 $this->myDebug("RECHERCHE"); 3538 $this->myDebug("RECHERCHE");
3471 $what = $this->request->getAttribute('params')['pass'][0]; 3539 $what = $this->request->getAttribute('params')['pass'][0];
3472 3540
@@ -3474,9 +3542,9 @@ class MaterielsController extends AppController { @@ -3474,9 +3542,9 @@ class MaterielsController extends AppController {
3474 $materiels = $this->request->getSession()->read("result"); 3542 $materiels = $this->request->getSession()->read("result");
3475 } 3543 }
3476 3544
3477 - // CAS 4 (???) - Tous les matériels (sauf ARCHIVED) 3545 + // CAS 5 (???) - Tous les matériels (sauf ARCHIVED)
3478 } else { 3546 } else {
3479 - $CAS = 4; 3547 + $CAS = 5;
3480 $this->myDebug("OTHER CASE 4"); 3548 $this->myDebug("OTHER CASE 4");
3481 /* 3549 /*
3482 $materiels = $this->Materiels->find('all', [ 3550 $materiels = $this->Materiels->find('all', [
@@ -3497,7 +3565,8 @@ class MaterielsController extends AppController { @@ -3497,7 +3565,8 @@ class MaterielsController extends AppController {
3497 if (empty($materiels)) { 3565 if (empty($materiels)) {
3498 if ($what != '' && $what != 'search') return $this->redirect(['action' => 'index', $what]); 3566 if ($what != '' && $what != 'search') return $this->redirect(['action' => 'index', $what]);
3499 else if ($what == 'search') return $this->redirect('javascript:window.history.go(-3)'); 3567 else if ($what == 'search') return $this->redirect('javascript:window.history.go(-3)');
3500 - else return $this->redirect(['action' => 'index']); 3568 + //else return $this->redirect(['action' => 'index']);
  3569 + return $this->redirect(['action' => 'index']);
3501 } 3570 }
3502 3571
3503 /* 3572 /*
@@ -3509,7 +3578,7 @@ class MaterielsController extends AppController { @@ -3509,7 +3578,7 @@ class MaterielsController extends AppController {
3509 3578
3510 // NOW, CREATE THE CSV file from $materiels 3579 // NOW, CREATE THE CSV file from $materiels
3511 3580
3512 - if ($CAS == 3) 3581 + if ($CAS == 4)
3513 // Tableau de materiels, chaque materiel étant un objet query 3582 // Tableau de materiels, chaque materiel étant un objet query
3514 $this->myDebug("Nb matos = " . count($materiels)); 3583 $this->myDebug("Nb matos = " . count($materiels));
3515 else 3584 else
@@ -3523,23 +3592,6 @@ class MaterielsController extends AppController { @@ -3523,23 +3592,6 @@ class MaterielsController extends AppController {
3523 //$this->myDebug($materiels, true); 3592 //$this->myDebug($materiels, true);
3524 //$this->myDebug($materiels); 3593 //$this->myDebug($materiels);
3525 3594
3526 - ini_set('max_execution_time', 600);  
3527 -  
3528 - $filename = 'export_' . date("Y-m-d") . '.csv';  
3529 - $csv_file = fopen('php://output', 'w');  
3530 -  
3531 - $this->response->header([  
3532 -  
3533 - // CRAL:  
3534 - //'Content-Type: text/csv'  
3535 - 'Content-Type: application/csv',  
3536 -  
3537 - //CRAL:  
3538 - //"Content-disposition: attachment; filename=Demande_bureaux_" . date("Ymd").".csv");  
3539 - 'Content-Disposition: attachment; filename="' . $filename . '"'  
3540 - ]);  
3541 -  
3542 - $this->response->sendHeaders();  
3543 $configuration = $this->confLabinvent; 3595 $configuration = $this->confLabinvent;
3544 $nomgroupemetier = $configuration->nom_groupe_metier; 3596 $nomgroupemetier = $configuration->nom_groupe_metier;
3545 $nomgroupethematique = $configuration->nom_groupe_thematique; 3597 $nomgroupethematique = $configuration->nom_groupe_thematique;
@@ -3554,38 +3606,53 @@ class MaterielsController extends AppController { @@ -3554,38 +3606,53 @@ class MaterielsController extends AppController {
3554 $nomgroupethematique = preg_replace('#&([A-za-z])(?:acute|cedil|caron|circ|grave|orn|ring|slash|th|tilde|uml);#', '\1', $nomgroupethematique); 3606 $nomgroupethematique = preg_replace('#&([A-za-z])(?:acute|cedil|caron|circ|grave|orn|ring|slash|th|tilde|uml);#', '\1', $nomgroupethematique);
3555 $nomgroupethematique = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $nomgroupethematique); // pour les ligatures e.g. '&oelig;' 3607 $nomgroupethematique = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $nomgroupethematique); // pour les ligatures e.g. '&oelig;'
3556 $nomgroupethematique = preg_replace('#&[^;]+;#', '', $nomgroupethematique); 3608 $nomgroupethematique = preg_replace('#&[^;]+;#', '', $nomgroupethematique);
3557 - 3609 +
3558 // supprime les autres caractères 3610 // supprime les autres caractères
3559 - $header_row = [  
3560 //"id", 3611 //"id",
  3612 + $header_row = [
3561 "Désignation", 3613 "Désignation",
3562 - "Sur-categorie",  
3563 - "Categorie",  
3564 - "Sous-categorie",  
3565 - "Numero interne", 3614 + "Sur-catégorie",
  3615 + "Catégorie",
  3616 + "Sous-catégorie",
  3617 + "Numéro interne",
3566 "Description", 3618 "Description",
3567 "Organisme", 3619 "Organisme",
3568 "Mat. administratif", 3620 "Mat. administratif",
3569 "Mat. technique", 3621 "Mat. technique",
3570 "Statut", 3622 "Statut",
3571 "Date d'acquisition", 3623 "Date d'acquisition",
3572 - "Date de reception", 3624 + "Date de réception",
3573 "Fournisseur", 3625 "Fournisseur",
3574 "Prix HT", 3626 "Prix HT",
3575 "EOTP", 3627 "EOTP",
3576 - "Numero de commande", 3628 + "Numéro de commande",
3577 "Code comptable", 3629 "Code comptable",
3578 - "Numero de serie", 3630 + "Numéro de série",
3579 $nomgroupethematique, 3631 $nomgroupethematique,
3580 $nomgroupemetier, 3632 $nomgroupemetier,
3581 - "Numero inventaire organisme",  
3582 - "Ancien Numero inventaire", 3633 + "Numéro inventaire organisme",
  3634 + "Ancien Numéro inventaire",
3583 "Site stockage", 3635 "Site stockage",
3584 "Gestionnaire", 3636 "Gestionnaire",
3585 "Nom responsable", 3637 "Nom responsable",
3586 "Email responsable" 3638 "Email responsable"
3587 ]; 3639 ];
3588 3640
  3641 + ini_set('max_execution_time', 600);
  3642 +
  3643 + $filename = 'export_' . date("Y-m-d") . '.csv';
  3644 + $csv_file = fopen('php://output', 'w');
  3645 +
  3646 + $this->response->header([
  3647 + // CRAL:
  3648 + //'Content-Type: text/csv'
  3649 + 'Content-Type: application/csv',
  3650 + //CRAL:
  3651 + //"Content-disposition: attachment; filename=Demande_bureaux_" . date("Ymd").".csv");
  3652 + 'Content-Disposition: attachment; filename="' . $filename . '"'
  3653 + ]);
  3654 + $this->response->sendHeaders();
  3655 +
3589 // 1) Write HEADER row 3656 // 1) Write HEADER row
3590 fputcsv($csv_file, $header_row, ';'); 3657 fputcsv($csv_file, $header_row, ';');
3591 3658
src/Template/Materiels/find.ctp
1 -  
2 -<div class="index col-lg-5 col-md-7 col-sm-9">  
3 - <h2>  
4 - <i class="icon-search"></i> Recherche de matériel  
5 - </h2>  
6 <?php 1 <?php
7 2
8 -// (EP) Variables exportées par MaterielsController pour cette vue (à compléter) 3 +use Cake\I18n\Date;
  4 +use Cake\I18n\Time;
9 5
  6 +// (EP) Variables exportées par MaterielsController pour cette vue (à compléter)
10 $s_nom_gest = $s_nom_gest; 7 $s_nom_gest = $s_nom_gest;
11 $s_nomresp = $s_nomresp; 8 $s_nomresp = $s_nomresp;
12 // $s_numero_laboratoire => plus utilisé car on préfère la recherche plein texte 9 // $s_numero_laboratoire => plus utilisé car on préfère la recherche plein texte
13 // ... 10 // ...
  11 +?>
14 12
15 13
16 -use Cake\I18n\Date;  
17 -use Cake\I18n\Time;  
18 14
  15 +<div class="index col-lg-5 col-md-7 col-sm-9">
  16 + <h2>
  17 + <i class="icon-search"></i> Recherche de matériel
  18 + </h2>
19 19
  20 +
  21 +<?php
20 $r = isset($_results); 22 $r = isset($_results);
21 if ($r) { 23 if ($r) {
22 echo '<div class="actions" style="margin-bottom: 20px; width: 100%; float: none; padding: 10px 0;">'; 24 echo '<div class="actions" style="margin-bottom: 20px; width: 100%; float: none; padding: 10px 0;">';
src/Template/Materiels/index.ctp
@@ -158,6 +158,42 @@ $displaySearchField = function($params, $searchfor, $html, $form) { @@ -158,6 +158,42 @@ $displaySearchField = function($params, $searchfor, $html, $form) {
158 echo $this->Form->end(); 158 echo $this->Form->end();
159 }; 159 };
160 160
  161 +
  162 +
  163 +
  164 +
  165 +/*
  166 +$displayExportCurrentButton = function($SELECTED_STATUS, $params, $nbMateriels, $html) {
  167 + ?>
  168 + <div class="actions" style="width: 100%; float: none; padding: 0 0;">
  169 + <?php
  170 + echo $html->link(''.' '.'exportCurrent', [
  171 + //'action' => 'index',
  172 + //'CREATED',
  173 + //'?' => ['height' => 400, 'width' => 500]
  174 + //'?' => $params + ['status'=>'CREATED']
  175 + '?' => $params
  176 + //'?' => null
  177 + //[$args],
  178 + //"http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']
  179 + ], [
  180 + 'title' => 'Exporter la liste courante',
  181 + 'style' => 'margin-right: 5px',
  182 + 'escape' => false
  183 + ]);
  184 +
  185 + echo '</p>';
  186 +
  187 + echo "</div>";
  188 +
  189 +}; // displayExportCurrentButton()
  190 +*/
  191 +
  192 +
  193 +
  194 +
  195 +
  196 +
161 $displayStatusButtons = function($SELECTED_STATUS, $params, $nbMateriels, $html) { 197 $displayStatusButtons = function($SELECTED_STATUS, $params, $nbMateriels, $html) {
162 ?> 198 ?>
163 <div class="actions" style="width: 100%; float: none; padding: 0 0;"> 199 <div class="actions" style="width: 100%; float: none; padding: 0 0;">
@@ -500,15 +536,20 @@ $displayActionButtonsForSelectedOrAllElements = function($form, $SELECTED_STATUS @@ -500,15 +536,20 @@ $displayActionButtonsForSelectedOrAllElements = function($form, $SELECTED_STATUS
500 //]); 536 //]);
501 echo $form->button('Exporter la liste des matériels cochés', ['class'=>'btn btn-outline-success', 'type'=>'submit', 'name' => 'export', 'id' => 'export', 'style' => 'margin: 0px;' ]); 537 echo $form->button('Exporter la liste des matériels cochés', ['class'=>'btn btn-outline-success', 'type'=>'submit', 'name' => 'export', 'id' => 'export', 'style' => 'margin: 0px;' ]);
502 echo "<br /><br />"; 538 echo "<br /><br />";
503 - } 539 + } // if $SELECTED_STATUS
504 540
505 - if ($USER_IS_ADMIN_OR_MORE || $USER_IS_RESPONSABLE) 541 + if ($USER_IS_ADMIN_OR_MORE || $USER_IS_RESPONSABLE) {
506 //echo $this->Form->submit('Exporter la liste complete', [ 542 //echo $this->Form->submit('Exporter la liste complete', [
507 // 'name' => 'exportAll', 543 // 'name' => 'exportAll',
508 // 'id' => 'exportAll', 544 // 'id' => 'exportAll',
509 // 'style' => 'margin: 0px;' 545 // 'style' => 'margin: 0px;'
510 //]); 546 //]);
511 - echo $form->button('Exporter la liste complete', ['class'=>'btn btn-outline-success', 'type'=>'submit', 'name' => 'exportAll', 'id' => 'exportAll', 'style' => 'margin: 0px;']); 547 +
  548 + //echo $form->button('Exporter la liste actuelle', ['class'=>'btn btn-outline-success', 'type'=>'submit', 'name' => 'exportCurrent', 'id' => 'exportCurrent', 'style' => 'margin: 0px;']);
  549 + //echo "<br /><br />";
  550 +
  551 + echo $form->button('Exporter la liste complète (tous les matériels)', ['class'=>'btn btn-outline-success', 'type'=>'submit', 'name' => 'exportAll', 'id' => 'exportAll', 'style' => 'margin: 0px;']);
  552 + }
512 553
513 }; // $displayActionButtonsForSelectedOrAllElements() 554 }; // $displayActionButtonsForSelectedOrAllElements()
514 555
@@ -727,6 +768,8 @@ echo $this-&gt;Html-&gt;link(&#39;&lt;i class=&quot;icon-plus&quot;&gt;&lt;/i&gt; Nouveau Matériel&#39;, [ @@ -727,6 +768,8 @@ echo $this-&gt;Html-&gt;link(&#39;&lt;i class=&quot;icon-plus&quot;&gt;&lt;/i&gt; Nouveau Matériel&#39;, [
727 'escape' => false 768 'escape' => false
728 ]); 769 ]);
729 echo '</p>';*/ 770 echo '</p>';*/
  771 +//if ($USER_IS_ADMIN_OR_MORE) $displayExportCurrentButton($SELECTED_STATUS, $params, $nbMateriels, $this->Html);
  772 +
730 if ($USER_IS_ADMIN_OR_MORE) $displayStatusButtons($SELECTED_STATUS, $params, $nbMateriels, $this->Html); 773 if ($USER_IS_ADMIN_OR_MORE) $displayStatusButtons($SELECTED_STATUS, $params, $nbMateriels, $this->Html);
731 //</div> 774 //</div>
732 775
@@ -1152,7 +1195,7 @@ function selectNbLines() { @@ -1152,7 +1195,7 @@ function selectNbLines() {
1152 //var nblines = parseInt($_GET('aff')); 1195 //var nblines = parseInt($_GET('aff'));
1153 var nblines = parseInt($_GET('nblines')); 1196 var nblines = parseInt($_GET('nblines'));
1154 //document.getElementById('aff-par-defaut').value = affichage; 1197 //document.getElementById('aff-par-defaut').value = affichage;
1155 - if ( [20,30,50,100,200].includes(nblines) ) 1198 + if ( [20,30,50,100,150,200].includes(nblines) )
1156 //$("#aff-par-defaut").val(nblines); 1199 //$("#aff-par-defaut").val(nblines);
1157 $("#nblines-selector").val(nblines); 1200 $("#nblines-selector").val(nblines);
1158 else 1201 else