Commit 19798ef9cf669701d2c27b9394da46d1232369bb

Authored by Alexandre
1 parent eef700b9

Mode_install, maj script_install, page d'acceuil -> login, maj script bd

Avancement : Implémentation complète du CRUD +++

#3528
#3530
#3531
#3533
database/labinvent_2.0_19-04-16.sql
... ... @@ -28,7 +28,12 @@ CREATE SCHEMA IF NOT EXISTS mydb DEFAULT CHARACTER SET latin1;
28 28 -- ni avec ceci :
29 29 -- grant all on mydb.* to 'bddUserName'@'%' identified by 'bddUserPass';
30 30 -- Il faut donc faire ceci (ajouter localhost) et on pourra alors se connecter a la BD !!! :
  31 +
  32 +-- Il faut supprimer l'utilisateur avant de l'ajouter.
  33 +GRANT USAGE ON *.* TO 'mydb';
  34 +DROP USER 'mydb';
31 35 grant all on mydb.* to 'mydb'@'localhost' identified by 'mydb1';
  36 +
32 37 -- Mais, ca serait plus prudent de limiter les droits (au lieu de "grant all"):
33 38 -- grant select,insert,update,delete on mydb.* to ...
34 39 flush privileges;
... ...
install/installation.sh
... ... @@ -356,14 +356,13 @@ echo "Si vous voulez le conserver, le script de creation de la BD est database/b
356 356 echo
357 357 echo "MAINTENANT :"
358 358 echo "1) Verifiez que la BD d'inventaire ($bddName) a bien ete cree (avec phpmyadmin par exemple)"
359   -echo "2) Verifiez le contenu de votre fichier de configuration de la BD (config/app.php)"
  359 +echo "2) Allez sur l'application, vous devriez arriver par défaut sur un mode install vous donnant des informations sur la configuration de votre application, vérifiez que tout les points soit validé, sinon rajouter les extensions manquantes..."
360 360 echo "3) Testez l'accès à l'application par le web"
361   -echo "Pour cela, suivez la suite des instructions qui sont dans le fichier INSTALLATION.txt (à la racine du projet), que vous avez normalement deja commence a lire."
  361 +echo "Pour aller sur l'application, suivez la suite des instructions qui sont dans le fichier INSTALLATION.txt (à la racine du projet), que vous avez normalement deja commence a lire."
362 362 echo
363 363 echo "N'oubliez pas 3 choses importantes (voir la doc INSTALLATION.txt pour plus de details) :"
364 364 echo "1) Passer en mode LDAP (si vous le souhaitez et si ca n'est pas deja fait)"
365 365 echo "2) Personnaliser les 2 fichiers logos suivants dans webroot/img/ :"
366 366 echo "- logo_entity.jpg : le logo du laboratoire"
367 367 echo "- logo_software.jpg : le logo du logiciel"
368   -echo "3) Personnaliser le logiciel pour votre entite (laboratoire) (via le fichier de configuration config/app.php)
369   -echo
  368 +echo "3) Personnaliser le logiciel pour votre entite (laboratoire) (via le menu de configuration dans la section outils de l'application)"
... ...
src/Controller/CategoriesController.php
... ... @@ -39,7 +39,9 @@ class CategoriesController extends AppController
39 39 $category = $this->Categories->get($id, [
40 40 'contain' => ['SurCategories']
41 41 ]);
42   -
  42 + //$sousCategories = $this->Categories->SousCategories->find('list');
  43 + //$this->set('sousCategories', $sousCategories);
  44 +
43 45 $this->set('category', $category);
44 46 $this->set('_serialize', ['category']);
45 47 }
... ... @@ -61,7 +63,8 @@ class CategoriesController extends AppController
61 63 $this->Flash->error(__('La catégorie n\'a pas pu être ajouté.'));
62 64 }
63 65 }
64   - $surCategories = $this->Categories->SurCategories->find('list', ['limit' => 200]);
  66 + $surCategories = $this->Categories->SurCategories->find('list', [ 'keyField' => 'id', 'valueField' => 'nom']);
  67 +
65 68 $this->set(compact('category', 'surCategories'));
66 69 $this->set('_serialize', ['category']);
67 70 }
... ... @@ -87,7 +90,8 @@ class CategoriesController extends AppController
87 90 $this->Flash->error(__('La catégorie n\'a pas pu être édité.'));
88 91 }
89 92 }
90   - $surCategories = $this->Categories->SurCategories->find('list', ['limit' => 200]);
  93 + $surCategories = $this->Categories->SurCategories->find('list', [ 'keyField' => 'id', 'valueField' => 'nom']);
  94 +
91 95 $this->set(compact('category', 'surCategories'));
92 96 $this->set('_serialize', ['category']);
93 97 }
... ...
src/Controller/EmpruntsController.php
... ... @@ -2,6 +2,8 @@
2 2 namespace App\Controller;
3 3  
4 4 use App\Controller\AppController;
  5 +use Cake\ORM\TableRegistry;
  6 +
5 7  
6 8 /**
7 9 * Emprunts Controller
... ... @@ -61,8 +63,33 @@ class EmpruntsController extends AppController
61 63 $this->Flash->error(__('L\'emprunt n\'a pas pu être ajouté..'));
62 64 }
63 65 }
64   - $materiels = $this->Emprunts->Materiels->find('list', ['limit' => 200]);
65   - $this->set(compact('emprunt', 'materiels'));
  66 + $materiels = $this->Emprunts->Materiels->find('list');
  67 + $numMateriel = $this->Emprunts->Materiels->find()->select('numero_laboratoire')->where(['id =' => $this->passedArgs[0]])->first()['numero_laboratoire'];
  68 +
  69 + // Gestion du lieu de stockage : soit on cache la DIV 'interne' et on affiche la DIV 'externe', soit on fait l'inverse (par defaut, interne)
  70 + $disp_interne = 'display:block';
  71 + $disp_externe = 'display:none';
  72 + $interne = $emprunt->get('emprunt_interne');
  73 + if (isset($interne)) {
  74 + if ($emprunt->get('emprunt_interne') == 1) {
  75 + $disp_interne = 'display:block';
  76 + $disp_externe = 'display:none';
  77 + } else {
  78 + $disp_interne = 'display:none';
  79 + $disp_externe = 'display:block';
  80 + }
  81 + }
  82 + $nom_emprunteur_int = $this->Auth->user('username');
  83 + $mail_emprunteur_int = TableRegistry::get('Users')->find()->select('email')->where(['username =' => $this->Auth->user('username')])->first()['email'];
  84 +
  85 + $nom_emprunteur_ext = '';
  86 + $mail_emprunteur_ext = '';
  87 +
  88 + $utilisateurs = TableRegistry::get('Users')->find('list', [ 'keyField' => 'nom', 'valueField' => 'nom']);
  89 +
  90 + $sites = TableRegistry::get('Sites')->find('list', [ 'keyField' => 'id', 'valueField' => 'nom']);
  91 +
  92 + $this->set(compact('emprunt', 'materiels', 'numMateriel', 'disp_externe', 'disp_interne', 'nom_emprunteur_int', 'mail_emprunteur_int', 'nom_emprunteur_ext', 'mail_emprunteur_ext', 'utilisateurs', 'sites'));
66 93 $this->set('_serialize', ['emprunt']);
67 94 }
68 95  
... ... @@ -87,8 +114,33 @@ class EmpruntsController extends AppController
87 114 $this->Flash->error(__('L\'emprunt n\'a pas pu être édité.'));
88 115 }
89 116 }
90   - $materiels = $this->Emprunts->Materiels->find('list', ['limit' => 200]);
91   - $this->set(compact('emprunt', 'materiels'));
  117 + $materiels = $this->Emprunts->Materiels->find('list');
  118 + $numMateriel = $this->Emprunts->Materiels->find()->select('numero_laboratoire')->where(['id =' => $emprunt->get('materiel_id')])->first()['numero_laboratoire'];
  119 +
  120 + // Gestion du lieu de stockage : soit on cache la DIV 'interne' et on affiche la DIV 'externe', soit on fait l'inverse (par defaut, interne)
  121 + $disp_interne = 'display:block';
  122 + $disp_externe = 'display:none';
  123 + $interne = $emprunt->get('emprunt_interne');
  124 + if (isset ($interne)) {
  125 + if ($emprunt->get('emprunt_interne') == 1) {
  126 + $disp_interne = 'display:block';
  127 + $disp_externe = 'display:none';
  128 + } else {
  129 + $disp_interne = 'display:none';
  130 + $disp_externe = 'display:block';
  131 + }
  132 + }
  133 + $nom_emprunteur_int = $this->Auth->user('username');
  134 + $mail_emprunteur_int = TableRegistry::get('Users')->find()->select('email')->where(['username =' => $this->Auth->user('username')])->first()['email'];
  135 +
  136 + $nom_emprunteur_ext = '';
  137 + $mail_emprunteur_ext = '';
  138 +
  139 + $utilisateurs = TableRegistry::get('Users')->find('list', [ 'keyField' => 'nom', 'valueField' => 'nom']);
  140 +
  141 + $sites = TableRegistry::get('Sites')->find('list', [ 'keyField' => 'id', 'valueField' => 'nom']);
  142 +
  143 + $this->set(compact('emprunt', 'materiels', 'numMateriel', 'disp_externe', 'disp_interne', 'nom_emprunteur_int', 'mail_emprunteur_int', 'nom_emprunteur_ext', 'mail_emprunteur_ext', 'utilisateurs', 'sites'));
92 144 $this->set('_serialize', ['emprunt']);
93 145 }
94 146  
... ...
src/Controller/MaterielsController.php
... ... @@ -3,6 +3,7 @@ namespace App\Controller;
3 3  
4 4 use App\Controller\AppController;
5 5 use Cake\Core\Configure;
  6 +use Cake\ORM\TableRegistry;
6 7  
7 8 /**
8 9 * Materiels Controller
... ... @@ -64,14 +65,19 @@ class MaterielsController extends AppController
64 65 $this->Flash->error(__('Le matériel n\'a pas pu être ajouté.'));
65 66 }
66 67 }
67   - $surCategories = $this->Materiels->SurCategories->find('list', ['limit' => 200]);
68   - $categories = $this->Materiels->Categories->find('list', ['limit' => 200]);
69   - $sousCategories = $this->Materiels->SousCategories->find('list', ['limit' => 200]);
70   - $groupesThematiques = $this->Materiels->GroupesThematiques->find('list', ['limit' => 200]);
71   - $groupesMetiers = $this->Materiels->GroupesMetiers->find('list', ['limit' => 200]);
72   - $organismes = $this->Materiels->Organismes->find('list', ['limit' => 200]);
73   - $sites = $this->Materiels->Sites->find('list', ['limit' => 200]);
74   - $this->set(compact('materiel', 'surCategories', 'categories', 'sousCategories', 'groupesThematiques', 'groupesMetiers', 'organismes', 'sites'));
  68 + $surCategories = $this->Materiels->SurCategories->find('list', [ 'keyField' => 'id', 'valueField' => 'nom']);
  69 + $categories = $this->Materiels->Categories->find('list', [ 'keyField' => 'id', 'valueField' => 'nom']);
  70 + $sousCategories = $this->Materiels->SousCategories->find('list', [ 'keyField' => 'id', 'valueField' => 'nom']);
  71 + $groupesThematiques = $this->Materiels->GroupesThematiques->find('list', [ 'keyField' => 'id', 'valueField' => 'nom']);
  72 + $groupesMetiers = $this->Materiels->GroupesMetiers->find('list', [ 'keyField' => 'id', 'valueField' => 'nom']);
  73 + $organismes = $this->Materiels->Organismes->find('list', [ 'keyField' => 'id', 'valueField' => 'nom']);
  74 + $sites = $this->Materiels->Sites->find('list', [ 'keyField' => 'id', 'valueField' => 'nom']);
  75 +
  76 + $utilisateurs = TableRegistry::get('Users')->find('list', [ 'keyField' => 'nom', 'valueField' => 'nom']);
  77 +
  78 + $mail_responsable = TableRegistry::get('Users')->find()->select('email')->where(['username =' => $this->Auth->user('username')])->first()['email'];
  79 +
  80 + $this->set(compact('materiel', 'surCategories', 'categories', 'sousCategories', 'groupesThematiques', 'groupesMetiers', 'organismes', 'sites', 'utilisateurs', 'mail_responsable'));
75 81 $this->set('_serialize', ['materiel']);
76 82 }
77 83  
... ... @@ -96,14 +102,25 @@ class MaterielsController extends AppController
96 102 $this->Flash->error(__('Le matériel n\'a pas pu être édité.'));
97 103 }
98 104 }
99   - $surCategories = $this->Materiels->SurCategories->find('list', ['limit' => 200]);
100   - $categories = $this->Materiels->Categories->find('list', ['limit' => 200]);
101   - $sousCategories = $this->Materiels->SousCategories->find('list', ['limit' => 200]);
102   - $groupesThematiques = $this->Materiels->GroupesThematiques->find('list', ['limit' => 200]);
103   - $groupesMetiers = $this->Materiels->GroupesMetiers->find('list', ['limit' => 200]);
104   - $organismes = $this->Materiels->Organismes->find('list', ['limit' => 200]);
105   - $sites = $this->Materiels->Sites->find('list', ['limit' => 200]);
106   - $this->set(compact('materiel', 'surCategories', 'categories', 'sousCategories', 'groupesThematiques', 'groupesMetiers', 'organismes', 'sites'));
  105 + $surCategories = $this->Materiels->SurCategories->find('list', [ 'keyField' => 'id', 'valueField' => 'nom']);
  106 + $categories = $this->Materiels->Categories->find('list', [ 'keyField' => 'id', 'valueField' => 'nom']);
  107 + $sousCategories = $this->Materiels->SousCategories->find('list', [ 'keyField' => 'id', 'valueField' => 'nom']);
  108 + $groupesThematiques = $this->Materiels->GroupesThematiques->find('list', [ 'keyField' => 'id', 'valueField' => 'nom']);
  109 + $groupesMetiers = $this->Materiels->GroupesMetiers->find('list', [ 'keyField' => 'id', 'valueField' => 'nom']);
  110 + $organismes = $this->Materiels->Organismes->find('list', [ 'keyField' => 'id', 'valueField' => 'nom']);
  111 + $sites = $this->Materiels->Sites->find('list', [ 'keyField' => 'id', 'valueField' => 'nom']);
  112 +
  113 + $utilisateurs = TableRegistry::get('Users')->find('list', [ 'keyField' => 'nom', 'valueField' => 'nom']);
  114 +
  115 + if(!empty($materiel->get('nom_responsable'))){
  116 + if(!in_array($materiel->get('nom_responsable'), $utilisateurs->toArray())){
  117 + $nom_ancien_responsable = $materiel->get('nom_responsable');
  118 + $this->set(compact('nom_ancien_responsable'));
  119 + }
  120 + }
  121 + $mail_responsable = TableRegistry::get('Users')->find()->select('email')->where(['username =' => $this->Auth->user('username')])->first()['email'];
  122 +
  123 + $this->set(compact('materiel', 'surCategories', 'categories', 'sousCategories', 'groupesThematiques', 'groupesMetiers', 'organismes', 'sites', 'utilisateurs', 'mail_responsable'));
107 124 $this->set('_serialize', ['materiel']);
108 125 }
109 126  
... ... @@ -135,25 +152,25 @@ class MaterielsController extends AppController
135 152 }
136 153  
137 154 /**
138   - * Activate debug mode
  155 + * Activate install mode
139 156 *
140 157 * @return \Cake\Network\Response|NULL
141 158 */
142   - public function debugOn() {
143   - //Configure::write('debug',true);
144   - $this->request->session()->write('debug',true);
  159 + public function installOn() {
  160 + //Configure::write('install',true);
  161 + $this->request->session()->write('install',true);
145 162  
146 163 return $this->redirect(['controller' => 'pages', 'action' => 'home']);
147 164 }
148 165  
149 166 /**
150   - * Desactivate debug mode
  167 + * Desactivate install mode
151 168 *
152 169 * @return \Cake\Network\Response|NULL
153 170 */
154   - public function debugOff() {
155   - //Configure::write('debug', false);
156   - $this->request->session()->write('debug',false);
  171 + public function installOff() {
  172 + //Configure::write('install', false);
  173 + $this->request->session()->write('install',false);
157 174  
158 175 return $this->redirect(['controller' => 'pages', 'action' => 'tools']);
159 176 }
... ...
src/Controller/PagesController.php
... ... @@ -37,6 +37,11 @@ class PagesController extends AppController
37 37 */
38 38 public function display()
39 39 {
  40 + //Si l'utilisateur n'est pas connecté, on le redirige vers la page login.ctp
  41 + if (!($this->Auth->user('id'))) {
  42 + return $this->redirect(['controller' => 'users', 'action' => 'login']);
  43 + }
  44 +
40 45 $path = func_get_args();
41 46  
42 47 $count = count($path);
... ...
src/Controller/SousCategoriesController.php
... ... @@ -61,7 +61,8 @@ class SousCategoriesController extends AppController
61 61 $this->Flash->error(__('La sous-catégorie n\'as pas pu être ajouté.'));
62 62 }
63 63 }
64   - $categories = $this->SousCategories->Categories->find('list', ['limit' => 200]);
  64 + $categories = $this->SousCategories->Categories->find('list', [ 'keyField' => 'id', 'valueField' => 'nom']);
  65 +
65 66 $this->set(compact('sousCategory', 'categories'));
66 67 $this->set('_serialize', ['sousCategory']);
67 68 }
... ... @@ -87,7 +88,8 @@ class SousCategoriesController extends AppController
87 88 $this->Flash->error(__('La sous-catégorie n\'as pas pu être édité.'));
88 89 }
89 90 }
90   - $categories = $this->SousCategories->Categories->find('list', ['limit' => 200]);
  91 + $categories = $this->SousCategories->Categories->find('list', [ 'keyField' => 'id', 'valueField' => 'nom']);
  92 +
