Commit bda90e01b5b405899e2e35af8adbc8afc72e7344

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

Nouvelle page qui affiche les messages de log PAR niveau (v3.7.9.41)

- log level info, debug, et notice : disponible depuis la page Outils
(tools)
- Toules les actions importantes (add,edit,delete, changement statut...)
sont désormais loggées et donc affichables via la page Outils ci-dessus
- Accélération de la recherche du numéro de version dans le fichier
README, affichée à CHAQUE page web du site !!!
README.md
... ... @@ -54,11 +54,12 @@ Logiciel testé et validé sur les configurations suivantes :
54 54 VERSION ACTUELLE
55 55  
56 56 Date: 22/06/2020
57   -Version: 3.7.9.40
  57 +Version: 3.7.9.41
58 58 Author: EP
59 59 Commentaire:
60   - - Nouvelle page qui affiche les messages de log (level info, debug, et notice) : disponible depuis la page Outils (tools)
61   -
  60 + - Nouvelle page qui affiche les messages de log PAR niveau (level info, debug, et notice) : disponible depuis la page Outils (tools)
  61 + - Toules les actions importantes (add,edit,delete, changement statut...) sont désormais loggées et donc affichables via la page Outils ci-dessus
  62 + - Accélération de la recherche du numéro de version dans le fichier README, affichée à CHAQUE page web du site !!!
62 63  
63 64  
64 65  
... ... @@ -103,6 +104,11 @@ La liste ci-dessous est aussi en ligne ici : https://tinyurl.com/labinvent#headi
103 104  
104 105 -----------------------------------------------------------------------------------------------------------
105 106  
  107 +22/06/2020 v3.7.9.40-41 (EP)
  108 + - Nouvelle page qui affiche les messages de log PAR niveau (level info, debug, et notice) : disponible depuis la page Outils (tools)
  109 + - Toules les actions importantes (add,edit,delete, changement statut...) sont désormais loggées et donc affichables via la page Outils ci-dessus
  110 + - Accélération de la recherche du numéro de version dans le fichier README, affichée à CHAQUE page web du site !!!
  111 +
