Commit 0e5846aaa56783f2e98a1696c654dcb404e960da
1 parent
19798ef9
Exists in
master
and in
3 other branches
Css bouton valider form + validation sur les modeles + correction bug
Showing
43 changed files
with
265 additions
and
208 deletions
Show diff stats
src/Controller/EmpruntsController.php
... | ... | @@ -24,8 +24,10 @@ class EmpruntsController extends AppController |
24 | 24 | 'contain' => ['Materiels'] |
25 | 25 | ]; |
26 | 26 | $emprunts = $this->paginate($this->Emprunts); |
27 | - | |
28 | - $this->set(compact('emprunts')); | |
27 | + | |
28 | + $sites = TableRegistry::get('Sites')->find('list', [ 'keyField' => 'id', 'valueField' => 'nom'])->toArray(); | |
29 | + | |
30 | + $this->set(compact('emprunts', 'sites')); | |
29 | 31 | $this->set('_serialize', ['emprunts']); |
30 | 32 | } |
31 | 33 | |
... | ... | @@ -42,6 +44,9 @@ class EmpruntsController extends AppController |
42 | 44 | 'contain' => ['Materiels'] |
43 | 45 | ]); |
44 | 46 | |
47 | + $site = TableRegistry::get('Sites')->find()->where(['id =' => $emprunt->get('e_lieu_stockage')])->first()['nom']; | |
48 | + $this->set('site', $site); | |
49 | + | |
45 | 50 | $this->set('emprunt', $emprunt); |
46 | 51 | $this->set('_serialize', ['emprunt']); |
47 | 52 | } | ... | ... |
... | ... | @@ -0,0 +1,29 @@ |
1 | +<?php | |
2 | +namespace App\Model\Table; | |
3 | + | |
4 | +use Cake\ORM\Table; | |
5 | + | |
6 | +/** | |
7 | + * App Model | |
8 | + */ | |
9 | +class AppTable extends Table | |
10 | +{ | |
11 | + | |
12 | + // autoriser les caracteres habituels standards pour un ou plusieurs MOTs | |
13 | + // accents + - _ / () . , \s (=space) | |
14 | + private $string = "a-zA-Z0-9éèàùâêôîôûç%().,\/\s\+\-_"; | |
15 | + | |
16 | + public function check_string($check) { | |
17 | + return (bool) preg_match('/^['.$this->string.']*$/', $check); | |
18 | + } | |
19 | + | |
20 | + // autoriser les caracteres spéciaux (pour une PHRASE ou paragraphe) : | |
21 | + // check_string PLUS ces symboles ====> & * > < ? % ! : , " ' | |
22 | + public function check_string_with_some_special_cars($check) { | |
23 | + return (bool) preg_match('/^['.$this->string.'?%!:,&*><\-\+\="\''.']*$/', $check); | |
24 | + } | |
25 | + | |
26 | + | |
27 | + | |
28 | + | |
29 | +} | ... | ... |
src/Model/Table/CategoriesTable.php
... | ... | @@ -12,7 +12,7 @@ use Cake\Validation\Validator; |
12 | 12 | * |
13 | 13 | * @property \Cake\ORM\Association\BelongsTo $SurCategories |
14 | 14 | */ |
15 | -class CategoriesTable extends Table | |
15 | +class CategoriesTable extends AppTable | |
16 | 16 | { |
17 | 17 | |
18 | 18 | /** |
... | ... | @@ -49,6 +49,7 @@ class CategoriesTable extends Table |
49 | 49 | |
50 | 50 | $validator |
51 | 51 | ->requirePresence('nom', 'create') |
52 | + ->add('nom', 'valid', ['rule' => ['check_string'], 'message' => 'Le champ doit être valide.', 'provider' => 'table']) | |
52 | 53 | ->notEmpty('nom') |
53 | 54 | ->add('nom', 'unique', ['rule' => 'validateUnique', 'provider' => 'table']); |
54 | 55 | ... | ... |
src/Model/Table/DocumentsTable.php
src/Model/Table/EmpruntsTable.php
... | ... | @@ -6,13 +6,16 @@ use Cake\ORM\Query; |
6 | 6 | use Cake\ORM\RulesChecker; |
7 | 7 | use Cake\ORM\Table; |
8 | 8 | use Cake\Validation\Validator; |
9 | +use Cake\ORM\toArray; | |
10 | +use Cake\Validation\Validation; | |
11 | + | |
9 | 12 | |
10 | 13 | /** |
11 | 14 | * Emprunts Model |
12 | 15 | * |
13 | 16 | * @property \Cake\ORM\Association\BelongsTo $Materiels |
14 | 17 | */ |
15 | -class EmpruntsTable extends Table | |
18 | +class EmpruntsTable extends AppTable | |
16 | 19 | { |
17 | 20 | |
18 | 21 | /** |
... | ... | @@ -50,47 +53,68 @@ class EmpruntsTable extends Table |
50 | 53 | ->allowEmpty('id', 'create'); |
51 | 54 | |
52 | 55 | $validator |
53 | - ->allowEmpty('date_emprunt'); | |
56 | + ->notEmpty('date_emprunt', 'Une date d\'emprunt doit être saisi'); | |
54 | 57 | |
55 | 58 | $validator |
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 | + ->notEmpty('date_retour_emprunt', 'Une date de retour doit être saisie'); | |
58 | 60 | |
59 | 61 | $validator |
60 | 62 | ->boolean('emprunt_interne') |
61 | 63 | ->allowEmpty('emprunt_interne'); |
62 | 64 | |
63 | 65 | $validator |
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']); | |
67 | - | |
68 | - /* | |
69 | - $validator | |
70 | - ->notEmpty('e_lieu_stockage'); | |
71 | - */ | |
66 | + ->notEmpty('nom_emprunteur_int', 'Le champ doit être rempli.', function ($context) { | |
67 | + if (isset($context['data']['emprunt_interne'])) { | |
68 | + return $context['data']['emprunt_interne']; | |
69 | + } | |
70 | + }); | |
72 | 71 | |
73 | 72 | $validator |
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 | - /* | |
73 | + ->notEmpty('email_emprunteur_int', 'Cet Email n\'est pas valide.', function ($context) { | |
74 | + if (isset($context['data']['emprunt_interne'])) { | |
75 | + return $context['data']['emprunt_interne']; | |
76 | + } | |
77 | + }); | |
78 | + | |
79 | 79 | $validator |
80 | - ->notEmpty('nom_emprunteur_int'); | |
81 | - */ | |
80 | + ->notEmpty('e_lieu_detail', 'Le champ doit être rempli pour un emprunt interne.', function ($context) { | |
81 | + if (isset($context['data']['emprunt_interne'])) { | |
82 | + return $context['data']['emprunt_interne']; | |
83 | + } | |
84 | + }) | |
85 | + ->add('e_lieu_detail', 'valid', ['rule' => ['check_string'], 'message' => 'Le champ doit être valide.', 'provider' => 'table']); | |
86 | + | |
82 | 87 | |
83 | 88 | $validator |
84 | - ->allowEmpty('email_emprunteur_int'); | |
89 | + ->notEmpty('laboratoire', 'Le champ doit être rempli pour un emprunt externe.', function ($context) { | |
90 | + if (isset($context['data']['emprunt_interne'])) { | |
91 | + return !$context['data']['emprunt_interne']; | |
92 | + } | |
93 | + }) | |
94 | + ->add('laboratoire', 'valid', ['rule' => ['check_string'], 'message' => 'Le champ doit être valide.', 'provider' => 'table']); | |
85 | 95 | |
96 | + | |
97 | + | |
86 | 98 | $validator |
87 | - ->allowEmpty('nom_emprunteur_ext') | |
88 | - ->add('nom_emprunteur_ext', 'valid', ['rule' => ['checkEmpruntExt'], 'message' => 'Le champ doit être rempli.', 'provider' => 'table']); | |
99 | + ->notEmpty('nom_emprunteur_ext', 'Le champ doit être rempli.', function ($context) { | |
100 | + if (isset($context['data']['emprunt_interne'])) { | |
101 | + return !$context['data']['emprunt_interne']; | |
102 | + } | |
103 | + }); | |
89 | 104 | |
90 | 105 | $validator |
91 | - ->allowEmpty('email_emprunteur_ext') | |
92 | - ->add('email_emprunteur_ext', 'valid', ['rule' => ['checkEmailExt'], 'message' => 'Cet Email n\'est pas valide.', 'provider' => 'table']); | |
93 | - | |
106 | + ->notEmpty('email_emprunteur_ext', 'Cet Email n\'est pas valide.', function ($context) { | |
107 | + if (isset($context['data']['emprunt_interne'])) { | |
108 | + return !$context['data']['emprunt_interne']; | |
109 | + /* | |
110 | + if (!$context['data']['emprunt_interne']) { | |
111 | + return (Validation::email($context['data']['email_emprunteur_ext'])); | |
112 | + } | |
113 | + */ | |
114 | + } | |
115 | + }); | |
116 | + | |
117 | + | |
94 | 118 | $validator |
95 | 119 | ->allowEmpty('commentaire') |
96 | 120 | ->add('commentaire', 'valid', ['rule' => ['check_string_with_some_special_cars'], 'message' => 'Le champ doit être valide.', 'provider' => 'table']); |
... | ... | @@ -99,56 +123,6 @@ class EmpruntsTable extends Table |
99 | 123 | } |
100 | 124 | |
101 | 125 | |
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 | - } | |
151 | - | |
152 | 126 | /** |
153 | 127 | * Returns a rules checker object that will be used for validating |
154 | 128 | * application integrity. |
... | ... | @@ -158,7 +132,58 @@ class EmpruntsTable extends Table |
158 | 132 | */ |
159 | 133 | public function buildRules(RulesChecker $rules) |
160 | 134 | { |
161 | - $rules->add($rules->existsIn(['materiel_id'], 'Materiels')); | |
162 | - return $rules; | |
135 | + | |
136 | + $checkReturnDateIsAfterLoanDate = function ($entity) { | |
137 | + $dateEmprunt = $entity->date_emprunt; | |
138 | + $dateRetour = $entity->date_retour_emprunt; | |
139 | + $dateEmprunt = explode("/", $dateEmprunt); | |
140 | + $dateRetour = explode("/", $dateRetour); | |
141 | + $dateEmprunt = $dateEmprunt[2].$dateEmprunt[1].$dateEmprunt[0]; | |
142 | + $dateRetour = $dateRetour[2].$dateRetour[1].$dateRetour[0]; | |
143 | + if ($dateEmprunt > $dateRetour) { | |
144 | + return false; | |
145 | + } | |
146 | + return true; | |
147 | + }; | |
148 | + | |
149 | + $rules->add($checkReturnDateIsAfterLoanDate, [ | |
150 | + 'errorField' => 'date_retour_emprunt', | |
151 | + 'message' => 'La date de retour doit être postérieure à la date de l\'emprunt.' | |
152 | + ]); | |
153 | + | |
154 | + $rules->add($rules->existsIn(['materiel_id'], 'Materiels')); | |
155 | + return $rules; | |
163 | 156 | } |
157 | + | |
158 | + | |
159 | + public function beforeSave($event, $entity, $options) | |
160 | + { | |
161 | + if (! empty ( $entity->toArray() )) { | |
162 | + $name = ''; | |
163 | + $email = ''; | |
164 | + | |
165 | + // EMPRUNT INTERNE ? | |
166 | + if ($entity->get('emprunt_interne') == 1) { | |
167 | + $name = $entity->get('nom_emprunteur_int'); | |
168 | + $email = $entity->get('email_emprunteur_int'); | |
169 | + } | |
170 | + // EMPRUNT EXTERNE | |
171 | + else { | |
172 | + $name = $entity->get('nom_emprunteur_ext'); | |
173 | + $email = $entity->get('email_emprunteur_ext'); | |
174 | + } | |
175 | + | |
176 | + $entity->set('nom_emprunteur', $name); | |
177 | + $entity->set('email_emprunteur', $email); | |
178 | + | |
179 | + | |
180 | + } | |
181 | + return true; | |
182 | + } | |
183 | + | |
184 | + | |
185 | + | |
186 | + | |
187 | + | |
188 | + | |
164 | 189 | } | ... | ... |
src/Model/Table/GroupesMetiersTable.php
... | ... | @@ -13,7 +13,7 @@ use Cake\Validation\Validator; |
13 | 13 | * @property \Cake\ORM\Association\HasMany $Materiels |
14 | 14 | * @property \Cake\ORM\Association\HasMany $Users |
15 | 15 | */ |
16 | -class GroupesMetiersTable extends Table | |
16 | +class GroupesMetiersTable extends AppTable | |
17 | 17 | { |
18 | 18 | |
19 | 19 | /** |
... | ... | @@ -51,10 +51,12 @@ class GroupesMetiersTable extends Table |
51 | 51 | ->allowEmpty('id', 'create'); |
52 | 52 | |
53 | 53 | $validator |
54 | - ->allowEmpty('nom'); | |
54 | + ->allowEmpty('nom') | |
55 | + ->add('nom', 'valid', ['rule' => ['check_string'], 'message' => 'Le champ doit être valide.', 'provider' => 'table']); | |
55 | 56 | |
56 | 57 | $validator |
57 | - ->allowEmpty('description'); | |
58 | + ->allowEmpty('description') | |
59 | + ->add('description', 'valid', ['rule' => ['check_string_with_some_special_cars'], 'message' => 'Le champ doit être valide.', 'provider' => 'table']); | |
58 | 60 | |
59 | 61 | return $validator; |
60 | 62 | } | ... | ... |
src/Model/Table/GroupesThematiquesTable.php
... | ... | @@ -12,7 +12,7 @@ use Cake\Validation\Validator; |
12 | 12 | * |
13 | 13 | * @property \Cake\ORM\Association\HasMany $Materiels |
14 | 14 | */ |
15 | -class GroupesThematiquesTable extends Table | |
15 | +class GroupesThematiquesTable extends AppTable | |
16 | 16 | { |
17 | 17 | |
18 | 18 | /** |
... | ... | @@ -47,10 +47,12 @@ class GroupesThematiquesTable extends Table |
47 | 47 | ->allowEmpty('id', 'create'); |
48 | 48 | |
49 | 49 | $validator |
50 | - ->allowEmpty('nom'); | |
50 | + ->allowEmpty('nom') | |
51 | + ->add('nom', 'valid', ['rule' => ['check_string'], 'message' => 'Le champ doit être valide.', 'provider' => 'table']); | |
51 | 52 | |
52 | 53 | $validator |
53 | - ->allowEmpty('description'); | |
54 | + ->allowEmpty('description') | |
55 | + ->add('description', 'valid', ['rule' => ['check_string_with_some_special_cars'], 'message' => 'Le champ doit être valide.', 'provider' => 'table']); | |
54 | 56 | |
55 | 57 | return $validator; |
56 | 58 | } | ... | ... |
src/Model/Table/MaterielsTable.php
... | ... | @@ -21,7 +21,7 @@ use Cake\Validation\Validator; |
21 | 21 | * @property \Cake\ORM\Association\HasMany $Emprunts |
22 | 22 | * @property \Cake\ORM\Association\HasMany $Suivis |
23 | 23 | */ |
24 | -class MaterielsTable extends Table | |
24 | +class MaterielsTable extends AppTable | |
25 | 25 | { |
26 | 26 | |
27 | 27 | public $ALL_STATUS = array('CREATED', 'VALIDATED', 'TOBEARCHIVED', 'ARCHIVED'); |
... | ... | @@ -107,11 +107,8 @@ class MaterielsTable extends Table |
107 | 107 | |
108 | 108 | $validator |
109 | 109 | ->boolean('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']); | |
114 | - | |
110 | + ->allowEmpty('materiel_administratif'); | |
111 | + | |
115 | 112 | $validator |
116 | 113 | ->boolean('materiel_technique') |
117 | 114 | ->allowEmpty('materiel_technique'); |
... | ... | @@ -189,44 +186,11 @@ class MaterielsTable extends Table |
189 | 186 | } |
190 | 187 | |
191 | 188 | |
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 | 189 | |
206 | 190 | public function checkStatus($check) { |
207 | 191 | return ( isset($check) && in_array($check, $this->ALL_STATUS) ); |
208 | 192 | } |
209 | 193 | |
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 | 194 | |
231 | 195 | /** |
232 | 196 | * Returns a rules checker object that will be used for validating |
... | ... | @@ -237,6 +201,38 @@ class MaterielsTable extends Table |
237 | 201 | */ |
238 | 202 | public function buildRules(RulesChecker $rules) |
239 | 203 | { |
204 | + | |
205 | + | |
206 | + $checkAtLeastOneChecked = function($entity) { | |
207 | + return ( $entity->materiel_administratif || $entity->materiel_technique); | |
208 | + }; | |
209 | + | |
210 | + // return if price >=800€ then must be checked as "administratif" | |
211 | + $checkIfIsAdministratifWhenShouldBe = function ($entity) { | |
212 | + return ! ( isset($entity->prix_ht) && $entity->prix_ht >= 800 && !$entity->materiel_administratif ); | |
213 | + }; | |
214 | + | |
215 | + // return if price <800€ then must NOT be checked as "administratif" | |
216 | + $checkIfIsNotAdministratifWhenShouldNotBe = function ($entity) { | |
217 | + return ! ( isset($entity->prix_ht) && $entity->prix_ht < 800 && $entity->materiel_administratif ); | |
218 | + }; | |
219 | + | |
220 | + | |
221 | + $rules->add($checkAtLeastOneChecked, [ | |
222 | + 'errorField' => 'materiel_administratif', | |
223 | + 'message' => 'Le matériel est obligatoirement inventoriable ou technique.' | |
224 | + ]); | |
225 | + $rules->add($checkIfIsAdministratifWhenShouldBe, [ | |
226 | + 'errorField' => 'materiel_administratif', | |
227 | + 'message' => 'Le matériel vaut plus de 800€ HT, il est donc obligatoirement inventoriable.' | |
228 | + ]); | |
229 | + $rules->add($checkIfIsNotAdministratifWhenShouldNotBe, [ | |
230 | + 'errorField' => 'materiel_administratif', | |
231 | + 'message' => 'Le matériel vaut moins de 800€ HT, il n\'est donc pas inventoriable.' | |
232 | + ]); | |
233 | + | |
234 | + | |
235 | + | |
240 | 236 | $rules->add($rules->isUnique(['numero_laboratoire'])); |
241 | 237 | $rules->add($rules->existsIn(['sur_categorie_id'], 'SurCategories')); |
242 | 238 | $rules->add($rules->existsIn(['categorie_id'], 'Categories')); | ... | ... |
src/Model/Table/OrganismesTable.php
... | ... | @@ -12,7 +12,7 @@ use Cake\Validation\Validator; |
12 | 12 | * |
13 | 13 | * @property \Cake\ORM\Association\HasMany $Materiels |
14 | 14 | */ |
15 | -class OrganismesTable extends Table | |
15 | +class OrganismesTable extends AppTable | |
16 | 16 | { |
17 | 17 | |
18 | 18 | /** |
... | ... | @@ -47,7 +47,8 @@ class OrganismesTable extends Table |
47 | 47 | ->allowEmpty('id', 'create'); |
48 | 48 | |
49 | 49 | $validator |
50 | - ->allowEmpty('nom'); | |
50 | + ->allowEmpty('nom') | |
51 | + ->add('nom', 'valid', ['rule' => ['check_string'], 'message' => 'Le champ doit être valide.', 'provider' => 'table']); | |
51 | 52 | |
52 | 53 | return $validator; |
53 | 54 | } | ... | ... |
src/Model/Table/SitesTable.php
... | ... | @@ -12,7 +12,7 @@ use Cake\Validation\Validator; |
12 | 12 | * |
13 | 13 | * @property \Cake\ORM\Association\HasMany $Materiels |
14 | 14 | */ |
15 | -class SitesTable extends Table | |
15 | +class SitesTable extends AppTable | |
16 | 16 | { |
17 | 17 | |
18 | 18 | /** |
... | ... | @@ -47,7 +47,8 @@ class SitesTable extends Table |
47 | 47 | ->allowEmpty('id', 'create'); |
48 | 48 | |
49 | 49 | $validator |
50 | - ->allowEmpty('nom'); | |
50 | + ->allowEmpty('nom') | |
51 | + ->add('nom', 'valid', ['rule' => ['check_string'], 'message' => 'Le champ doit être valide.', 'provider' => 'table']); | |
51 | 52 | |
52 | 53 | return $validator; |
53 | 54 | } | ... | ... |
src/Model/Table/SousCategoriesTable.php
... | ... | @@ -12,7 +12,7 @@ use Cake\Validation\Validator; |
12 | 12 | * |
13 | 13 | * @property \Cake\ORM\Association\BelongsTo $Categories |
14 | 14 | */ |
15 | -class SousCategoriesTable extends Table | |
15 | +class SousCategoriesTable extends AppTable | |
16 | 16 | { |
17 | 17 | |
18 | 18 | /** |
... | ... | @@ -49,7 +49,8 @@ class SousCategoriesTable extends Table |
49 | 49 | |
50 | 50 | $validator |
51 | 51 | ->requirePresence('nom', 'create') |
52 | - ->notEmpty('nom'); | |
52 | + ->notEmpty('nom') | |
53 | + ->add('nom', 'valid', ['rule' => ['check_string'], 'message' => 'Le champ doit être valide.', 'provider' => 'table']); | |
53 | 54 | |
54 | 55 | return $validator; |
55 | 56 | } | ... | ... |
src/Model/Table/SuivisTable.php
... | ... | @@ -13,7 +13,7 @@ use Cake\Validation\Validator; |
13 | 13 | * @property \Cake\ORM\Association\BelongsTo $Materiels |
14 | 14 | * @property \Cake\ORM\Association\HasMany $Documents |
15 | 15 | */ |
16 | -class SuivisTable extends Table | |
16 | +class SuivisTable extends AppTable | |
17 | 17 | { |
18 | 18 | |
19 | 19 | /** |
... | ... | @@ -60,9 +60,8 @@ class SuivisTable extends Table |
60 | 60 | ->allowEmpty('date_controle'); |
61 | 61 | |
62 | 62 | $validator |
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']); | |
65 | - | |
63 | + ->allowEmpty('date_prochain_controle'); | |
64 | + | |
66 | 65 | $validator |
67 | 66 | ->allowEmpty('type_intervention') |
68 | 67 | ->add('type_intervention', 'valid', ['rule' => 'check_string', 'message' => 'Ce champ contient des caractères interdits', 'provider' => 'table']); |
... | ... | @@ -84,37 +83,7 @@ class SuivisTable extends Table |
84 | 83 | return $validator; |
85 | 84 | } |
86 | 85 | |
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 | - } | |
86 | + | |
118 | 87 | |
119 | 88 | /** |
120 | 89 | * Returns a rules checker object that will be used for validating |
... | ... | @@ -125,6 +94,28 @@ class SuivisTable extends Table |
125 | 94 | */ |
126 | 95 | public function buildRules(RulesChecker $rules) |
127 | 96 | { |
97 | + | |
98 | + $checkNextDateControlIsAfterDateControl = function($entity) { | |
99 | + | |
100 | + $controle = $entity->date_controle; | |
101 | + if (empty($controle)) return true; | |
102 | + $prochainControle = $entity->date_prochain_controle; | |
103 | + $controle = explode("/", $controle); | |
104 | + $prochainControle = explode("/", $prochainControle); | |
105 | + $controle = $controle[2].$controle[1].$controle[0]; | |
106 | + $prochainControle = $prochainControle[2].$prochainControle[1].$prochainControle[0]; | |
107 | + if ($controle > $prochainControle) { | |
108 | + return false; | |
109 | + } | |
110 | + return true; | |
111 | + | |
112 | + }; | |
113 | + | |
114 | + $rules->add($checkNextDateControlIsAfterDateControl, [ | |
115 | + 'errorField' => 'date_prochain_controle', | |
116 | + 'message' => 'La date de la prochaine intervention dois être postérieure à la date de l\'intervention précédente.' | |
117 | + ]); | |
118 | + | |
128 | 119 | $rules->add($rules->existsIn(['materiel_id'], 'Materiels')); |
129 | 120 | return $rules; |
130 | 121 | } | ... | ... |
src/Model/Table/SurCategoriesTable.php
... | ... | @@ -11,7 +11,7 @@ use Cake\Validation\Validator; |
11 | 11 | * SurCategories Model |
12 | 12 | * |
13 | 13 | */ |
14 | -class SurCategoriesTable extends Table | |
14 | +class SurCategoriesTable extends AppTable | |
15 | 15 | { |
16 | 16 | |
17 | 17 | /** |
... | ... | @@ -40,7 +40,8 @@ class SurCategoriesTable extends Table |
40 | 40 | $validator |
41 | 41 | ->requirePresence('nom', 'create') |
42 | 42 | ->notEmpty('nom') |
43 | - ->add('nom', 'unique', ['rule' => 'validateUnique', 'provider' => 'table']); | |
43 | + ->add('nom', 'unique', ['rule' => 'validateUnique', 'provider' => 'table']) | |
44 | + ->add('nom', 'valid', ['rule' => ['check_string'], 'message' => 'Le champ doit être valide.', 'provider' => 'table']); | |
44 | 45 | |
45 | 46 | return $validator; |
46 | 47 | } | ... | ... |
src/Model/Table/TypeSuivisTable.php
... | ... | @@ -11,7 +11,7 @@ use Cake\Validation\Validator; |
11 | 11 | * TypeSuivis Model |
12 | 12 | * |
13 | 13 | */ |
14 | -class TypeSuivisTable extends Table | |
14 | +class TypeSuivisTable extends AppTable | |
15 | 15 | { |
16 | 16 | |
17 | 17 | /** |
... | ... | @@ -42,7 +42,8 @@ class TypeSuivisTable extends Table |
42 | 42 | ->allowEmpty('id', 'create'); |
43 | 43 | |
44 | 44 | $validator |
45 | - ->allowEmpty('nom'); | |
45 | + ->allowEmpty('nom') | |
46 | + ->add('nom', 'valid', ['rule' => ['check_string'], 'message' => 'Le champ doit être valide.', 'provider' => 'table']); | |
46 | 47 | |
47 | 48 | return $validator; |
48 | 49 | } | ... | ... |
src/Model/Table/UsersTable.php
... | ... | @@ -12,7 +12,7 @@ use Cake\Validation\Validator; |
12 | 12 | * |
13 | 13 | * @property \Cake\ORM\Association\BelongsTo $GroupesMetiers |
14 | 14 | */ |
15 | -class UsersTable extends Table | |
15 | +class UsersTable extends AppTable | |
16 | 16 | { |
17 | 17 | |
18 | 18 | /** |
... | ... | @@ -47,10 +47,12 @@ class UsersTable extends Table |
47 | 47 | ->allowEmpty('id', 'create'); |
48 | 48 | |
49 | 49 | $validator |
50 | - ->notEmpty('nom', 'Un nom est nécessaire'); | |
50 | + ->notEmpty('nom', 'Un nom est nécessaire') | |
51 | + ->add('nom', 'valid', ['rule' => ['check_string'], 'message' => 'Le champ doit être valide.', 'provider' => 'table']); | |
51 | 52 | |
52 | 53 | $validator |
53 | 54 | ->notEmpty('username', 'Un login est nécessaire') |
55 | + ->add('username', 'valid', ['rule' => ['check_string'], 'message' => 'Le champ doit être valide.', 'provider' => 'table']) | |
54 | 56 | ->add('username', 'unique', ['rule' => 'validateUnique', 'provider' => 'table']); |
55 | 57 | |
56 | 58 | $validator | ... | ... |
src/Template/Categories/add.ctp
... | ... | @@ -8,7 +8,7 @@ |
8 | 8 | echo $this->Form->input('sur_categorie_id', ['label' => 'Domaine', 'options' => $surCategories]); |
9 | 9 | ?> |
10 | 10 | </fieldset> |
11 | - <?= $this->Form->button(__('Valider')) ?> | |
11 | + <?= $this->Form->submit(__('Valider')) ?> | |
12 | 12 | <?= $this->Form->end() ?> |
13 | 13 | </div> |
14 | 14 | ... | ... |
src/Template/Categories/edit.ctp
... | ... | @@ -8,7 +8,7 @@ |
8 | 8 | echo $this->Form->input('sur_categorie_id', ['label' => 'Domaine', 'options' => $surCategories]); |
9 | 9 | ?> |
10 | 10 | </fieldset> |
11 | - <?= $this->Form->button(__('Valider')) ?> | |
11 | + <?= $this->Form->submit(__('Valider')) ?> | |
12 | 12 | <?= $this->Form->end() ?> |
13 | 13 | </div> |
14 | 14 | ... | ... |
src/Template/Emprunts/add.ctp
src/Template/Emprunts/edit.ctp
src/Template/Emprunts/index.ctp
... | ... | @@ -26,8 +26,7 @@ |
26 | 26 | <td><?= h($emprunt->date_emprunt) ?></td> |
27 | 27 | <td><?= h($emprunt->date_retour_emprunt) ?></td> |
28 | 28 | <td><?= h($emprunt->nom_emprunteur) ?></td> |
29 | - <td><?= h($emprunt->e_lieu_stockage).'-'.h($emprunt->e_lieu_detail) ?></td> | |
30 | - | |
29 | + <td><?php if (h($emprunt->emprunt_interne) == '1') { echo $sites[h($emprunt->e_lieu_stockage)].'-'.h($emprunt->e_lieu_detail); } else { echo h($emprunt->laboratoire); } ?></td> | |
31 | 30 | |
32 | 31 | <td class="actions" style="padding: 6px 0;"> |
33 | 32 | <?= $this->Html->link(__('<i class="icon-eye-open"></i>'), ['action' => 'view', $emprunt->id], ['title' => 'Visualiser', 'style' => 'margin: 0 2px', 'escape' => false ]) ?> | ... | ... |
src/Template/Emprunts/view.ctp
... | ... | @@ -27,7 +27,8 @@ function displayElement($nom, $valeur) { |
27 | 27 | displayElement(__('Type d\'emprunt'), $emprunt->emprunt_interne ? __('Interne') : __('Externe')); |
28 | 28 | displayElement(__('Date Emprunt'), strftime("%e %B %Y", strtotime(h($emprunt->date_emprunt)))); |
29 | 29 | displayElement(__('Date Retour Emprunt'), strftime("%e %B %Y", strtotime(h($emprunt->date_retour_emprunt)))); |
30 | - displayElement(__('Lieu de stockage'), h($emprunt->e_lieu_stockage).'-'.h($emprunt->e_lieu_detail)); | |
30 | + if (h($emprunt->emprunt_interne) == '1') { displayElement(__('Lieu de stockage'), $site.'-'.h($emprunt->e_lieu_detail)); } else { displayElement('Lieu de stockage', h($emprunt->laboratoire)); } | |
31 | + | |
31 | 32 | displayElement(__('Responsable'), h($emprunt->nom_emprunteur)); |
32 | 33 | displayElement(__('Email'), h($emprunt->email_emprunteur)); |
33 | 34 | if ($emprunt->emprunt_interne != 1) { | ... | ... |
src/Template/GroupesMetiers/add.ctp
src/Template/GroupesMetiers/edit.ctp
src/Template/GroupesThematiques/add.ctp
src/Template/GroupesThematiques/edit.ctp
src/Template/Layout/default.ctp
... | ... | @@ -60,9 +60,10 @@ $cakeDescription = 'Labinvent 2.0'; |
60 | 60 | </div> |
61 | 61 | </div> |
62 | 62 | |
63 | - <?= $this->Flash->render()?> | |
64 | - <?= $this->Flash->render('auth') ?> | |
63 | + | |
65 | 64 | <div class="content"> |
65 | + <?= $this->Flash->render()?> | |
66 | + <?= $this->Flash->render('auth') ?> | |
66 | 67 | <?= $this->fetch('content')?> |
67 | 68 | </div> |
68 | 69 | |
... | ... | @@ -92,7 +93,7 @@ $cakeDescription = 'Labinvent 2.0'; |
92 | 93 | </i></td> |
93 | 94 | <td id="version"> |
94 | 95 | <!-- VERSION M.m.f.b (version (M)ajeure, version (m)ineure, numero de nouvelle (f)onctionnalite, numero de (b)ugfix) --> |
95 | - <font color="black">VERSION 2.0.2 (06/05/2016)</font> | |
96 | + <font color="black">VERSION 2.0.2.2 (06/05/2016)</font> | |
96 | 97 | </td> |
97 | 98 | </tr> |
98 | 99 | </table> | ... | ... |
src/Template/Materiels/add.ctp
... | ... | @@ -3,7 +3,7 @@ |
3 | 3 | <?= $this->Form->create($materiel) ?> |
4 | 4 | <fieldset> |
5 | 5 | <h2><i class="icon-plus"></i> Ajouter un Matériel</h2> |
6 | - <?= $this->Form->button(__('Enregistrer')) ?> | |
6 | + <?= $this->Form->submit(__('Enregistrer')) ?> | |
7 | 7 | |
8 | 8 | <?php |
9 | 9 | echo $this->Form->input('designation', ['label' => 'Désignation']); |
... | ... | @@ -54,7 +54,7 @@ |
54 | 54 | |
55 | 55 | ?> |
56 | 56 | </fieldset> |
57 | - <?= $this->Form->button(__('Enregistrer')) ?> | |
57 | + <?= $this->Form->submit(__('Enregistrer')) ?> | |
58 | 58 | <?= $this->Form->end() ?> |
59 | 59 | </div> |
60 | 60 | ... | ... |
src/Template/Materiels/edit.ctp
... | ... | @@ -52,7 +52,7 @@ if (IS_VALIDATED) |
52 | 52 | <?= $this->Form->create($materiel) ?> |
53 | 53 | <fieldset> |
54 | 54 | <h2><i class="icon-edit"></i> Editer un Matériel</h2> |
55 | - <?= $this->Form->button(__('Enregistrer')) ?> | |
55 | + <?= $this->Form->submit(__('Enregistrer')) ?> | |
56 | 56 | |
57 | 57 | <?php |
58 | 58 | echo $this->Form->input('designation', [ |
... | ... | @@ -205,7 +205,7 @@ if (IS_VALIDATED) |
205 | 205 | |
206 | 206 | ?> |
207 | 207 | </fieldset> |
208 | - <?= $this->Form->button(__('Enregistrer')) ?> | |
208 | + <?= $this->Form->submit(__('Enregistrer')) ?> | |
209 | 209 | <?= $this->Form->end() ?> |
210 | 210 | </div> |
211 | 211 | ... | ... |
src/Template/Organismes/add.ctp
src/Template/Organismes/edit.ctp
src/Template/Pages/about.ctp
1 | 1 | <div class="index"> |
2 | 2 | <?php |
3 | 3 | |
4 | -//$localConfig = AppController::getLocalConfig(); | |
5 | - | |
6 | 4 | $softwareName = "INVENTIRAP"; |
7 | -//$softwareName = strtoupper($localConfig['softwareName']); | |
5 | + | |
8 | 6 | echo '<h2><i class="icon-idea"></i> A PROPOS DU LOGICIEL '. $softwareName .'</h2>'; |
9 | 7 | |
10 | 8 | echo <<<"EOD" | ... | ... |
src/Template/Sites/add.ctp
src/Template/Sites/edit.ctp
src/Template/SousCategories/add.ctp
src/Template/SousCategories/edit.ctp
src/Template/Suivis/add.ctp
src/Template/Suivis/edit.ctp
src/Template/SurCategories/add.ctp
src/Template/SurCategories/edit.ctp
src/Template/TypeSuivis/add.ctp
src/Template/TypeSuivis/edit.ctp
src/Template/Users/add.ctp
... | ... | @@ -14,7 +14,7 @@ |
14 | 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(__('Valider')) ?> | |
17 | + <?= $this->Form->submit(__('Valider')) ?> | |
18 | 18 | <?= $this->Form->end() ?> |
19 | 19 | </div> |
20 | 20 | ... | ... |
src/Template/Users/edit.ctp
... | ... | @@ -14,7 +14,7 @@ |
14 | 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(__('Valider')) ?> | |
17 | + <?= $this->Form->submit(__('Valider')) ?> | |
18 | 18 | <?= $this->Form->end() ?> |
19 | 19 | </div> |
20 | 20 | ... | ... |