91 93 $this->set(compact('sousCategory', 'categories'));
92 94 $this->set('_serialize', ['sousCategory']);
93 95 }
... ...
src/Controller/SuivisController.php
... ... @@ -2,6 +2,7 @@
2 2 namespace App\Controller;
3 3  
4 4 use App\Controller\AppController;
  5 +use Cake\ORM\TableRegistry;
5 6  
6 7 /**
7 8 * Suivis Controller
... ... @@ -61,8 +62,13 @@ class SuivisController extends AppController
61 62 $this->Flash->error(__('Le suivi n\'a pas pu être ajouté.'));
62 63 }
63 64 }
64   - $materiels = $this->Suivis->Materiels->find('list', ['limit' => 200]);
65   - $this->set(compact('suivi', 'materiels'));
  65 + $materiels = $this->Suivis->Materiels->find('list');
  66 +
  67 + $numMateriel = $this->Suivis->Materiels->find()->select('numero_laboratoire')->where(['id =' => $this->passedArgs[0]])->first()['numero_laboratoire'];
  68 +
  69 + $typeSuivis = TableRegistry::get('TypeSuivis')->find('list', [ 'keyField' => 'nom', 'valueField' => 'nom']);
  70 +
  71 + $this->set(compact('suivi', 'materiels', 'typeSuivis', 'numMateriel'));
66 72 $this->set('_serialize', ['suivi']);
67 73 }
68 74  
... ... @@ -87,8 +93,13 @@ class SuivisController extends AppController
87 93 $this->Flash->error(__('Le suivi n\'a pas pu être édité.'));
88 94 }
89 95 }
90   - $materiels = $this->Suivis->Materiels->find('list', ['limit' => 200]);
91   - $this->set(compact('suivi', 'materiels'));
  96 + $materiels = $this->Suivis->Materiels->find('list');
  97 +
  98 + $numMateriel = $this->Suivis->Materiels->find()->select('numero_laboratoire')->where(['id =' => $suivi->get('materiel_id')])->first()['numero_laboratoire'];
  99 +
  100 + $typeSuivis = TableRegistry::get('TypeSuivis')->find('list', [ 'keyField' => 'nom', 'valueField' => 'nom']);
  101 +
  102 + $this->set(compact('suivi', 'materiels', 'typeSuivis', 'numMateriel'));
92 103 $this->set('_serialize', ['suivi']);
93 104 }
94 105  
... ...
src/Controller/UsersController.php
... ... @@ -89,7 +89,8 @@ class UsersController extends AppController
89 89 $this->Flash->error(__('L\utilisateur n\'a pas pu être ajouté.'));
90 90 }
91 91 }
92   - $groupesMetiers = $this->Users->GroupesMetiers->find('list', ['limit' => 200]);
  92 + $groupesMetiers = $this->Users->GroupesMetiers->find('list', [ 'keyField' => 'id', 'valueField' => 'nom']);
  93 +
93 94 $this->set(compact('user', 'groupesMetiers'));
94 95 $this->set('_serialize', ['user']);
95 96 }
... ... @@ -115,7 +116,8 @@ class UsersController extends AppController
115 116 $this->Flash->error(__('L\utilisateur n\'a pas pu être édité.'));
116 117 }
117 118 }
118   - $groupesMetiers = $this->Users->GroupesMetiers->find('list', ['limit' => 200]);
  119 + $groupesMetiers = $this->Users->GroupesMetiers->find('list', [ 'keyField' => 'id', 'valueField' => 'nom']);
  120 +
119 121 $this->set(compact('user', 'groupesMetiers'));
120 122 $this->set('_serialize', ['user']);
121 123 }
... ...
src/Model/Table/EmpruntsTable.php
... ... @@ -50,46 +50,104 @@ class EmpruntsTable extends Table
50 50 ->allowEmpty('id', 'create');
51 51  
52 52 $validator
53   - ->date('date_emprunt')
54 53 ->allowEmpty('date_emprunt');
55 54  
56 55 $validator
57   - ->date('date_retour_emprunt')
58   - ->allowEmpty('date_retour_emprunt');
  56 + ->allowEmpty('date_retour_emprunt')
  57 + ->add('nom_emprunteur_ext', 'valid', ['rule' => ['checkReturnDateIsAfterLoanDate'], 'message' => 'La date de retour doit être postérieure à la date de l\'emprunt.', 'provider' => 'table']);
59 58  
60 59 $validator
61 60 ->boolean('emprunt_interne')
62 61 ->allowEmpty('emprunt_interne');
63 62  
64 63 $validator
65   - ->allowEmpty('laboratoire');
  64 + ->allowEmpty('laboratoire')
  65 + ->add('laboratoire', 'valid', ['rule' => ['check_string'], 'message' => 'Le champ doit être valide.', 'provider' => 'table'])
  66 + ->add('laboratoire', 'valid', ['rule' => ['checkLaboratoire'], 'message' => 'Le champ doit être rempli pour un emprunt externe.', 'provider' => 'table']);
66 67  
  68 + /*
67 69 $validator
68   - ->allowEmpty('e_lieu_stockage');
69   -
70   - $validator
71   - ->allowEmpty('e_lieu_detail');
72   -
  70 + ->notEmpty('e_lieu_stockage');
  71 + */
  72 +
73 73 $validator
74   - ->allowEmpty('nom_emprunteur');
75   -
  74 + ->allowEmpty('e_lieu_detail')
  75 + ->add('e_lieu_detail', 'valid', ['rule' => ['check_string'], 'message' => 'Le champ doit être valide.', 'provider' => 'table'])
  76 + ->add('e_lieu_detail', 'valid', ['rule' => ['checkLieu'], 'message' => 'Le champ doit être rempli pour un emprunt interne.', 'provider' => 'table']);
  77 +
  78 + /*
76 79 $validator
77   - ->allowEmpty('email_emprunteur');
78   -
  80 + ->notEmpty('nom_emprunteur_int');
  81 + */
  82 +
79 83 $validator
80   - ->allowEmpty('tel');
81   -
  84 + ->allowEmpty('email_emprunteur_int');
  85 +