106 112 19/06/2020 v3.7.9.39 (EP)
107 113 - Tests génériques automatiques pour (presque) toutes les actions de (presque) tous les controleurs principaux (Materiels, Suivis, et Emprunts) mais aussi du controleur "quelconque" SurCategories (pour vérifier que ça marche aussi !!!)
108 114 - Dans ces tests génériques, on teste non seulement qu'une action s'exécute seulement quand elle y est autorisée, mais aussi qu'elle s'exécute correctement (au moins pour les actions CRUD : add,edit,delete...)
... ...
src/Controller/MaterielsController.php
... ... @@ -2415,13 +2415,14 @@ class MaterielsController extends AppController {
2415 2415 * @param string $from
2416 2416 * @return \Cake\Network\Response|NULL
2417 2417 */
2418   - private function statusSetTo($newStatus, $message, $id = null, $from = 'index', $onlyOneMateriel = True)
2419   - {
  2418 + private function statusSetTo($newStatus, $message, $id = null, $from = 'index', $onlyOneMateriel = True) {
2420 2419 $materiel = $this->Materiels->get($id)->set('status', $newStatus);
2421 2420  
  2421 + // - ARCHIVED
2422 2422 if ($newStatus == 'ARCHIVED')
2423 2423 $materiel->set('date_archivage', date('Y-m-d'));
2424 2424  
  2425 + // - VALIDATED
2425 2426 if ($newStatus == 'VALIDATED') {
2426 2427 $mandatoryFields = array(
2427 2428 $materiel->nom_responsable,
... ... @@ -2456,28 +2457,27 @@ class MaterielsController extends AppController {
2456 2457 // (EP 2020 03) Si on ne veut pas de bouton de suppression du message :
2457 2458 //$this->Flash->set($msgError1, ['params' => ['class' => 'alert alert-dismissible in alert-danger']]);
2458 2459 //$this->Flash->set($msgError1, ['params' => ['class' => 'alert alert-dismissible fade in alert-danger']]);
2459   - return $this->redirect([
2460   - 'action' => 'edit',
2461   - $id
2462   - ]);
  2460 + return $this->redirect(['action'=>'edit',$id]);
2463 2461 } else {
2464 2462 $this->Flash->error($msgError2);
2465 2463 return False;
2466 2464 }
2467 2465 }
2468 2466 }
2469   - }
  2467 + } // VALIDATED
2470 2468  
2471 2469 $success = False;
  2470 + // - SAVE KO
2472 2471 if (! $this->Materiels->save($materiel, [
2473 2472 'checkRules' => false,
2474 2473 'checkExisting' => false
2475 2474 ]))
2476 2475 $this->Flash->error(__($msgError2 . " (cannot be saved)"));
  2476 + // - SAVE OK
2477 2477 else {
2478 2478 $success = True;
2479   - if ($onlyOneMateriel)
2480   - $this->Flash->success(__($message));
  2479 + if ($onlyOneMateriel) $this->Flash->success(__($message));
  2480 + $this->ilog("Changement de statut (passe à '$newStatus') du matériel '$materiel' (id=$id)");
2481 2481 // TODO: ce code ne peut pas marcher !!! il faut faire un SAVE
2482 2482 if ($newStatus == 'VALIDATED')
2483 2483 if (in_array($_SESSION['Auth']['User']['sn'][0], TableRegistry::get('Users')->find('list', [
... ... @@ -2502,7 +2502,7 @@ class MaterielsController extends AppController {
2502 2502 if ($newStatus == 'ARCHIVED' || $newStatus == 'TOBEARCHIVED') {
2503 2503 $this->sendmail($materiel,3);
2504 2504 }
2505   - }
  2505 + } // SAVE OK
2506 2506  
2507 2507 if (! $onlyOneMateriel)
2508 2508 return $success;
... ...
src/Controller/PagesController.php
... ... @@ -264,6 +264,19 @@ class PagesController extends AppController
264 264 // Finalement, on affiche la $page demandée (avec render())
265 265 $this->set('page', $this->page);
266 266 $this->set(compact('subpage'));
  267 +
  268 + // /pages/logs?level=info
  269 + if ($this->page=='logs') {
  270 + $available_levels = ['info','debug','notice'];
  271 + // Paar défaut, level = INFO
  272 + $level = 'Info';
  273 + $level_arg = $this->request->getQuery('level');
  274 + if ($level_arg!==null && in_array($level_arg, $available_levels)) $level=$level_arg;
  275 + //debug($level);
  276 + $this->set(compact('level', 'available_levels'));
  277 + }
  278 +
  279 +
267 280 //debug(implode('/', $path));
268 281 //debug(implode('/', array($page,$subpage)));
269 282 try {
... ...
src/Template/Layout/default.ctp
... ... @@ -194,13 +194,16 @@ $this->append('script', $this->Html->script(['script', 'DatepickerConfig', 'onTa
194 194  
195 195 <div class="col-lg-3" id="version">
196 196 <?php
197   - // pour "what's new" : &nbsp;&nbsp;&nbsp
  197 + // LECTURE DE LA VERSION DU LOGICIEL DANS LE FICHIER README
198 198 // Set $version and $version_date
  199 + // pour "what's new" : &nbsp;&nbsp;&nbsp
199 200 // (cf https://book.cakephp.org/3.0/fr/core-libraries/file-folder.html#Cake\Filesystem)
200 201 //$version = '2.9.1.4';
201 202 //$version_date = '21/12/2018';
202 203 $wwwroot_dir = new Cake\Filesystem\Folder(WWW_ROOT);
203   - $readme_file = new Cake\Filesystem\File($wwwroot_dir->pwd() . DS . '..' . DS . 'README.md');
  204 + $readme_file_path = $wwwroot_dir->pwd() . DS . '..' . DS . 'README.md';
  205 + /* (OLD) VERSION PLUS LENTE CAR ON LISAIT TOUT LE FICHIER
  206 + $readme_file = new Cake\Filesystem\File($readme_file_path);
204 207 //dump($file);
205 208 $contents = $readme_file->read();
206 209 $lines = explode("\n", $contents);
... ... @@ -216,6 +219,27 @@ $this-&gt;append(&#39;script&#39;, $this-&gt;Html-&gt;script([&#39;script&#39;, &#39;DatepickerConfig&#39;, &#39;onTa
216 219 // $readme_file->append('J'ajoute à la fin de ce fichier.');
217 220 // $readme_file->delete(); // Je supprime ce fichier
218 221 $readme_file->close(); // Assurez-vous de fermer le fichier quand c'est fini
  222 + */
  223 + // VERSION PLUS RAPIDE CAR ON LE LIT QUE JUSQU'A LA VERSION
  224 + try {
  225 + $f = new SplFileObject($readme_file_path, "r");
  226 + } catch (Exception $e) {
  227 + die("Le fichier README $readme_file_path n'existe pas !");
  228 + }
  229 + $version = 'XXX';
  230 + $version_date = 'date?';
  231 + while (!$f->eof()) {
  232 + $line = $f->fgets();
  233 + if (substr($line, 0, strlen("Date:")) === "Date:") {
  234 + $version_date = ltrim( explode(":", $line)[1] );
  235 + // ligne suivante
  236 + $line = $f->fgets();
  237 + $version = explode(":", $line)[1];
  238 + break;
  239 + }
  240 + }
  241 + // Close file
  242 + $f=null;
219 243 ?>
220 244 <!-- VERSION M.m.f.b (version (M)ajeure, version (m)ineure, numero de nouvelle (f)onctionnalite, numero de (b)ugfix) -->
221 245 <font color="black">
... ...