82 86 $validator
83   - ->allowEmpty('commentaire');
  87 + ->allowEmpty('nom_emprunteur_ext')
  88 + ->add('nom_emprunteur_ext', 'valid', ['rule' => ['checkEmpruntExt'], 'message' => 'Le champ doit être rempli.', 'provider' => 'table']);
84 89  
85 90 $validator
86   - ->allowEmpty('nom_createur');
87   -
  91 + ->allowEmpty('email_emprunteur_ext')
  92 + ->add('email_emprunteur_ext', 'valid', ['rule' => ['checkEmailExt'], 'message' => 'Cet Email n\'est pas valide.', 'provider' => 'table']);
  93 +
88 94 $validator
89   - ->allowEmpty('nom_modificateur');
90   -
  95 + ->allowEmpty('commentaire')
  96 + ->add('commentaire', 'valid', ['rule' => ['check_string_with_some_special_cars'], 'message' => 'Le champ doit être valide.', 'provider' => 'table']);
  97 +
91 98 return $validator;
92 99 }
  100 +
  101 +
  102 + // autoriser les caracteres habituels standards pour un ou plusieurs MOTs
  103 + // accents + - _ / () . , \s (=space)
  104 + private $string = "a-zA-Z0-9éèàùâêôîôûç%().,\/\s\+\-_";
  105 +
  106 + public function check_string($check) {
  107 + return (bool) preg_match('/^['.$this->string.']*$/', $check);
  108 + }
  109 +
  110 + // autoriser les caracteres spéciaux (pour une PHRASE ou paragraphe) :
  111 + // check_string PLUS ces symboles ====> & * > < ? % ! : , " '
  112 + public function check_string_with_some_special_cars($check) {
  113 + return (bool) preg_match('/^['.$this->string.'?%!:,&*><\-\+\="\''.']*$/', $check);
  114 + }
  115 +
  116 + function checkReturnDateIsAfterLoanDate() {
  117 + /*
  118 + $dateEmprunt = $this->data [$this->name] ['date_emprunt'];
  119 + $dateRetour = $this->data [$this->name] ['date_retour_emprunt'];
  120 + $dateEmprunt = explode("-", $dateEmprunt);
  121 + $dateRetour = explode("-", $dateRetour);
  122 + $dateEmprunt = $dateEmprunt[2].$dateEmprunt[1].$dateEmprunt[0];
  123 + $dateRetour = $dateRetour[2].$dateRetour[1].$dateRetour[0];
  124 + if ($dateEmprunt > $dateRetour) {
  125 + return false;
  126 + }
  127 + return true;
  128 + */
  129 + return true;
  130 + }
  131 +
  132 + function checkEmprunt() {
  133 + //return ($this->data [$this->name] ['emprunt_interne'] == 1 || $this->data [$this->name] ['nom_emprunteur_ext'] != '');
  134 + return true;
  135 + }
  136 +
  137 + function checkEmail() {
  138 + //return ($this->data [$this->name] ['emprunt_interne'] == 1 || Validation::email ( $this->data [$this->name] ['email_emprunteur_ext'] ));
  139 + return true;
  140 + }
  141 +
  142 + function checkLaboratoire() {
  143 + //return ((($this->data [$this->name] ['emprunt_interne'] == 0) && ($this->data [$this->name] ['laboratoire'] != '')) || ($this->data [$this->name] ['emprunt_interne'] == 1));
  144 + return true;
  145 + }
  146 +
  147 + function checkLieu() {
  148 + //return ((($this->data [$this->name] ['emprunt_interne'] == 1) && ($this->data [$this->name] ['e_lieu_detail'] != '')) || ($this->data [$this->name] ['emprunt_interne'] == 0));
  149 + return true;
  150 + }
93 151  
94 152 /**
95 153 * Returns a rules checker object that will be used for validating
... ...
src/Model/Table/MaterielsTable.php
... ... @@ -24,6 +24,9 @@ use Cake\Validation\Validator;
24 24 class MaterielsTable extends Table
25 25 {
26 26  
  27 + public $ALL_STATUS = array('CREATED', 'VALIDATED', 'TOBEARCHIVED', 'ARCHIVED');
  28 +
  29 +
27 30 /**
28 31 * Initialize method
29 32 *
... ... @@ -85,57 +88,74 @@ class MaterielsTable extends Table
85 88 ->allowEmpty('id', 'create');
86 89  
87 90 $validator
88   - ->allowEmpty('designation');
  91 + ->notEmpty('designation' ,'Ce champ doit être rempli')
  92 + ->add('designation', 'valid', ['rule' => 'check_string', 'message' => 'Ce champ contient des caractères interdits', 'provider' => 'table']);
89 93  
90 94 $validator
  95 + ->notEmpty('sur_categorie_id', 'Vous devez sélectionner une valeur');
  96 +
  97 + $validator
  98 + ->notEmpty('categorie_id', 'Vous devez sélectionner une valeur');
  99 +
  100 + $validator
91 101 ->allowEmpty('numero_laboratoire')
92 102 ->add('numero_laboratoire', 'unique', ['rule' => 'validateUnique', 'provider' => 'table']);
93 103  
94 104 $validator
95   - ->allowEmpty('description');
  105 + ->allowEmpty('description')
  106 + ->add('description', 'valid', ['rule' => 'check_string_with_some_special_cars', 'message' => 'Ce champ contient des caractères interdits', 'provider' => 'table']);
96 107  
97 108 $validator
98 109 ->boolean('materiel_administratif')
99   - ->allowEmpty('materiel_administratif');
  110 + ->allowEmpty('materiel_administratif')
  111 + ->add('materiel_administratif', 'valid', ['rule' => 'checkAtLeastOneChecked', 'message' => 'Le matériel est obligatoirement inventoriable ou technique', 'provider' => 'table'])
  112 + ->add('materiel_administratif', 'mustbeadministratif', ['rule' => 'checkIfIsAdministratifWhenShouldBe', 'message' => 'Le matériel vaut plus de 800€ HT, il est donc obligatoirement inventoriable', 'provider' => 'table'])
  113 + ->add('materiel_administratif', 'canbeadministratif', ['rule' => 'checkIfIsNotAdministratifWhenShouldNotBe', 'message' => 'Le matériel vaut moins de 800€ HT, il n\'est donc pas inventoriable', 'provider' => 'table']);
100 114  
101 115 $validator
102 116 ->boolean('materiel_technique')
103 117 ->allowEmpty('materiel_technique');
104 118  
105 119 $validator
106   - ->allowEmpty('status');
107   -
  120 + ->add('status', 'valid', ['rule' => 'checkStatus', 'message' => 'Le statut doit prendre une des 4 valeurs CREATED, VALIDATED, TOBEARCHIVED, ou ARCHIVED', 'provider' => 'table']);
  121 +
108 122 $validator
109   - ->date('date_acquisition')
110   - ->allowEmpty('date_acquisition');
111   -
  123 + ->notEmpty('date_acquisition', 'Ce champ doit être rempli');
  124 +
112 125 $validator
113   - ->allowEmpty('fournisseur');
  126 + ->allowEmpty('fournisseur')
  127 + ->add('fournisseur', 'valid', ['rule' => 'check_string', 'message' => 'Ce champ contient des caractères interdits', 'provider' => 'table']);
114 128  
115 129 $validator
116 130 ->numeric('prix_ht')
117   - ->allowEmpty('prix_ht');
  131 + ->allowEmpty('prix_ht')
  132 + ->add('prix_ht', 'valid', ['rule' => 'check_string', 'message' => 'Ce champ contient des caractères interdits', 'provider' => 'table']);
118 133  
119 134 $validator
120   - ->allowEmpty('eotp');
  135 + ->allowEmpty('eotp')
  136 + ->add('eotp', 'valid', ['rule' => 'check_string', 'message' => 'Ce champ contient des caractères interdits', 'provider' => 'table']);
121 137  
122 138 $validator
123   - ->allowEmpty('numero_commande');
124   -
  139 + ->allowEmpty('numero_commande')
  140 + ->add('numero_commande', 'valid', ['rule' => 'check_string', 'message' => 'Ce champ contient des caractères interdits', 'provider' => 'table']);
  141 +
125 142 $validator
126   - ->allowEmpty('code_comptable');
127   -
  143 + ->allowEmpty('code_comptable')
  144 + ->add('code_comptable', 'valid', ['rule' => 'check_string', 'message' => 'Ce champ contient des caractères interdits', 'provider' => 'table']);
  145 +
128 146 $validator
129   - ->allowEmpty('numero_serie');
130   -
  147 + ->allowEmpty('numero_serie')
  148 + ->add('numero_serie', 'valid', ['rule' => 'check_string', 'message' => 'Ce champ contient des caractères interdits', 'provider' => 'table']);
  149 +
131 150 $validator
132   - ->allowEmpty('numero_inventaire_organisme');
133   -
  151 + ->allowEmpty('numero_inventaire_organisme')
  152 + ->add('numero_inventaire_organisme', 'valid', ['rule' => 'check_string', 'message' => 'Ce champ contient des caractères interdits', 'provider' => 'table']);
  153 +
134 154 $validator
135   - ->allowEmpty('numero_inventaire_old');
136   -
  155 + ->allowEmpty('numero_inventaire_old')
  156 + ->add('numero_inventaire_old', 'valid', ['rule' => 'check_string', 'message' => 'Ce champ contient des caractères interdits', 'provider' => 'table']);
  157 +
137 158 $validator
138   - ->date('date_archivage')
139 159 ->allowEmpty('date_archivage');
140 160  
141 161 $validator
... ... @@ -146,14 +166,17 @@ class MaterielsTable extends Table
146 166 ->allowEmpty('lieu_stockage');
147 167  
148 168 $validator
149   - ->allowEmpty('lieu_detail');
150   -
  169 + ->allowEmpty('lieu_detail')
  170 + ->add('lieu_detail', 'valid', ['rule' => 'check_string', 'message' => 'Ce champ contient des caractères interdits', 'provider' => 'table']);
  171 +
151 172 $validator
152   - ->allowEmpty('nom_responsable');
153   -
  173 + ->allowEmpty('nom_responsable')
  174 + ->add('nom_responsable', 'valid', ['rule' => 'check_string', 'message' => 'Ce champ contient des caractères interdits', 'provider' => 'table']);
  175 +
154 176 $validator
155   - ->allowEmpty('email_responsable');
156   -
  177 + ->allowEmpty('email_responsable')
  178 + ->email('email_responsable');
  179 +
157 180 $validator
158 181 ->allowEmpty('nom_createur');
159 182  
... ... @@ -161,12 +184,50 @@ class MaterielsTable extends Table
161 184 ->allowEmpty('nom_modificateur');
162 185  
163 186 $validator
164   - ->date('date_reception')
165 187 ->allowEmpty('date_reception');
166   -
167 188 return $validator;
168 189 }
169 190  
  191 +
  192 + // autoriser les caracteres habituels standards pour un ou plusieurs MOTs
  193 + // accents + - _ / () . , \s (=space)
  194 + private $string = "a-zA-Z0-9éèàùâêôîôûç%().,\/\s\+\-_";
  195 +
  196 + public function check_string($check) {
  197 + return (bool) preg_match('/^['.$this->string.']*$/', $check);
  198 + }
  199 +
  200 + // autoriser les caracteres spéciaux (pour une PHRASE ou paragraphe) :
  201 + // check_string PLUS ces symboles ====> & * > < ? % ! : , " '
  202 + public function check_string_with_some_special_cars($check) {
  203 + return (bool) preg_match('/^['.$this->string.'?%!:,&*><\-\+\="\''.']*$/', $check);
  204 + }
  205 +
  206 + public function checkStatus($check) {
  207 + return ( isset($check) && in_array($check, $this->ALL_STATUS) );
  208 + }
  209 +
  210 + public function checkAtLeastOneChecked() {
  211 + //return ( 'materiel_administratif' || 'materiel_technique');
  212 + return true;
  213 + }
  214 +
  215 + // return if price >=800€ then must be checked as "administratif"
  216 + public function checkIfIsAdministratifWhenShouldBe() {
  217 + //error_log('test : '.$this->materiel->prix_ht);
  218 +
  219 + //return ! ( isset($this->prix_ht) && $this->prix_ht >= 800 && !$this->materiel_administratif );
  220 + return true;
  221 + }
  222 +
  223 + // return if price <800€ then must NOT be checked as "administratif"
  224 + public function checkIfIsNotAdministratifWhenShouldNotBe() {
  225 + //return ! ( isset($this->prix_ht) && $this->prix_ht < 800 && $this->materiel_administratif );
  226 + return true;
  227 + }
  228 +
  229 +
  230 +
170 231 /**
171 232 * Returns a rules checker object that will be used for validating
172 233 * application integrity.
... ...
src/Model/Table/SuivisTable.php
... ... @@ -49,40 +49,73 @@ class SuivisTable extends Table
49 49 */
50 50 public function validationDefault(Validator $validator)
51 51 {
52   - $validator
  52 + $validator
53 53 ->integer('id')
54 54 ->allowEmpty('id', 'create');
55   -
  55 +
56 56 $validator
57   - ->date('date_controle')
  57 + ->integer('materiel_id');
  58 +
  59 + $validator
58 60 ->allowEmpty('date_controle');
59 61  
60 62 $validator
61   - ->date('date_prochain_controle')
62   - ->allowEmpty('date_prochain_controle');
  63 + ->allowEmpty('date_prochain_controle')
  64 + ->add('date_prochain_controle', 'checkNextDateControlIsAfterDateControl', ['rule' => 'checkNextDateControlIsAfterDateControl', 'message' => 'La date de la prochaine intervention dois être postérieure à la date de l\'intervention précédente.', 'provider' => 'table']);
63 65  
64 66 $validator
65   - ->allowEmpty('type_intervention');
  67 + ->allowEmpty('type_intervention')
  68 + ->add('type_intervention', 'valid', ['rule' => 'check_string', 'message' => 'Ce champ contient des caractères interdits', 'provider' => 'table']);
66 69  
67 70 $validator
68   - ->allowEmpty('organisme');
  71 + ->notEmpty('organisme')
  72 + ->add('organisme', 'valid', ['rule' => 'check_string', 'message' => 'Ce champ contient des caractères interdits', 'provider' => 'table']);
69 73  
70 74 $validator
71   - ->integer('frequence')
72   - ->allowEmpty('frequence');
73   -
  75 + ->numeric('frequence', 'Veuillez saisir des chiffres uniquement.')
  76 + ->allowEmpty('frequence')
  77 + ->maxLength('frequence', 8, '8 Chiffres maximum');
  78 +
74 79 $validator
75   - ->allowEmpty('commentaire');
  80 + ->allowEmpty('commentaire')
  81 + ->add('commentaire', 'valid', ['rule' => ['check_string_with_some_special_cars'], 'message' => 'Ce champ contient des caractères interdits', 'provider' => 'table']);
76 82  
77   - $validator
78   - ->allowEmpty('nom_createur');
79   -
80   - $validator
81   - ->allowEmpty('nom_modificateur');
82 83  
83 84 return $validator;
84 85 }
85 86  
  87 +
  88 + // autoriser les caracteres habituels standards pour un ou plusieurs MOTs
  89 + // accents + - _ / () . , \s (=space)
  90 + private $string = "a-zA-Z0-9éèàùâêôîôûç%().,\/\s\+\-_";
  91 +
  92 + public function check_string($check) {
  93 + return (bool) preg_match('/^['.$this->string.']*$/', $check);
  94 + }
  95 +
  96 + // autoriser les caracteres spéciaux (pour une PHRASE ou paragraphe) :
  97 + // check_string PLUS ces symboles ====> & * > < ? % ! : , " '
  98 + public function check_string_with_some_special_cars($check) {
  99 + return (bool) preg_match('/^['.$this->string.'?%!:,&*><\-\+\="\''.']*$/', $check);
  100 + }
  101 +
  102 + function checkNextDateControlIsAfterDateControl() {
  103 + /*
  104 + $controle = $this->data [$this->name] ['date_controle'];
  105 + if (empty($controle)) return true;
  106 + $prochainControle = $this->data [$this->name] ['date_prochain_controle'];
  107 + $controle = explode("-", $controle);
  108 + $prochainControle = explode("-", $prochainControle);
  109 + $controle = $controle[2].$controle[1].$controle[0];
  110 + $prochainControle = $prochainControle[2].$prochainControle[1].$prochainControle[0];
  111 + if ($controle > $prochainControle) {
  112 + return false;
  113 + }
  114 + return true;
  115 + */
  116 + return true;
  117 + }
  118 +
86 119 /**
87 120 * Returns a rules checker object that will be used for validating
88 121 * application integrity.
... ...
src/Template/Categories/add.ctp
... ... @@ -5,7 +5,7 @@
5 5 <h2><i class="icon-plus"></i> Ajouter une Catégorie</h2>
6 6 <?php
7 7 echo $this->Form->input('nom');
8   - echo $this->Form->input('sur_categorie_id', ['options' => $surCategories]);
  8 + echo $this->Form->input('sur_categorie_id', ['label' => 'Domaine', 'options' => $surCategories]);
9 9 ?>
10 10 </fieldset>
11 11 <?= $this->Form->button(__('Valider')) ?>
... ...
src/Template/Categories/edit.ctp
... ... @@ -5,7 +5,7 @@
5 5 <h2><i class="icon-edit"></i> Editer une Catégorie</h2>
6 6 <?php
7 7 echo $this->Form->input('nom');
8   - echo $this->Form->input('sur_categorie_id', ['options' => $surCategories]);
  8 + echo $this->Form->input('sur_categorie_id', ['label' => 'Domaine', 'options' => $surCategories]);
9 9 ?>
10 10 </fieldset>
11 11 <?= $this->Form->button(__('Valider')) ?>
... ...
src/Template/Categories/view.ctp
... ... @@ -29,6 +29,33 @@ function displayElement($nom, $valeur) {
29 29 ?>
30 30  
31 31 </table>
  32 +
  33 +
  34 + <h3 id="t_suivis" style="cursor: pointer;">
  35 + <i class="icon-chevron-down" style="font-size: 14px;" id="i_suivis"></i>
  36 + <span style="text-decoration: underline;">Sous-Catégorie associé (non implémenter)</span>
  37 + </h3>
  38 + <div id="suivis" style="margin-bottom: 20px;">
  39 +
  40 + <?php if (!empty($sousCategories)) { ?>
  41 + <table>
  42 + <tr>
  43 + <th><?= __('Nom') ?></th>
  44 + <th style="width:50px;"><?= __('Détail') ?></th>
  45 + </tr>
  46 + <?php foreach ($sousCategories as $sous_category): ?>
  47 + <tr>
  48 + <td><?= h($sous_category->nom) ?></td>
  49 +
  50 + <td class="actions">
  51 + <?= $this->Html->link(__('<i class="icon-search"></i>'), ['controller' => 'SousCategories', 'action' => 'view', $sous_category->id], ['escape' => false, 'style' => 'margin:0']) ?>
  52 + </td>
  53 + </tr>
  54 + <?php endforeach; ?>
  55 + </table>
  56 + <?php }else { echo 'Aucune sous-catégorie lié à cette catégorie.'; } ?>
  57 + </div>
  58 +
32 59 </div>
33 60  
34 61 <div class="actions">
... ...
src/Template/Emprunts/add.ctp
1 1  
2   -<div class="emprunts form large-9 medium-8 columns content">
  2 +<div class="emprunts form">
3 3 <?= $this->Form->create($emprunt) ?>
4 4 <fieldset>
5   - <legend><?= __('Add Emprunt') ?></legend>
  5 + <h2><i class="icon-plus"></i> Ajouter un Emprunt</h2>
6 6 <?php
7   - echo $this->Form->input('materiel_id', ['options' => $materiels]);
8   - echo $this->Form->input('date_emprunt', ['empty' => true]);
9   - echo $this->Form->input('date_retour_emprunt', ['empty' => true]);
10   - echo $this->Form->input('emprunt_interne');
11   - echo $this->Form->input('laboratoire');
12   - echo $this->Form->input('e_lieu_stockage');
13   - echo $this->Form->input('e_lieu_detail');
14   - echo $this->Form->input('nom_emprunteur');
15   - echo $this->Form->input('email_emprunteur');
16   - echo $this->Form->input('tel');
17   - echo $this->Form->input('commentaire');
18   - echo $this->Form->input('nom_createur');
19   - echo $this->Form->input('nom_modificateur');
  7 + echo $this->Form->hidden('materiel_id', ['options' => $materiels, 'default' => $this->passedArgs[0]]);
  8 +
  9 + echo $this->Form->input ('materiel_numero_laboratoire', [
  10 + 'label' => 'N° materiel labo',
  11 + 'default' => $numMateriel,
  12 + 'disabled' => TRUE
  13 + ]);
  14 +
  15 + echo $this->Form->input('date_emprunt', [
  16 + 'type' => 'text',
  17 + 'label' => 'Date de l\'emprunt',
  18 + 'placeholder' => 'Cliquez pour selectionner une date',
  19 + 'class' => 'datepicker'
  20 + ]);
  21 + echo $this->Form->input('date_retour_emprunt', [
  22 + 'type' => 'text',
  23 + 'label' => 'Date de retour',
  24 + 'placeholder' => 'Cliquez pour selectionner une date',
  25 + 'class' => 'datepicker'
  26 + ]);
  27 + echo $this->Form->input('emprunt_interne', [
  28 + 'label' => 'Emprunt interne',
  29 + 'onchange' => 'emprunt_interne_externe();',
  30 + 'default' => true
  31 + ]);
  32 +
  33 + $ne = $emprunt->get('nom_emprunteur');
  34 + if($emprunt->get('emprunt_interne') == 1 && isset($ne)) {
  35 + $nom_emprunteur_int = $emprunt->get('nom_emprunteur');
  36 + $mail_emprunteur_int = $emprunt->get('email_emprunteur');
  37 + }
  38 + if ($emprunt->get('emprunt_interne') == 0 && isset($ne)) {
  39 + $nom_emprunteur_ext = $emprunt->get('nom_emprunteur');
  40 + $mail_emprunteur_ext = $emprunt->get('email_emprunteur');
  41 + }
  42 +
  43 + // EMPRUNT INTERNE
  44 + echo '<div id="interne" style="margin: 0; padding: 0; ' . $disp_interne . ';">';
  45 + echo $this->Form->input ( 'nom_emprunteur_int', [
  46 + 'options' => $utilisateurs,
  47 + 'readonly' => true,
  48 + 'default' => $nom_emprunteur_int,
  49 + 'div' => 'input required',
  50 + 'label' => 'Nom de l\'emprunteur'
  51 + ]);
  52 +
  53 + echo $this->Form->input ( 'email_emprunteur_int', [
  54 + 'label' => 'Email de l\'emprunteur',
  55 + 'default' => $mail_emprunteur_int,
  56 + 'readonly' => true
  57 + ]);
  58 +
  59 + echo $this->Form->input('e_lieu_stockage', [
  60 + 'label' => 'Site',
  61 + 'options' => $sites,
  62 + 'div' => 'input required',
  63 + 'style' => 'width: 100px'
  64 + ]);
  65 + echo $this->Form->input ( 'e_lieu_detail', ['label' => 'Pièce']);
  66 + echo '</div>';
  67 +
  68 +
  69 + // EMPRUNT EXTERNE
  70 + echo '<div id="externe" style="margin: 0; padding: 0; ' . $disp_externe . ';">';
  71 + echo $this->Form->input ( 'nom_emprunteur_ext', [
  72 + 'label' => 'Nom de l\'emprunteur',
  73 + 'default' => $nom_emprunteur_ext
  74 + ]);
  75 +
  76 + echo $this->Form->input ( 'email_emprunteur_ext', [
  77 + 'label' => 'Email de l\'emprunteur',
  78 + 'default' => $mail_emprunteur_ext,
  79 + 'readonly' => false
  80 + ]);
  81 + echo $this->Form->input ( 'laboratoire', [
  82 + 'label' => 'Lieu'
  83 + ]);
  84 + echo $this->Form->input ( 'tel', [
  85 + 'label' => 'Tel'
  86 + ]);
  87 + echo '</div>';
  88 +
  89 + echo $this->Form->input ('commentaire', ['type' => 'textarea']);
  90 +
  91 +
  92 + echo $this->Form->hidden('nom_createur', ['value' => $username])
20 93 ?>
21 94 </fieldset>
22   - <?= $this->Form->button(__('Submit')) ?>
  95 + <?= $this->Form->button(__('Valider')) ?>
23 96 <?= $this->Form->end() ?>
24 97 </div>
  98 +
  99 +<div class="actions">
  100 + <?php
  101 + echo $this->element('menu');
  102 + echo $this->element('menu_form', [ 'pluralHumanName' => 'Emprunts' ]);
  103 + ?>
  104 +</div>
25 105 \ No newline at end of file
... ...
src/Template/Emprunts/edit.ctp
1 1  
2   -<div class="emprunts form large-9 medium-8 columns content">
  2 +<div class="emprunts form">
3 3 <?= $this->Form->create($emprunt) ?>
4 4 <fieldset>
5   - <legend><?= __('Edit Emprunt') ?></legend>
  5 + <h2><i class="icon-edit"></i> Editer un Emprunt</h2>
6 6 <?php
7   - echo $this->Form->input('materiel_id', ['options' => $materiels]);
8   - echo $this->Form->input('date_emprunt', ['empty' => true]);
9   - echo $this->Form->input('date_retour_emprunt', ['empty' => true]);
10   - echo $this->Form->input('emprunt_interne');
11   - echo $this->Form->input('laboratoire');
12   - echo $this->Form->input('e_lieu_stockage');
13   - echo $this->Form->input('e_lieu_detail');
14   - echo $this->Form->input('nom_emprunteur');
15   - echo $this->Form->input('email_emprunteur');
16   - echo $this->Form->input('tel');
17   - echo $this->Form->input('commentaire');
18   - echo $this->Form->input('nom_createur');
19   - echo $this->Form->input('nom_modificateur');
  7 + echo $this->Form->hidden('materiel_id', ['options' => $materiels, 'default' => $emprunt->get('materiel_id')]);
  8 +
  9 + echo $this->Form->input ('materiel_numero_laboratoire', [
  10 + 'label' => 'N° materiel labo',
  11 + 'default' => $numMateriel,
  12 + 'disabled' => TRUE
  13 + ]);
  14 +
  15 + echo $this->Form->input('date_emprunt', [
  16 + 'type' => 'text',
  17 + 'label' => 'Date de l\'emprunt',
  18 + 'placeholder' => 'Cliquez pour selectionner une date',
  19 + 'class' => 'datepicker'
  20 + ]);
  21 + echo $this->Form->input('date_retour_emprunt', [
  22 + 'type' => 'text',
  23 + 'label' => 'Date de retour',
  24 + 'placeholder' => 'Cliquez pour selectionner une date',
  25 + 'class' => 'datepicker'
  26 + ]);
  27 + echo $this->Form->input('emprunt_interne', [
  28 + 'label' => 'Emprunt interne',
  29 + 'onchange' => 'emprunt_interne_externe();',
  30 + 'default' => true
  31 + ]);
  32 +
  33 + $ne = $emprunt->get('nom_emprunteur');
  34 + if($emprunt->get('emprunt_interne') == 1 && isset($ne)) {
  35 + $nom_emprunteur_int = $emprunt->get('nom_emprunteur');
  36 + $mail_emprunteur_int = $emprunt->get('email_emprunteur');
  37 + }
  38 + if ($emprunt->get('emprunt_interne') == 0 && isset($ne)) {
  39 + $nom_emprunteur_ext = $emprunt->get('nom_emprunteur');
  40 + $mail_emprunteur_ext = $emprunt->get('email_emprunteur');
  41 + }
  42 +
  43 + // EMPRUNT INTERNE
  44 + echo '<div id="interne" style="margin: 0; padding: 0; ' . $disp_interne . ';">';
  45 + echo $this->Form->input ( 'nom_emprunteur_int', [
  46 + 'options' => $utilisateurs,
  47 + 'readonly' => true,
  48 + 'default' => $nom_emprunteur_int,
  49 + 'div' => 'input required',
  50 + 'label' => 'Nom de l\'emprunteur'
  51 + ]);
  52 +
  53 + echo $this->Form->input ( 'email_emprunteur_int', [
  54 + 'label' => 'Email de l\'emprunteur',
  55 + 'default' => $mail_emprunteur_int,
  56 + 'readonly' => true
  57 + ]);
  58 +
  59 + echo $this->Form->input('e_lieu_stockage', [
  60 + 'label' => 'Site',
  61 + 'options' => $sites,
  62 + 'div' => 'input required',
  63 + 'style' => 'width: 100px'
  64 + ]);
  65 + echo $this->Form->input ( 'e_lieu_detail', ['label' => 'Pièce']);
  66 + echo '</div>';
  67 +
  68 +
  69 + // EMPRUNT EXTERNE
  70 + echo '<div id="externe" style="margin: 0; padding: 0; ' . $disp_externe . ';">';
  71 + echo $this->Form->input ( 'nom_emprunteur_ext', [
  72 + 'label' => 'Nom de l\'emprunteur',
  73 + 'default' => $nom_emprunteur_ext
  74 + ]);
  75 +
  76 + echo $this->Form->input ( 'email_emprunteur_ext', [
  77 + 'label' => 'Email de l\'emprunteur',
  78 + 'default' => $mail_emprunteur_ext,
  79 + 'readonly' => false
  80 + ]);
  81 + echo $this->Form->input ( 'laboratoire', [
  82 + 'label' => 'Lieu'
  83 + ]);
  84 + echo $this->Form->input ( 'tel', [
  85 + 'label' => 'Tel'
  86 + ]);
  87 + echo '</div>';
  88 +
  89 + echo $this->Form->input ('commentaire', ['type' => 'textarea']);
  90 +
  91 +
  92 + echo $this->Form->hidden('nom_modificateur', ['value' => $username]);
20 93 ?>
21 94 </fieldset>
22   - <?= $this->Form->button(__('Submit')) ?>
  95 + <?= $this->Form->button(__('Valider')) ?>
23 96 <?= $this->Form->end() ?>
24 97 </div>
  98 +
  99 +<div class="actions">
  100 + <?php
  101 + echo $this->element('menu');
  102 + echo $this->element('menu_form', [ 'pluralHumanName' => 'Emprunts' ]);
  103 + ?>
  104 +</div>
25 105 \ No newline at end of file
... ...
src/Template/Emprunts/index.ctp
... ... @@ -50,7 +50,4 @@
50 50  
51 51 <div class="actions">
52 52 <?php echo $this->element('menu') ?>
53   - <?php echo $this->element('menu_index',
54   - [ 'pluralHumanName' => 'Emprunts',
55   - 'singularHumanName' => 'Emprunt' ]) ?>
56 53 </div>
57 54 \ No newline at end of file
... ...
src/Template/Layout/default.ctp
... ... @@ -46,9 +46,8 @@ $cakeDescription = &#39;Labinvent 2.0&#39;;
46 46  
47 47  
48 48 <?php
49   - $userName = $username;
50   - if (isset($userName)) {
51   - echo 'Bienvenue '.$userName.'<br/>';
  49 + if (isset($username)) {
  50 + echo 'Bienvenue '.$username.'<br/>';
52 51 echo $this->Html->link('Se déconnecter', ['controller' => 'Users', 'action' => 'logout']);
53 52 }
54 53 else {
... ... @@ -93,7 +92,7 @@ $cakeDescription = &#39;Labinvent 2.0&#39;;
93 92 </i></td>
94 93 <td id="version">
95 94 <!-- VERSION M.m.f.b (version (M)ajeure, version (m)ineure, numero de nouvelle (f)onctionnalite, numero de (b)ugfix) -->
96   - <font color="black">VERSION 2.0.0 (22/04/2016)</font>
  95 + <font color="black">VERSION 2.0.2 (06/05/2016)</font>
97 96 </td>
98 97 </tr>
99 98 </table>
... ...
src/Template/Materiels/add.ctp
1   -<div class="materiels form large-9 medium-8 columns content">
  1 +
  2 +<div class="materiels form">
2 3 <?= $this->Form->create($materiel) ?>
3 4 <fieldset>
4   - <legend><?= __('Add Materiel') ?></legend>
  5 + <h2><i class="icon-plus"></i> Ajouter un Matériel</h2>
  6 + <?= $this->Form->button(__('Enregistrer')) ?>
  7 +
5 8 <?php
6   - echo $this->Form->input('designation');
7   - echo $this->Form->input('sur_categorie_id', ['options' => $surCategories, 'empty' => true]);
8   - echo $this->Form->input('categorie_id', ['options' => $categories, 'empty' => true]);
9   - echo $this->Form->input('sous_categorie_id', ['options' => $sousCategories, 'empty' => true]);
10   - echo $this->Form->input('numero_laboratoire');
11   - echo $this->Form->input('description');
12   - echo $this->Form->input('materiel_administratif');
13   - echo $this->Form->input('materiel_technique');
14   - echo $this->Form->input('status');
15   - echo $this->Form->input('date_acquisition', ['empty' => true]);
16   - echo $this->Form->input('fournisseur');
17   - echo $this->Form->input('prix_ht');
18   - echo $this->Form->input('eotp');
19   - echo $this->Form->input('numero_commande');
20   - echo $this->Form->input('code_comptable');
21   - echo $this->Form->input('numero_serie');
22   - echo $this->Form->input('groupes_thematique_id', ['options' => $groupesThematiques, 'empty' => true]);
23   - echo $this->Form->input('groupes_metier_id', ['options' => $groupesMetiers, 'empty' => true]);
24   - echo $this->Form->input('numero_inventaire_organisme');
25   - echo $this->Form->input('numero_inventaire_old');
26   - echo $this->Form->input('date_archivage', ['empty' => true]);
27   - echo $this->Form->input('etiquette');
28   - echo $this->Form->input('lieu_stockage');
29   - echo $this->Form->input('lieu_detail');
30   - echo $this->Form->input('nom_responsable');
31   - echo $this->Form->input('email_responsable');
32   - echo $this->Form->input('nom_createur');
33   - echo $this->Form->input('nom_modificateur');
34   - echo $this->Form->input('date_reception', ['empty' => true]);
35   - echo $this->Form->input('organisme_id', ['options' => $organismes, 'empty' => true]);
36   - echo $this->Form->input('site_id', ['options' => $sites, 'empty' => true]);
  9 + echo $this->Form->input('designation', ['label' => 'Désignation']);
  10 + echo $this->Form->input('sur_categorie_id', ['label' => 'Domaine', 'options' => $surCategories, 'empty' => 'Choisir un domaine']);
  11 + echo $this->Form->input('categorie_id', ['label' => 'Catégorie', 'options' => $categories, 'empty' => 'Choisir une catégorie']);
  12 + echo $this->Form->input('sous_categorie_id', ['label' => 'Sous-catégorie', 'options' => $sousCategories, 'empty' => 'Choisir une sous-catégorie']);
  13 +
  14 + echo $this->Form->input('materiel_technique', ['label' => 'Technique']);
  15 + echo $this->Form->input('materiel_administratif', ['label' => 'Inventoriable (>800€)']);
  16 +
  17 + echo $this->Form->input('description', ['label' => 'Description']);
  18 + echo $this->Form->input('etiquette', ['label' => 'Etiquette posée']);
  19 + echo $this->Form->input('site_id', ['options' => $sites, 'empty' => 'Choisir un site']);
  20 +
  21 + echo $this->Form->input('lieu_stockage', ['label' => 'Lieu de stockage (pièce)']);
  22 + echo $this->Form->input('lieu_detail', ['label' => 'Détail lieu de stockage']);
  23 +
  24 + echo $this->Form->input('date_acquisition', ['type' => 'text', 'label' => 'Date de la commande', 'class' => 'datepicker', 'placeholder' => 'Cliquez pour sélectionner une date']);
  25 + echo $this->Form->input('date_reception', ['type' => 'text', 'label' => 'Date de réception', 'class' => 'datepicker', 'placeholder' => 'A éditer lors de la réception uniquement.', 'empty' => true]);
  26 +
  27 + echo $this->Form->input('numero_serie', ['label' => 'Numéro de série']);
  28 + echo $this->Form->input('groupes_thematique_id', ['label' => 'Groupe thématique', 'options' => $groupesThematiques]);
  29 + echo $this->Form->input('groupes_metier_id', ['label' => 'Groupe métier', 'options' => $groupesMetiers]);
  30 +
  31 + echo $this->Form->input('nom_responsable', [
  32 + 'label' => 'Nom du responsable',
  33 + 'empty' => 'Choisir un utilisateur',
  34 + 'default' => $username,
  35 + 'options' => $utilisateurs
  36 + ]);
  37 + echo $this->Form->input('email_responsable', [
  38 + 'label' => 'Email du responsable',
  39 + 'readonly' => true,
  40 + 'default' => $mail_responsable
  41 + ]);
  42 + echo $this->Form->input('fournisseur', ['label' => 'Fournisseur']);
  43 + echo $this->Form->input('organisme_id', ['options' => $organismes, 'empty' => 'Choisir un organisme']);
  44 + echo $this->Form->input('prix_ht', ['label' => 'Prix HT (€)']);
  45 +
  46 + echo '<div style="border-top: 1px solid #CCC; border-bottom: 1px solid #CCC; margin-bottom: 0; background: #EEE;"><span style="font-size: 9px; color: red;">Partie administrative</span>';
  47 + echo $this->Form->input('eotp', ['label' => 'Centre financier/EOTP']);
  48 + echo $this->Form->input('numero_commande', ['label' => 'Numéro de commande']);
  49 + echo $this->Form->input('code_comptable', ['label' => 'Code comptable']);
  50 + echo $this->Form->input('numero_inventaire_organisme', ['label' => 'N° inventaire organisme']);
  51 + echo $this->Form->input('numero_inventaire_old', ['label' => 'Ancien N° inventaire']);
  52 + echo $this->Form->hidden('nom_createur', ['value' => $username ]);
  53 + echo '</div>';
  54 +
37 55 ?>
38 56 </fieldset>
39   - <?= $this->Form->button(__('Submit')) ?>
  57 + <?= $this->Form->button(__('Enregistrer')) ?>
40 58 <?= $this->Form->end() ?>
41 59 </div>
  60 +
  61 +<div class="actions">
  62 + <?php
  63 + echo $this->element('menu');
  64 + echo $this->element('menu_form', [ 'pluralHumanName' => 'Matériels' ]);
  65 + ?>
  66 +</div>
42 67 \ No newline at end of file
... ...
src/Template/Materiels/edit.ctp
1   -<div class="materiels form large-9 medium-8 columns content">
  1 +<?php
  2 +define ( 'IS_CREATED', $materiel->status == 'CREATED' );
  3 +define ( 'IS_VALIDATED', $materiel->status == 'VALIDATED' );
  4 +define ( 'IS_ARCHIVED_OR_TOBE', in_array ( $materiel->status, ['TOBEARCHIVED','ARCHIVED'] ) );
  5 +
  6 +function isReadonlyField($fieldName, $myReadonlyFields) {
  7 + if (! empty ( $myReadonlyFields ) && $myReadonlyFields [0] == '*') {
  8 + $modifiableFields = $myReadonlyFields;
  9 + array_shift ( $modifiableFields );
  10 + return ! in_array ( $fieldName, $modifiableFields );
  11 + }
  12 + return in_array ( $fieldName, $myReadonlyFields );
  13 +}
  14 +
  15 +$administrationData = array (
  16 + 'eotp',
  17 + 'numero_commande',
  18 + 'code_comptable',
  19 + 'numero_inventaire_organisme',
  20 + 'numero_inventaire_old'
  21 +);
  22 +
  23 +$myReadonlyFields = array ();
  24 +if (IS_VALIDATED)
  25 + // can only modify some fields
  26 + $myReadonlyFields = array_merge (
  27 + array (
  28 + 'sur_categorie_id',
  29 + 'categorie_id',
  30 + 'sous_categorie_id',
  31 + 'materiel_administratif',
  32 + 'materiel_technique',
  33 + 'site_id',
  34 + 'date_acquisition',
  35 + 'date_reception',
  36 + 'nom_responsable',
  37 + 'fournisseur',
  38 + 'organisme_id',
  39 + 'prix_ht'
  40 + ),
  41 + $administrationData
  42 + );
  43 +
  44 + elseif (IS_ARCHIVED_OR_TOBE) {
  45 + $myReadonlyFields = array ('*','status');
  46 + }
  47 +?>
  48 +
  49 +
  50 +
  51 +<div class="materiels form">
2 52 <?= $this->Form->create($materiel) ?>
3 53 <fieldset>
4   - <legend><?= __('Edit Materiel') ?></legend>
  54 + <h2><i class="icon-edit"></i> Editer un Matériel</h2>
  55 + <?= $this->Form->button(__('Enregistrer')) ?>
  56 +
5 57 <?php
6   - echo $this->Form->input('designation');
7   - echo $this->Form->input('sur_categorie_id', ['options' => $surCategories, 'empty' => true]);
8   - echo $this->Form->input('categorie_id', ['options' => $categories, 'empty' => true]);
9   - echo $this->Form->input('sous_categorie_id', ['options' => $sousCategories, 'empty' => true]);
10   - echo $this->Form->input('numero_laboratoire');
11   - echo $this->Form->input('description');
12   - echo $this->Form->input('materiel_administratif');
13   - echo $this->Form->input('materiel_technique');
14   - echo $this->Form->input('status');
15   - echo $this->Form->input('date_acquisition', ['empty' => true]);
16   - echo $this->Form->input('fournisseur');
17   - echo $this->Form->input('prix_ht');
18   - echo $this->Form->input('eotp');
19   - echo $this->Form->input('numero_commande');
20   - echo $this->Form->input('code_comptable');
21   - echo $this->Form->input('numero_serie');
22   - echo $this->Form->input('groupes_thematique_id', ['options' => $groupesThematiques, 'empty' => true]);
23   - echo $this->Form->input('groupes_metier_id', ['options' => $groupesMetiers, 'empty' => true]);
24   - echo $this->Form->input('numero_inventaire_organisme');
25   - echo $this->Form->input('numero_inventaire_old');
26   - echo $this->Form->input('date_archivage', ['empty' => true]);
27   - echo $this->Form->input('etiquette');
28   - echo $this->Form->input('lieu_stockage');
29   - echo $this->Form->input('lieu_detail');
30   - echo $this->Form->input('nom_responsable');
31   - echo $this->Form->input('email_responsable');
32   - echo $this->Form->input('nom_createur');
33   - echo $this->Form->input('nom_modificateur');
34   - echo $this->Form->input('date_reception', ['empty' => true]);
35   - echo $this->Form->input('organisme_id', ['options' => $organismes, 'empty' => true]);
36   - echo $this->Form->input('site_id', ['options' => $sites, 'empty' => true]);
  58 + echo $this->Form->input('designation', [
  59 + 'label' => 'Désignation',
  60 + 'disabled' => isReadonlyField('designation', $myReadonlyFields)
  61 +
  62 + ]);
  63 +
  64 + echo $this->Form->input('sur_categorie_id', [
  65 + 'label' => 'Domaine',
  66 + 'options' => $surCategories,
  67 + 'empty' => 'Choisir un domaine',
  68 + 'readonly' => isReadonlyField ( 'sur_categorie_id', $myReadonlyFields ),
  69 + 'disabled' => isReadonlyField ( 'sur_categorie_id', $myReadonlyFields )
  70 +
  71 + ]);
  72 + echo $this->Form->input('categorie_id', [
  73 + 'label' => 'Catégorie',
  74 + 'options' => $categories,
  75 + 'empty' => 'Choisir une catégorie',
  76 + 'disabled' => isReadonlyField('categorie_id', $myReadonlyFields)
  77 + ]);
  78 + echo $this->Form->input('sous_categorie_id', [
  79 + 'label' => 'Sous-catégorie',
  80 + 'options' => $sousCategories,
  81 + 'empty' => 'Choisir une sous-catégorie',
  82 + 'disabled' => isReadonlyField('sous_categorie_id', $myReadonlyFields)
  83 + ]);
  84 +
  85 + echo $this->Form->input('materiel_technique', [
  86 + 'label' => 'Technique',
  87 + 'disabled' => isReadonlyField('materiel_technique', $myReadonlyFields)
  88 + ]);
  89 + echo $this->Form->input('materiel_administratif', [
  90 + 'label' => 'Inventoriable (>800€)',
  91 + 'disabled' => isReadonlyField('materiel_administratif', $myReadonlyFields)
  92 + ]);
  93 +
  94 + echo $this->Form->input('description', [
  95 + 'label' => 'Description',
  96 + 'disabled' => isReadonlyField('description', $myReadonlyFields)
  97 + ]);
  98 + echo $this->Form->input('etiquette', [
  99 + 'label' => 'Etiquette posée',
  100 + 'disabled' => isReadonlyField('etiquette', $myReadonlyFields)
  101 + ]);
  102 + echo $this->Form->input('site_id', [
  103 + 'options' => $sites,
  104 + 'empty' => 'Choisir un site',
  105 + 'disabled' => isReadonlyField('site_id', $myReadonlyFields)
  106 + ]);
  107 +
  108 + echo $this->Form->input('lieu_stockage', ['label' => 'Lieu de stockage (pièce)']);
  109 + echo $this->Form->input('lieu_detail', ['label' => 'Détail lieu de stockage']);
  110 +
  111 + echo $this->Form->input('date_acquisition', [
  112 + 'type' => 'text',
  113 + 'label' => 'Date de la commande',
  114 + 'class' => 'datepicker',
  115 + 'placeholder' => 'Cliquez pour sélectionner une date',
  116 + 'disabled' => isReadonlyField('date_acquisition', $myReadonlyFields),
  117 + ]);
  118 + echo $this->Form->input('date_reception', [
  119 + 'type' => 'text',
  120 + 'label' => 'Date de réception',
  121 + 'class' => 'datepicker',
  122 + 'placeholder' => 'A éditer lors de la réception uniquement.',
  123 + 'disabled' => isReadonlyField('date_reception', $myReadonlyFields),
  124 + 'empty' => true]);
  125 +
  126 + echo $this->Form->input('status', ['label' => 'Statut', 'options' => [
  127 + 'CREATED' => 'CREATED',
  128 + 'VALIDATED' => 'VALIDATED',
  129 + 'TOBEARCHIVED' => 'TOBEARCHIVED',
  130 + 'ARCHIVED' => 'ARCHIVED']]);
  131 +
  132 + echo $this->Form->input('numero_serie', [
  133 + 'label' => 'Numéro de série',
  134 + 'disabled' => isReadonlyField('numero_serie', $myReadonlyFields)
  135 + ]);
  136 + echo $this->Form->input('groupes_thematique_id', [
  137 + 'label' => 'Groupe thématique',
  138 + 'disabled' => isReadonlyField('groupes_thematique_id', $myReadonlyFields),
  139 + 'options' => $groupesThematiques]);
  140 + echo $this->Form->input('groupes_metier_id', [
  141 + 'label' => 'Groupe métier',
  142 + 'disabled' => isReadonlyField('groupes_metier_id', $myReadonlyFields),
  143 + 'options' => $groupesMetiers]);
  144 +
  145 +
  146 + echo $this->Form->input('nom_responsable', [
  147 + 'label' => 'Nom du responsable',
  148 + 'disabled' => isReadonlyField('nom_responsable', $myReadonlyFields),
  149 + 'empty' => 'Choisir un utilisateur',
  150 + 'default' => $username,
  151 + 'options' => $utilisateurs
  152 + ]);
  153 + if(isset($nom_ancien_responsable)){
  154 + echo $this->Form->input ('nom_ancien_responsable', [
  155 + 'label' => 'Nom ancien responsable',
  156 + 'readonly' => true,
  157 + 'default' => $nom_ancien_responsable
  158 + ]);
  159 + }
  160 + echo $this->Form->input('email_responsable', [
  161 + 'label' => 'Email du responsable',
  162 + 'readonly' => true,
  163 + 'default' => $mail_responsable
  164 + ]);
  165 +
  166 +
  167 + echo $this->Form->input('fournisseur', [
  168 + 'label' => 'Fournisseur',
  169 + 'disabled' => isReadonlyField('email_responsable', $myReadonlyFields)
  170 + ]);
  171 + echo $this->Form->input('organisme_id', [
  172 + 'options' => $organismes,
  173 + 'disabled' => isReadonlyField('organisme_id', $myReadonlyFields),
  174 + 'empty' => 'Choisir un organisme'
  175 + ]);
  176 + echo $this->Form->input('prix_ht', [
  177 + 'label' => 'Prix HT (€)',
  178 + 'disabled' => isReadonlyField('prix_ht', $myReadonlyFields)
  179 + ]);
  180 +
  181 +
  182 + echo '<div style="border-top: 1px solid #CCC; border-bottom: 1px solid #CCC; margin-bottom: 0; background: #EEE;"><span style="font-size: 9px; color: red;">Partie administrative</span>';
  183 + echo $this->Form->input('eotp', [
  184 + 'label' => 'Centre financier/EOTP',
  185 + 'disabled' => isReadonlyField('eotp', $myReadonlyFields)
  186 + ]);
  187 + echo $this->Form->input('numero_commande', [
  188 + 'label' => 'Numéro de commande',
  189 + 'disabled' => isReadonlyField('numero_commande', $myReadonlyFields)
  190 + ]);
  191 + echo $this->Form->input('code_comptable', [
  192 + 'label' => 'Code comptable',
  193 + 'disabled' => isReadonlyField('code_comptable', $myReadonlyFields)
  194 + ]);
  195 + echo $this->Form->input('numero_inventaire_organisme', [
  196 + 'label' => 'N° inventaire organisme',
  197 + 'disabled' => isReadonlyField('numero_inventaire_organisme', $myReadonlyFields)
  198 + ]);
  199 + echo $this->Form->input('numero_inventaire_old', [
  200 + 'label' => 'Ancien N° inventaire',
  201 + 'disabled' => isReadonlyField('numero_inventaire_old', $myReadonlyFields)
  202 + ]);
  203 + echo $this->Form->hidden('nom_modificateur', ['value' => $username ]);
  204 + echo '</div>';
  205 +
37 206 ?>
38 207 </fieldset>
39   - <?= $this->Form->button(__('Submit')) ?>
  208 + <?= $this->Form->button(__('Enregistrer')) ?>
40 209 <?= $this->Form->end() ?>
41 210 </div>
  211 +
  212 +<div class="actions">
  213 + <?php
  214 + echo $this->element('menu');
  215 + echo $this->element('menu_form', [ 'pluralHumanName' => 'Matériels' ]);
  216 + ?>
  217 +</div>
  218 +
... ...
src/Template/Materiels/view.ctp
... ... @@ -20,8 +20,33 @@ function displayElement($nom, $valeur) {
20 20 <?php
21 21 echo $this->Html->link(__('<i class="icon-pencil"></i> Editer ce matériel'),
22 22 ['action' => 'edit', $materiel->id],
23   - ['escape' => false,'onclick' => 'return true;']
24   - );
  23 + ['escape' => false,
  24 + 'onclick' => 'return true;',
  25 + 'style' => 'margin-right: 10px'
  26 + ]);
  27 +
  28 + if($materiel->status == 'VALIDATED') {
  29 + // BOUTON NOUVEAU SUIVI
  30 + echo $this->Html->link('<i class="icon-plus"></i> Nouv. Suivi',
  31 + ['controller' => 'suivis',
  32 + 'action' => 'add',
  33 + $materiel->id],
  34 + ['title' => 'Faire un nouveau suivi de ce matériel',
  35 + 'style' => 'margin-right: 10px',
  36 + 'escape' => false]
  37 + ); // End link
  38 +
  39 + // BOUTON NOUVEL EMPRUNT
  40 + echo $this->Html->link('<i class="icon-plus"></i> Nouv. Emprunt',
  41 + ['controller' => 'emprunts',
  42 + 'action' => 'add',
  43 + $materiel->id],
  44 + ['title' => 'Faire un nouvel emprunt de ce matériel',
  45 + 'style' => 'margin-right: 10px',
  46 + 'escape' => false]
  47 + ); // End link
  48 + }
  49 +
25 50 ?>
26 51 </div>
27 52  
... ...
src/Template/Pages/home.ctp
... ... @@ -3,8 +3,8 @@
3 3 use Cake\Core\Configure;
4 4  
5 5 //if (Configure::read('debug')) {
6   -if ($this->request->session()->read('debug')) {
7   - include("home_debug.ctp");
  6 +if ($this->request->session()->read('install')) {
  7 + include("home_install.ctp");
8 8 }
9 9 else {
10 10 include("home_app.ctp");
... ...
src/Template/Pages/home_app.ctp
... ... @@ -5,19 +5,10 @@
5 5 <p>Bienvenue sur l'inventaire administratif et technique de l'<b>IRAP</b>.</p>
6 6  
7 7 <?php
8   - $userName = $username;
9   - if (!isset($userName)) {
10   - ?>
11   - <p>Vous n'êtes pas connecté, veuillez vous authentifier.</p>
12   -
13   - <?php
14   - }
15   - else {
16 8 //Utilisateur connecté
17   - echo '<p>Vous êtes connecté en tant que <b>' . $userName . '</b> ';
  9 + echo '<p>Vous êtes connecté en tant que <b>' . $username . '</b> ';
18 10 echo 'et avec le niveau d\'authentification <b>inconnu sans les ACL en place, bientôt...</b>';
19 11 echo '<p>';
20   - }
21 12 ?>
22 13  
23 14 </div>
... ...
src/Template/Pages/home_debug.ctp renamed to src/Template/Pages/home_install.ctp
... ... @@ -25,7 +25,7 @@ $this-&gt;layout = false;
25 25 <head>
26 26 <?= $this->Html->charset() ?>
27 27 <meta name="viewport" content="width=device-width, initial-scale=1.0">
28   - <title>HOME_DEBUG</title>
  28 + <title>Mode install</title>
29 29 <?= $this->Html->meta('icon') ?>
30 30 <?= $this->Html->css('base.css') ?>
31 31 <?= $this->Html->css('cake.css') ?>
... ... @@ -40,7 +40,7 @@ $this-&gt;layout = false;
40 40 <div id="content">
41 41 <div class="row">
42 42 <div class="columns large-12 ctp-warning checks", style="text-align: center">
43   - <?php echo $this->Form->postLink("Stop Debug mode", ['controller' => 'materiels', 'action'=>'debugOff'], ['confirm' => __('Êtes-vous sur ?')]); ?>
  43 + <?php echo $this->Form->postLink("Stop Install mode", ['controller' => 'materiels', 'action'=>'installOff'], ['confirm' => __('Êtes-vous sur ?')]); ?>
44 44 </div>
45 45 <?php Debugger::checkSecurityKeys(); ?>
46 46 <div id="url-rewriting-warning" class="columns large-12 url-rewriting checks">
... ...
src/Template/Pages/tools.ctp
... ... @@ -49,10 +49,6 @@
49 49 echo '<tr><td>';
50 50 echo $this->Html->link('Gérer les groupes métiers', ['controller' => 'groupes_metiers', 'sort' => 'nom']);
51 51 echo '</td></tr>';
52   -
53   - echo '<tr><td>';
54   - echo $this->Html->link('Gérer les fichiers', ['controller' => 'documents', 'sort' => 'nom']);
55   - echo '</td></tr>';
56 52  
57 53 echo '<tr><td>';
58 54 echo $this->Html->link('Export de la liste des materiels actifs (format CSV)', ['controller' => 'materiels', 'action' => 'export']);
... ... @@ -66,11 +62,11 @@
66 62 * Mode debug
67 63 */
68 64 echo '<tr><td>';
69   - if ($this->request->session()->read('debug')) {
70   - echo $this->Form->postLink("Stopper le mode DEBUG", ['controller' => 'materiels', 'action'=>'debugOff'], ['confirm' => __('Êtes-vous sur ?')]);
  65 + if ($this->request->session()->read('install')) {
  66 + echo $this->Form->postLink("Stopper le mode INSTALL", ['controller' => 'materiels', 'action'=>'installOff'], ['confirm' => __('Êtes-vous sur ?')]);
71 67 }
72 68 else {
73   - echo $this->Form->postLink("Passer en mode DEBUG", ['controller' => 'materiels', 'action'=>'debugOn'], ['confirm' => __('Êtes-vous sur ?')]);
  69 + echo $this->Form->postLink("Passer en mode INSTALL", ['controller' => 'materiels', 'action'=>'installOn'], ['confirm' => __('Êtes-vous sur ?')]);
74 70 }
75 71 echo '</td></tr>';
76 72  
... ...
src/Template/SousCategories/add.ctp
... ... @@ -5,7 +5,7 @@
5 5 <h2><i class="icon-plus"></i> Ajouter une Sous-catégorie</h2>
6 6 <?php
7 7 echo $this->Form->input('nom');
8   - echo $this->Form->input('categorie_id', ['options' => $categories]);
  8 + echo $this->Form->input('categorie_id', ['label' => 'Catégorie', 'options' => $categories]);
9 9 ?>
10 10 </fieldset>
11 11 <?= $this->Form->button(__('Valider')) ?>
... ...
src/Template/SousCategories/edit.ctp
... ... @@ -5,7 +5,7 @@
5 5 <h2><i class="icon-edit"></i> Editer une Sous-catégorie</h2>
6 6 <?php
7 7 echo $this->Form->input('nom');
8   - echo $this->Form->input('categorie_id', ['options' => $categories]);
  8 + echo $this->Form->input('categorie_id', ['label' => 'Catégorie', 'options' => $categories]);
9 9 ?>
10 10 </fieldset>
11 11 <?= $this->Form->button(__('Valider')) ?>
... ...
src/Template/Suivis/add.ctp
1 1  
2   -<div class="suivis form large-9 medium-8 columns content">
  2 +<div class="suivis form">
3 3 <?= $this->Form->create($suivi) ?>
4 4 <fieldset>
5   - <legend><?= __('Add Suivi') ?></legend>
  5 + <h2><i class="icon-plus"></i> Ajouter un suivi</h2>
6 6 <?php
7   - echo $this->Form->input('materiel_id', ['options' => $materiels]);
8   - echo $this->Form->input('date_controle', ['empty' => true]);
9   - echo $this->Form->input('date_prochain_controle', ['empty' => true]);
10   - echo $this->Form->input('type_intervention');
11   - echo $this->Form->input('organisme');
12   - echo $this->Form->input('frequence');
13   - echo $this->Form->input('commentaire');
14   - echo $this->Form->input('nom_createur');
15   - echo $this->Form->input('nom_modificateur');
  7 + echo $this->Form->hidden('materiel_id', ['options' => $materiels, 'default' => $this->passedArgs[0]]);
  8 +
  9 + echo $this->Form->input ('materiel_numero_laboratoire', [
  10 + 'label' => 'N° materiel labo',
  11 + 'default' => $numMateriel,
  12 + 'disabled' => TRUE
  13 + ]);
  14 +
  15 +
  16 + echo $this->Form->input('type_intervention', [
  17 + 'label' => 'Type d\'intervention',
  18 + 'options' => $typeSuivis
  19 + ]);
  20 +
  21 + echo $this->Form->input('date_controle', [
  22 + 'type' => 'text',
  23 + 'label' => 'Date intervention',
  24 + 'placeholder' => 'Cliquez pour selectionner une date',
  25 + 'class' => 'datepicker',
  26 + 'default' => NULL
  27 + ]);
  28 +
  29 + echo '<table id="tableAlignementFrequence"><tr><td>';
  30 + echo $this->Form->input('frequence', [
  31 + 'div' => 'A',
  32 + 'type' => 'text',
  33 + 'label' => 'Fréquence',
  34 + 'placeholder' => ''
  35 + ]);
  36 + echo '</td><td>';
  37 + echo $this->Form->input ('type_frequence', [
  38 + 'label' => false,
  39 + 'div' => 'typeFrequence',
  40 + 'options' => ['/ Jours', '/ Semaines', '/ Mois', '/ Ans']
  41 + ]);
  42 + echo '</td></tr></table>';
  43 +
  44 + echo $this->Form->input('date_prochain_controle', [
  45 + 'type' => 'text',
  46 + 'label' => 'Date prochaine intervention',
  47 + 'placeholder' => 'Cliquez pour selectionner une date',
  48 + 'class' => 'datepicker'
  49 + ]);
  50 + echo $this->Form->input('organisme', ['label' => 'Prestataire']);
  51 + echo $this->Form->input('commentaire', ['type' => 'textarea']);
  52 +
  53 + echo $this->Form->hidden('nom_createur', ['value' => $username ]);
16 54 ?>
17 55 </fieldset>
18   - <?= $this->Form->button(__('Submit')) ?>
  56 + <?= $this->Form->button(__('Valider')) ?>
19 57 <?= $this->Form->end() ?>
20 58 </div>
  59 +
  60 +<div class="actions">
  61 + <?php
  62 + echo $this->element('menu');
  63 + echo $this->element('menu_form', [ 'pluralHumanName' => 'Suivis' ]);
  64 + ?>
  65 +</div>
21 66 \ No newline at end of file
... ...
src/Template/Suivis/edit.ctp
1 1  
2   -<div class="suivis form large-9 medium-8 columns content">
  2 +<div class="suivis form">
3 3 <?= $this->Form->create($suivi) ?>
4 4 <fieldset>
5   - <legend><?= __('Edit Suivi') ?></legend>
  5 + <h2><i class="icon-edit"></i> Editer un suivi</h2>
6 6 <?php
7   - echo $this->Form->input('materiel_id', ['options' => $materiels]);
8   - echo $this->Form->input('date_controle', ['empty' => true]);
9   - echo $this->Form->input('date_prochain_controle', ['empty' => true]);
10   - echo $this->Form->input('type_intervention');
11   - echo $this->Form->input('organisme');
12   - echo $this->Form->input('frequence');
13   - echo $this->Form->input('commentaire');
14   - echo $this->Form->input('nom_createur');
15   - echo $this->Form->input('nom_modificateur');
  7 +
  8 + echo $this->Form->hidden('materiel_id', ['options' => $materiels, 'default' => $suivi->get('materiel_id')]);
  9 +
  10 + echo $this->Form->input ('materiel_numero_laboratoire', [
  11 + 'label' => 'N° materiel labo',
  12 + 'default' => $numMateriel,
  13 + 'disabled' => TRUE
  14 + ]);
  15 +
  16 + echo $this->Form->input('type_intervention', [
  17 + 'label' => 'Type d\'intervention',
  18 + 'options' => $typeSuivis
  19 + ]);
  20 +
  21 + echo $this->Form->input('date_controle', [
  22 + 'type' => 'text',
  23 + 'label' => 'Date intervention',
  24 + 'placeholder' => 'Cliquez pour selectionner une date',
  25 + 'class' => 'datepicker',
  26 + 'default' => NULL
  27 + ]);
  28 +
  29 + echo '<table id="tableAlignementFrequence"><tr><td>';
  30 + echo $this->Form->input('frequence', [
  31 + 'div' => 'A',
  32 + 'type' => 'text',
  33 + 'label' => 'Fréquence',
  34 + 'placeholder' => ''
  35 + ]);
  36 + echo '</td><td>';
  37 + echo $this->Form->input ('type_frequence', [
  38 + 'label' => false,
  39 + 'div' => 'typeFrequence',
  40 + 'options' => ['/ Jours', '/ Semaines', '/ Mois', '/ Ans']
  41 + ]);
  42 + echo '</td></tr></table>';
  43 +
  44 + echo $this->Form->input('date_prochain_controle', [
  45 + 'type' => 'text',
  46 + 'label' => 'Date prochaine intervention',
  47 + 'placeholder' => 'Cliquez pour selectionner une date',
  48 + 'class' => 'datepicker'
  49 + ]);
  50 + echo $this->Form->input('organisme', ['label' => 'Prestataire']);
  51 + echo $this->Form->input('commentaire', ['type' => 'textarea']);
  52 +
  53 + echo $this->Form->hidden('nom_modificateur', ['value' => $username ]);
16 54 ?>
17 55 </fieldset>
18   - <?= $this->Form->button(__('Submit')) ?>
  56 + <?= $this->Form->button(__('Valider')) ?>
19 57 <?= $this->Form->end() ?>
20 58 </div>
  59 +
  60 +<div class="actions">
  61 + <?php
  62 + echo $this->element('menu');
  63 + echo $this->element('menu_form', [ 'pluralHumanName' => 'Suivis' ]);
  64 + ?>
  65 +</div>
21 66 \ No newline at end of file
... ...
src/Template/Suivis/index.ctp
... ... @@ -45,7 +45,4 @@
45 45  
46 46 <div class="actions">
47 47 <?php echo $this->element('menu') ?>
48   - <?php echo $this->element('menu_index',
49   - [ 'pluralHumanName' => 'Suivis',
50   - 'singularHumanName' => 'Suivi' ]) ?>
51 48 </div>
52 49 \ No newline at end of file
... ...
src/Template/SurCategories/view.ctp
... ... @@ -29,6 +29,34 @@ function displayElement($nom, $valeur) {
29 29 ?>
30 30  
31 31 </table>
  32 +
  33 +
  34 + <h3 id="t_suivis" style="cursor: pointer;">
  35 + <i class="icon-chevron-down" style="font-size: 14px;" id="i_suivis"></i>
  36 + <span style="text-decoration: underline;">Catégorie associé (non implémenter)</span>
  37 + </h3>
  38 + <div id="suivis" style="margin-bottom: 20px;">
  39 +
  40 + <?php if (!empty($categories)) { ?>
  41 + <table>
  42 + <tr>
  43 + <th><?= __('Nom') ?></th>
  44 + <th style="width:50px;"><?= __('Détail') ?></th>
  45 + </tr>
  46 + <?php foreach ($categories as $category): ?>
  47 + <tr>
  48 + <td><?= h($category->nom) ?></td>
  49 +
  50 + <td class="actions">
  51 + <?= $this->Html->link(__('<i class="icon-search"></i>'), ['controller' => 'Categories', 'action' => 'view', $category->id], ['escape' => false, 'style' => 'margin:0']) ?>
  52 + </td>
  53 + </tr>
  54 + <?php endforeach; ?>
  55 + </table>
  56 + <?php }else { echo 'Aucune catégorie lié à ce domaine.'; } ?>
  57 + </div>
  58 +
  59 +
32 60 </div>
33 61  
34 62 <div class="actions">
... ...
src/Template/Users/add.ctp
1 1  
2   -<div class="users form large-9 medium-8 columns content">
  2 +<div class="utilisateurs form">
3 3 <?= $this->Form->create($user) ?>
4 4 <fieldset>
5   - <legend><?= __('Ajouter un utilisateur') ?></legend>
  5 + <h2><i class="icon-plus"></i> Ajouter un utilisateur</h2>
6 6 <?php
7 7 echo $this->Form->input('nom');
8 8 echo $this->Form->input('username');
... ... @@ -11,9 +11,16 @@
11 11 echo $this->Form->input('role', [
12 12 'options' => ['Super Administrateur' => 'Super Administrateur', 'Administration Plus' => 'Administration Plus', 'Administration' => 'Administration', 'Responsable' => 'Responsable', 'Utilisateur' => 'Utilisateur']
13 13 ]);
14   - echo $this->Form->input('groupes_metier_id', ['options' => $groupesMetiers, 'empty' => true]);
  14 + echo $this->Form->input('groupes_metier_id', ['label' => 'Groupe métier', 'options' => $groupesMetiers, 'empty' => true]);
15 15 ?>
16 16 </fieldset>
17   - <?= $this->Form->button(__('Ajouter')) ?>
  17 + <?= $this->Form->button(__('Valider')) ?>
18 18 <?= $this->Form->end() ?>
19 19 </div>
  20 +
  21 +<div class="actions">
  22 + <?php
  23 + echo $this->element('menu');
  24 + echo $this->element('menu_form', [ 'pluralHumanName' => 'Utilisateurs' ]);
  25 + ?>
  26 +</div>
20 27 \ No newline at end of file
... ...
src/Template/Users/edit.ctp
1   -<nav class="large-3 medium-4 columns" id="actions-sidebar">
2   - <ul class="side-nav">
3   - <li class="heading"><?= __('Actions') ?></li>
4   - <li><?= $this->Form->postLink(
5   - __('Delete'),
6   - ['action' => 'delete', $user->id],
7   - ['confirm' => __('Are you sure you want to delete # {0}?', $user->id)]
8   - )
9   - ?></li>
10   - <li><?= $this->Html->link(__('List Users'), ['action' => 'index']) ?></li>
11   - <li><?= $this->Html->link(__('List Groupes Metiers'), ['controller' => 'GroupesMetiers', 'action' => 'index']) ?></li>
12   - <li><?= $this->Html->link(__('New Groupes Metier'), ['controller' => 'GroupesMetiers', 'action' => 'add']) ?></li>
13   - </ul>
14   -</nav>
15   -<div class="users form large-9 medium-8 columns content">
  1 +
  2 +<div class="utilisateurs form">
16 3 <?= $this->Form->create($user) ?>
17 4 <fieldset>
18   - <legend><?= __('Edit User') ?></legend>
  5 + <h2><i class="icon-edit"></i> Editer un utilisateur</h2>
19 6 <?php
20 7 echo $this->Form->input('nom');
21 8 echo $this->Form->input('username');
22 9 echo $this->Form->input('password');
23 10 echo $this->Form->input('email');
24   - echo $this->Form->input('role');
25   - echo $this->Form->input('groupes_metier_id', ['options' => $groupesMetiers, 'empty' => true]);
  11 + echo $this->Form->input('role', [
  12 + 'options' => ['Super Administrateur' => 'Super Administrateur', 'Administration Plus' => 'Administration Plus', 'Administration' => 'Administration', 'Responsable' => 'Responsable', 'Utilisateur' => 'Utilisateur']
  13 + ]);
  14 + echo $this->Form->input('groupes_metier_id', ['label' => 'Groupe métier', 'options' => $groupesMetiers, 'empty' => true]);
26 15 ?>
27 16 </fieldset>
28   - <?= $this->Form->button(__('Submit')) ?>
  17 + <?= $this->Form->button(__('Valider')) ?>
29 18 <?= $this->Form->end() ?>
30 19 </div>
  20 +
  21 +<div class="actions">
  22 + <?php
  23 + echo $this->element('menu');
  24 + echo $this->element('menu_form', [ 'pluralHumanName' => 'Utilisateurs' ]);
  25 + ?>
  26 +</div>
31 27 \ No newline at end of file
... ...
src/Template/Users/login.ctp
... ... @@ -4,8 +4,8 @@
4 4 <?= $this->Flash->render('auth') ?>
5 5 <?= $this->Form->create() ?>
6 6 <fieldset>
7   - <?= $this->Form->input('username') ?>
8   - <?= $this->Form->input('password') ?>
  7 + <?= $this->Form->input('username', ['label' => 'Login']) ?>
  8 + <?= $this->Form->input('password', ['label' => 'Mot de passe']) ?>
9 9 </fieldset>
10 10 <?= $this->Form->button(__('Se Connecter')); ?>
11 11 <?= $this->Form->end() ?>
... ...