Commit 4dae83a2d48a5806c596ec7d4d4a174633e68186
1 parent
644e6326
Exists in
master
and in
3 other branches
Version: 2.5.1.0
!!! Se placer dans database/update et exécuter le script ./db-update-2016-06-28.sh !!! Confirmation suppression doc + organisation configuration/form + taille doc config + photo materiel + liste type document défaut + acl documents + bugfixes Demande (terminé) : https://projects.irap.omp.eu/issues/3905 https://projects.irap.omp.eu/issues/3790 https://projects.irap.omp.eu/issues/3904 Demande (en cours) : https://projects.irap.omp.eu/issues/3716 Version majeure en cours (2.5): https://projects.irap.omp.eu/versions/99 ROADMAP: https://projects.irap.omp.eu/projects/labinvent/roadmap
Showing
26 changed files
with
814 additions
and
396 deletions
Show diff stats
README-LABINVENT.md
... | ... | @@ -50,19 +50,18 @@ Logiciel testé et validé sur les configurations suivantes : |
50 | 50 | |
51 | 51 | VERSION ACTUELLE |
52 | 52 | |
53 | -Date: 27/06/2016 | |
54 | -Version: 2.5.0.0 | |
53 | +Date: 28/06/2016 | |
54 | +Version: 2.5.1.0 | |
55 | 55 | |
56 | -!!! Se placer dans database/update et exécuter le script ./db-update-2016-06-27.sh !!! | |
56 | +!!! Se placer dans database/update et exécuter le script ./db-update-2016-06-28.sh !!! | |
57 | 57 | |
58 | -Documents + Type documents + Réorganisation configuration générale (view) + Bugfixes (numero de labo, ... ) | |
58 | +Confirmation suppression doc + organisation configuration/form + taille doc config + photo materiel + liste type document défaut + acl documents + bugfixes | |
59 | 59 | |
60 | -Demande (terminé) : https://projects.irap.omp.eu/issues/3789 | |
61 | - https://projects.irap.omp.eu/issues/3762 | |
62 | - https://projects.irap.omp.eu/issues/3791 | |
60 | +Demande (terminé) : https://projects.irap.omp.eu/issues/3905 | |
61 | + https://projects.irap.omp.eu/issues/3790 | |
62 | + https://projects.irap.omp.eu/issues/3904 | |
63 | 63 | |
64 | -Demande (en cours) : https://projects.irap.omp.eu/issues/3790 | |
65 | - https://projects.irap.omp.eu/issues/3716 | |
64 | +Demande (en cours) : https://projects.irap.omp.eu/issues/3716 | |
66 | 65 | |
67 | 66 | Version majeure en cours (2.5): https://projects.irap.omp.eu/versions/99 |
68 | 67 | |
... | ... | @@ -101,6 +100,10 @@ Liste complète des évolutions: https://gitlab.irap.omp.eu/epallier/labinvent/c |
101 | 100 | |
102 | 101 | MODIFICATIONS STRUCTURELLES A FAIRE MANUELLEMENT APRES LA MISE A JOUR (git pull) |
103 | 102 | |
103 | +28/06/16 (v2.5.1.0) Se placer dans database/update et exécuter le script ./db-update-2016-06-28.sh | |
104 | + | |
105 | +27/06/16 (v2.5.0.0) Se placer dans database/update et exécuter le script ./db-update-2016-06-27.sh | |
106 | + | |
104 | 107 | 24/06/16 (v2.4.7.2) Se placer dans database/update et exécuter le script ./db-update-2016-06-24-2.sh |
105 | 108 | |
106 | 109 | 24/06/16 (v2.4.7.0) Se placer dans database/update et exécuter le script ./db-update-2016-06-24.sh | ... | ... |
database/labinvent_2.1_12-05-16.sql
... | ... | @@ -73,11 +73,11 @@ CREATE TABLE IF NOT EXISTS `documents` ( |
73 | 73 | `id` int(11) NOT NULL AUTO_INCREMENT, |
74 | 74 | `type_doc` varchar(20) DEFAULT NULL, |
75 | 75 | `description` text DEFAULT NULL, |
76 | - `chemin` varchar(200) DEFAULT NULL, | |
77 | 76 | `nom` VARCHAR(100) DEFAULT NULL, |
78 | 77 | `materiel_id` int(11) DEFAULT NULL, |
79 | 78 | `suivi_id` int(11) DEFAULT NULL, |
80 | 79 | `type_document_id` int(11) DEFAULT NULL, |
80 | + `photo` tinyint(1) DEFAULT NULL, | |
81 | 81 | PRIMARY KEY (`id`), |
82 | 82 | KEY `fk_documents_materiel_id` (`materiel_id`), |
83 | 83 | KEY `fk_documents_suivi_id` (`suivi_id`), |
... | ... | @@ -182,6 +182,7 @@ CREATE TABLE IF NOT EXISTS `materiels` ( |
182 | 182 | `date_fin_garantie` date DEFAULT NULL, |
183 | 183 | `duree_garantie` int(10) DEFAULT NULL, |
184 | 184 | `unite_duree_garantie` varchar (30) DEFAULT NULL, |
185 | + `photo_id` int(11) DEFAULT NULL, | |
185 | 186 | PRIMARY KEY (`id`), |
186 | 187 | UNIQUE KEY `numero_irap` (`numero_laboratoire`), |
187 | 188 | KEY `fk_administrative_materials_sub_categories1` (`sous_categorie_id`), |
... | ... | @@ -298,7 +299,6 @@ CREATE TABLE `type_documents` ( |
298 | 299 | PRIMARY KEY (`id`) |
299 | 300 | ); |
300 | 301 | |
301 | -Insert into type_documents(id, nom) values (1, 'N/A'); | |
302 | 302 | -- -------------------------------------------------------- |
303 | 303 | -- |
304 | 304 | -- Structure de la table `users` |
... | ... | @@ -360,6 +360,7 @@ CREATE TABLE IF NOT EXISTS `configurations` ( |
360 | 360 | `prix_inventaire_administratif` int( 10 ) DEFAULT '800', |
361 | 361 | `numero_labo_sans_annee` tinyint(1) DEFAULT NULL, |
362 | 362 | `date_commande_facultative` tinyint(1) DEFAULT NULL, |
363 | + `taille_max_doc` int (15) DEFAULT '8000000', | |
363 | 364 | PRIMARY KEY (`id`), |
364 | 365 | UNIQUE KEY `nom_UNIQUE` (`nom`) |
365 | 366 | ); |
... | ... | @@ -430,10 +431,24 @@ ALTER TABLE `users` |
430 | 431 | Insert into type_suivis(nom) values ('Réparation'); |
431 | 432 | Insert into sites(id, nom) values (9, 'N/A'); |
432 | 433 | |
434 | +Insert into type_documents(id, nom) values (1, 'N/A'); | |
435 | +Insert into type_documents(nom) values ('Bon de commande'); | |
436 | +Insert into type_documents(nom) values ('Bon de livraison'); | |
437 | +Insert into type_documents(nom) values ('Photo'); | |
438 | +Insert into type_documents(nom) values ('Documentation technique'); | |
439 | +Insert into type_documents(nom) values ('Spécifications'); | |
440 | +Insert into type_documents(nom) values ('CR de maintenance'); | |
441 | +Insert into type_documents(nom) values ('CR d\'étalonnage'); | |
442 | +Insert into type_documents(nom) values ('Suivi de panne'); | |
443 | +Insert into type_documents(nom) values ('Certificat de garantie'); | |
444 | +Insert into type_documents(nom) values ('Certificat de conformité'); | |
445 | +Insert into type_documents(nom) values ('Manuel d\'utilisation'); | |
446 | + | |
433 | 447 | -- Insertion par défaut pour la table configuration |
434 | 448 | Insert into `configurations`(`nom`, `mode_install`, `mode_debug`, `use_ldap`, `host_ldap`, `port_ldap`, `authentificationType_ldap`, `baseDn_ldap`, `filter_ldap`, `labName`, `labNameShort`, `labPresent`, `labUmr`, `hasPrinter`, `emailGuest1`, `emailGuest2`, `emailGuest3`) values ('default', '1', '0', '0', '', '', 'xxx', '', '', 'LABONAME', 'LABO', 'du ', '', '0', '', '', ''); |
435 | 449 | |
436 | 450 | |
451 | + | |
437 | 452 | /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; |
438 | 453 | /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; |
439 | 454 | /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; | ... | ... |
... | ... | @@ -0,0 +1,38 @@ |
1 | +#!/bin/bash | |
2 | + | |
3 | +# Pour Mac OS recent (10.10, Yosemite), la syntaxe du SED est differente | |
4 | +# Il faut donc faire une copie de ce fichier et transformer les instructions sed a l'interieur | |
5 | +# Pour cela, il suffit d'executer ces 2 lignes : | |
6 | +# cp ce_script.sh ce_script_macosx.sh | |
7 | +# sed -e "s/ -i / -i '' /" -i '' ce_script_macosx.sh | |
8 | + | |
9 | +if [ ! -f ../../config/app.php ] ; then | |
10 | +echo "Vous devez executer ce script depuis le dossier database/update/" | |
11 | +exit 1 | |
12 | +fi | |
13 | + | |
14 | +if [ ! -d "../../webroot/img/photos" ]; then | |
15 | + mkdir ../../webroot/img/photos | |
16 | +fi | |
17 | + | |
18 | + | |
19 | +# Get login, pass, dbname, and hostname | |
20 | +username=$(grep "/\*d\*/'username'" ../../config/app.php | cut -d"'" -f4) | |
21 | +password=$(grep "/\*d\*/'password'" ../../config/app.php | cut -d"'" -f4) | |
22 | +database=$(grep "/\*d\*/'database'" ../../config/app.php | cut -d"'" -f4) | |
23 | +host=$(grep "/\*d\*/'host'" ../../config/app.php | cut -d"'" -f4) | |
24 | + | |
25 | + | |
26 | +cp -p ./script_sql/db-update-2016-06-28.sql ./script_sql/db-update-2016-06-28-build.sql | |
27 | + | |
28 | +# Execute sql update script | |
29 | +sed -e "s/database/$database/" -i ./script_sql/db-update-2016-06-28-build.sql | |
30 | +mysql --user=$username --password=$password -h $host < ./script_sql/db-update-2016-06-28-build.sql | |
31 | + | |
32 | +# Delete cakephp cache | |
33 | +sudo rm ../../tmp/cache/models/* | |
34 | +sudo rm ../../tmp/cache/persistent/* | |
35 | + | |
36 | +sudo chmod -R 777 ../../tmp | |
37 | +sudo chmod -R 777 ../../vendor | |
38 | +sudo chmod -R 777 ../../webroot | ... | ... |
... | ... | @@ -0,0 +1,20 @@ |
1 | +use database; | |
2 | + | |
3 | +ALTER TABLE `materiels` ADD `photo_id` int(11) DEFAULT NULL; | |
4 | + | |
5 | +ALTER TABLE `configurations` ADD `taille_max_doc` int (15) DEFAULT '8000000'; | |
6 | + | |
7 | +ALTER TABLE `documents` ADD `photo` tinyint(1) DEFAULT NULL; | |
8 | + | |
9 | +Insert into type_documents(nom) values ('Bon de commande'); | |
10 | +Insert into type_documents(nom) values ('Bon de livraison'); | |
11 | +Insert into type_documents(nom) values ('Photo'); | |
12 | +Insert into type_documents(nom) values ('Documentation technique'); | |
13 | +Insert into type_documents(nom) values ('Spécifications'); | |
14 | +Insert into type_documents(nom) values ('CR de maintenance'); | |
15 | +Insert into type_documents(nom) values ('CR d\'étalonnage'); | |
16 | +Insert into type_documents(nom) values ('Suivi de panne'); | |
17 | + | |
18 | +Insert into type_documents(nom) values ('Certificat de garantie'); | |
19 | +Insert into type_documents(nom) values ('Certificat de conformité'); | |
20 | +Insert into type_documents(nom) values ('Manuel d\'utilisation'); | ... | ... |
install/installation.sh
... | ... | @@ -98,6 +98,9 @@ fi |
98 | 98 | if [ ! -d "./webroot/img/qrcodes" ]; then |
99 | 99 | mkdir ./webroot/img/qrcodes |
100 | 100 | fi |
101 | +if [ ! -d "./webroot/img/photos" ]; then | |
102 | + mkdir ./webroot/img/photos | |
103 | +fi | |
101 | 104 | |
102 | 105 | if [ ! -d "./vendor/phpunit" ]; then |
103 | 106 | ./composer.phar require --dev phpunit/phpunit | ... | ... |
src/Controller/DocumentsController.php
... | ... | @@ -35,9 +35,17 @@ class DocumentsController extends AppController |
35 | 35 | return true; |
36 | 36 | } |
37 | 37 | } |
38 | + | |
39 | + if($action == 'delete') { | |
40 | + if ($this->userHasRole('Administration')) { | |
41 | + return true; | |
42 | + } | |
43 | + } | |
38 | 44 | |
39 | 45 | //Pour tout le monde |
40 | 46 | if (in_array($action, ['view', 'add', 'ficheMateriel'])) return true; |
47 | + | |
48 | + return false; | |
41 | 49 | } |
42 | 50 | |
43 | 51 | /** |
... | ... | @@ -96,9 +104,27 @@ class DocumentsController extends AppController |
96 | 104 | if ($this->request->is('post')) { |
97 | 105 | $document = $this->Documents->patchEntity($document, $this->request->data); |
98 | 106 | |
107 | + if(isset($this->passedArgs[2]) && $this->passedArgs[2] == 'photo') { | |
108 | + $document->set('photo', 1); | |
109 | + } | |
110 | + | |
99 | 111 | if ($this->Documents->save($document)) { |
100 | 112 | $this->Flash->success(__('Le fichier a bien été ajouté.')); |
101 | 113 | |
114 | + if(isset($this->passedArgs[2]) && $this->passedArgs[2] == 'photo') { | |
115 | + $materielTable = TableRegistry::get('Materiels'); | |
116 | + $materiel = $materielTable->get($document->materiel_id); | |
117 | + | |
118 | + $photoIdOld = $materiel->get('photo_id'); | |
119 | + if(isset($photoIdOld)) { | |
120 | + $docOld = TableRegistry::get('Documents')->get($photoIdOld); | |
121 | + $this->Documents->delete($docOld); | |
122 | + } | |
123 | + | |
124 | + $materiel->set('photo_id', $document->id); | |
125 | + $materielTable->save($materiel); | |
126 | + } | |
127 | + | |
102 | 128 | $id = $document->materiel_id; |
103 | 129 | if(empty($id)) { |
104 | 130 | $id = $document->suivi_id; |
... | ... | @@ -120,6 +146,10 @@ class DocumentsController extends AppController |
120 | 146 | $suivi = $this->Documents->Suivis->find('list', [ 'keyField' => 'id', 'valueField' => 'id'])->where(['id =' => $this->passedArgs[0]]); |
121 | 147 | $this->set('suivi', $suivi); |
122 | 148 | } |
149 | + | |
150 | + if(isset($this->passedArgs[2]) && $this->passedArgs[2] == 'photo') { | |
151 | + $this->set('photo', 1); | |
152 | + } | |
123 | 153 | |
124 | 154 | |
125 | 155 | $typesD = $this->Documents->TypeDocuments->find('list', [ 'keyField' => 'id', 'valueField' => 'nom', 'order' => 'TypeDocuments.nom']); |
... | ... | @@ -141,6 +171,14 @@ class DocumentsController extends AppController |
141 | 171 | $this->request->allowMethod(['post', 'delete']); |
142 | 172 | $document = $this->Documents->get($id); |
143 | 173 | |
174 | + if($document->photo) { | |
175 | + $materielTable = TableRegistry::get('Materiels'); | |
176 | + $materiel = $materielTable->get($document->materiel_id); | |
177 | + | |
178 | + $materiel->set('photo_id', null); | |
179 | + $materielTable->save($materiel); | |
180 | + } | |
181 | + | |
144 | 182 | if ($this->Documents->delete($document)) { |
145 | 183 | $this->Flash->success(__('Le fichier a bien été supprimé.')); |
146 | 184 | } else { | ... | ... |
src/Controller/MaterielsController.php
... | ... | @@ -217,6 +217,11 @@ class MaterielsController extends AppController |
217 | 217 | $typeSuivis = TableRegistry::get('TypeSuivis'); |
218 | 218 | $typeDocuments = TableRegistry::get('TypeDocuments'); |
219 | 219 | |
220 | + if($materiel->photo_id != null) { | |
221 | + $imgMateriel = $materiel->photo_id.'.'.TableRegistry::get('Documents')->get($materiel->photo_id)->get('type_doc'); | |
222 | + $this->set('imgMateriel', $imgMateriel); | |
223 | + } | |
224 | + | |
220 | 225 | $this->set('sites', $sites); |
221 | 226 | $this->set('typeSuivis', $typeSuivis); |
222 | 227 | $this->set('typeDocuments', $typeDocuments); | ... | ... |
src/Model/Entity/Configuration.php
src/Model/Entity/Document.php
... | ... | @@ -11,6 +11,7 @@ use Cake\ORM\Entity; |
11 | 11 | * @property string $chemin |
12 | 12 | * @property string $description |
13 | 13 | * @property string $nom |
14 | + * @property bool $photo | |
14 | 15 | * @property int $materiel_id |
15 | 16 | * @property \App\Model\Entity\Materiel $materiel |
16 | 17 | * @property int $suivi_id | ... | ... |
src/Model/Entity/Materiel.php
... | ... | @@ -48,6 +48,7 @@ use Cake\ORM\Entity; |
48 | 48 | * @property int $organisme_id |
49 | 49 | * @property \App\Model\Entity\Organisme $organisme |
50 | 50 | * @property int $site_id |
51 | + * @property int $photo_id | |
51 | 52 | * @property bool $hors_service |
52 | 53 | * @property \App\Model\Entity\Site $site |
53 | 54 | * @property \App\Model\Entity\Document[] $documents | ... | ... |
src/Model/Table/AppTable.php
... | ... | @@ -20,7 +20,7 @@ class AppTable extends Table |
20 | 20 | // autoriser les caracteres spéciaux (pour une PHRASE ou paragraphe) : |
21 | 21 | // check_string PLUS ces symboles ====> & * > < ? % ! : , " ' |
22 | 22 | public function check_string_with_some_special_cars($check) { |
23 | - return (bool) preg_match('/^['.$this->string.'?%!:,&*><\-\="'.']*$/', $check); | |
23 | + return (bool) preg_match('/^['.$this->string.'?%!:,&#*><\-\="'.']*$/', $check); | |
24 | 24 | } |
25 | 25 | |
26 | 26 | public function check_mail($check) { | ... | ... |
src/Model/Table/ConfigurationsTable.php
... | ... | @@ -80,7 +80,7 @@ class ConfigurationsTable extends AppTable |
80 | 80 | ->notEmpty('labNameShort'); |
81 | 81 | |
82 | 82 | $validator |
83 | - ->allowEmpty('labPresent'); | |
83 | + ->notEmpty('labPresent'); | |
84 | 84 | |
85 | 85 | $validator |
86 | 86 | ->allowEmpty('labUmr'); |
... | ... | @@ -136,7 +136,10 @@ class ConfigurationsTable extends AppTable |
136 | 136 | ->allowEmpty('test'); |
137 | 137 | |
138 | 138 | $validator |
139 | - ->allowEmpty('prix_inventaire_administratif'); | |
139 | + ->notEmpty('prix_inventaire_administratif'); | |
140 | + | |
141 | + $validator | |
142 | + ->notEmpty('taille_max_doc'); | |
140 | 143 | |
141 | 144 | $validator |
142 | 145 | ->allowEmpty('date_commande_facultative'); | ... | ... |
src/Model/Table/DocumentsTable.php
... | ... | @@ -6,6 +6,7 @@ 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\TableRegistry; | |
9 | 10 | |
10 | 11 | /** |
11 | 12 | * Documents Model |
... | ... | @@ -73,6 +74,9 @@ class DocumentsTable extends AppTable |
73 | 74 | |
74 | 75 | $validator |
75 | 76 | ->allowEmpty('materiel_id'); |
77 | + | |
78 | + $validator | |
79 | + ->allowEmpty('photo'); | |
76 | 80 | |
77 | 81 | $validator |
78 | 82 | ->allowEmpty('suivi_id'); |
... | ... | @@ -90,10 +94,13 @@ class DocumentsTable extends AppTable |
90 | 94 | */ |
91 | 95 | public function buildRules(RulesChecker $rules) |
92 | 96 | { |
97 | + $config = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first(); | |
98 | + | |
93 | 99 | $checkSizeDoc= function($entity) { |
100 | + $config = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first(); | |
94 | 101 | $size = $entity->get('chemin_file')['size']; |
95 | 102 | if(isset($size)) { |
96 | - if($size > 1000000) { | |
103 | + if($size > $config->taille_max_doc) { | |
97 | 104 | return false; |
98 | 105 | } else { |
99 | 106 | return true; |
... | ... | @@ -104,11 +111,28 @@ class DocumentsTable extends AppTable |
104 | 111 | |
105 | 112 | }; |
106 | 113 | |
114 | + $checkPhoto= function($entity) { | |
115 | + if($entity->get('photo')) { | |
116 | + $extension = strtolower(pathinfo($entity->get('chemin_file')['name'] , PATHINFO_EXTENSION)); | |
117 | + return in_array($extension, ['png', 'jpg', 'jpeg']); | |
118 | + } | |
119 | + else { | |
120 | + return true; | |
121 | + } | |
122 | + }; | |
123 | + | |
124 | + | |
107 | 125 | $rules->add($checkSizeDoc, [ |
108 | 126 | 'errorField' => 'chemin_file', |
109 | - 'message' => 'Le fichier ne peut pas avoir une taille supérieur à 8mo.' | |
127 | + 'message' => 'Le fichier ne peut pas avoir une taille supérieur à '.substr($config->taille_max_doc/(1024*1024), 0, 4).' Mo.' | |
110 | 128 | ]); |
111 | 129 | |
130 | + $rules->add($checkPhoto, [ | |
131 | + 'errorField' => 'chemin_file', | |
132 | + 'message' => 'La photo doit etre au format png, jpg (ou jpeg).' | |
133 | + ]); | |
134 | + | |
135 | + | |
112 | 136 | return $rules; |
113 | 137 | } |
114 | 138 | |
... | ... | @@ -144,7 +168,12 @@ class DocumentsTable extends AppTable |
144 | 168 | $file = $entity->get('chemin_file'); |
145 | 169 | if(!empty($file['tmp_name'])) { |
146 | 170 | $extension = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION)); |
147 | - move_uploaded_file($file['tmp_name'], 'files'.DS.$entity->get('id').'.'.$extension); | |
171 | + if($entity->get('photo')) { | |
172 | + move_uploaded_file($file['tmp_name'], 'img'.DS.'photos'.DS.$entity->get('id').'.'.$extension); | |
173 | + } | |
174 | + else { | |
175 | + move_uploaded_file($file['tmp_name'], 'files'.DS.$entity->get('id').'.'.$extension); | |
176 | + } | |
148 | 177 | } |
149 | 178 | |
150 | 179 | } |
... | ... | @@ -154,8 +183,12 @@ class DocumentsTable extends AppTable |
154 | 183 | **/ |
155 | 184 | public function afterDelete($event, $entity, $options) { |
156 | 185 | $nomFichier = $entity->get('id').'.'.$entity->get('type_doc'); |
157 | - unlink('files'.DS.$nomFichier); | |
158 | - | |
186 | + if($entity->get('photo')) { | |
187 | + unlink('img'.DS.'photos'.DS.$nomFichier); | |
188 | + } | |
189 | + else { | |
190 | + unlink('files'.DS.$nomFichier); | |
191 | + } | |
159 | 192 | } |
160 | 193 | |
161 | 194 | } | ... | ... |
src/Model/Table/MaterielsTable.php
src/Template/Configurations/edit.ctp
... | ... | @@ -5,48 +5,83 @@ |
5 | 5 | |
6 | 6 | <fieldset> |
7 | 7 | <?php |
8 | + echo '<h3 id="t_informations" style="cursor: pointer;">'; | |
9 | + echo '<i class="icon-chevron-down" style="font-size: 14px;" id="i_informations"></i>'; | |
10 | + echo '<span style="text-decoration: underline;">Modes</span>'; | |
11 | + echo '</h3>'; | |
12 | + echo '<div id="informations" style="margin-bottom: 20px;">'; | |
13 | + echo $this->Form->input('mode_install'); | |
14 | + echo $this->Form->input('mode_debug'); | |
15 | + echo '</div>'; | |
16 | + | |
17 | + | |
18 | + echo '<h3 id="t_informations_admin" style="cursor: pointer;">'; | |
19 | + echo '<i class="icon-chevron-down" style="font-size: 14px;" id="i_informations_admin"></i>'; | |
20 | + echo '<span style="text-decoration: underline;">Laboratoire</span>'; | |
21 | + echo '</h3>'; | |
22 | + echo '<div id="informations_admin" style="margin-bottom: 20px;">'; | |
23 | + echo $this->Form->input('labName', ['label' => 'Nom complet du Labo']); | |
24 | + echo $this->Form->input('labNameShort', ['label' => 'Nom court du Labo']); | |
25 | + echo $this->Form->input('labPresent', ['label' => 'Liaison présentation nom du Labo']); | |
26 | + echo $this->Form->input('labUmr', ['label' => 'UMR du Labo']); | |
27 | + echo '</div>'; | |
8 | 28 | |
29 | + | |
30 | + echo '<h3 id="t_suivis" style="cursor: pointer;">'; | |
31 | + echo '<i class="icon-chevron-down" style="font-size: 14px;" id="i_suivis"></i>'; | |
32 | + echo '<span style="text-decoration: underline;">Divers</span>'; | |
33 | + echo '</h3>'; | |
34 | + echo '<div id="suivis" style="margin-bottom: 20px;">'; | |
35 | + echo $this->Form->input('hasPrinter', ['label' => 'Imprimante disponible']); | |
36 | + | |
37 | + echo $this->Form->input('numero_labo_sans_annee', ['label' => 'Numero labo sans année']); | |
38 | + echo $this->Form->input('date_commande_facultative', ['label' => 'Champ date commande non obligatoire']); | |
39 | + | |
40 | + echo $this->Form->input('prix_inventaire_administratif', ['label' => 'Seuil (prix) Matériel administratif']); | |
41 | + echo $this->Form->input('taille_max_doc', ['label' => 'Taille max documents (octets)']); | |
42 | + | |
43 | + echo $this->Form->input('nom_groupe_thematique', ['label' => 'Label groupe thématique']); | |
44 | + echo $this->Form->input('nom_groupe_metier', ['label' => 'Label groupe métier']); | |
45 | + | |
46 | + | |
47 | + echo '</div>'; | |
48 | + | |
49 | + | |
50 | + echo '<h3 id="t_emprunts" style="cursor: pointer;">'; | |
51 | + echo '<i class="icon-chevron-down" style="font-size: 14px;" id="i_emprunts"></i>'; | |
52 | + echo '<span style="text-decoration: underline;">Emails</span>'; | |
53 | + echo '</h3>'; | |
54 | + echo '<div id="emprunts" style="margin-bottom: 20px;">'; | |
55 | + echo $this->Form->input('envoi_mail_management_dev', ['label' => 'Ne pas envoyer les mails de management en local']); | |
56 | + echo $this->Form->input('sender_mail', ['label' => 'Attribut "sender" (mail)']); | |
57 | + echo $this->Form->input('emailGuest1', ['label' => 'Mail guest 1']); | |
58 | + echo $this->Form->input('emailGuest2', ['label' => 'Mail guest 2']); | |
59 | + echo $this->Form->input('emailGuest3', ['label' => 'Mail guest 3']); | |
60 | + echo $this->Form->input('emailGuest4', ['label' => 'Mail guest 4']); | |
61 | + echo $this->Form->input('emailGuest5', ['label' => 'Mail guest 5']); | |
62 | + echo $this->Form->input('emailGuest6', ['label' => 'Mail guest 6']); | |
63 | + echo $this->Form->input('emailGuest7', ['label' => 'Mail guest 7']); | |
64 | + echo $this->Form->input('emailGuest8', ['label' => 'Mail guest 8']); | |
65 | + echo $this->Form->input('emailGuest9', ['label' => 'Mail guest 9']); | |
66 | + echo $this->Form->input('emailGuest10', ['label' => 'Mail guest 10']); | |
67 | + echo '</div>'; | |
68 | + | |
69 | + | |
70 | + echo '<h3 id="t_fichiers" style="cursor: pointer;">'; | |
71 | + echo '<i class="icon-chevron-down" style="font-size: 14px;" id="i_fichiers"></i>'; | |
72 | + echo '<span style="text-decoration: underline;">LDAP</span>'; | |
73 | + echo '</h3>'; | |
74 | + echo '<div id="fichiers" style="margin-bottom: 20px;">'; | |
75 | + echo $this->Form->input('use_ldap', ['label' => 'Utilisation du LDAP', 'onchange' => 'display_ldap();']); | |
76 | + echo '<div id="ldap" style="border-top: 1px solid #CCC; border-bottom: 1px solid #CCC; margin-bottom: 0; background: #EEE; '.$disp.'">'; | |
77 | + echo $this->Form->input('host_ldap', ['label' => 'Host du LDAP']); | |
78 | + echo $this->Form->input('port_ldap', ['label' => 'Port du LDAP']); | |
79 | + echo $this->Form->input('authentificationType_ldap', ['label' => 'Type d\'authentification du LDAP']); | |
80 | + echo $this->Form->input('baseDn_ldap', ['label' => 'Base DN du LDAP']); | |
81 | + echo $this->Form->input('filter_ldap', ['label' => 'Filtre du LDAP']); | |
82 | + echo '</div>'; | |
83 | + echo '</div>'; | |
9 | 84 | |
10 | - echo $this->Form->input('mode_install'); | |
11 | - echo $this->Form->input('mode_debug'); | |
12 | - | |
13 | - echo $this->Form->input('hasPrinter', ['label' => 'Imprimante disponible']); | |
14 | - | |
15 | - echo $this->Form->input('labName', ['label' => 'Nom complet du Labo']); | |
16 | - echo $this->Form->input('labNameShort', ['label' => 'Nom court du Labo']); | |
17 | - echo $this->Form->input('labPresent', ['label' => 'Liaison présentation nom du Labo']); | |
18 | - echo $this->Form->input('labUmr', ['label' => 'UMR du Labo']); | |
19 | - | |
20 | - echo $this->Form->input('nom_groupe_thematique', ['label' => 'Label groupe thématique']); | |
21 | - echo $this->Form->input('nom_groupe_metier', ['label' => 'Label groupe métier']); | |
22 | - | |
23 | - echo $this->Form->input('prix_inventaire_administratif', ['label' => 'Seuil (prix) Matériel administratif']); | |
24 | - | |
25 | - | |
26 | - echo $this->Form->input('envoi_mail_management_dev', ['label' => 'Ne pas envoyer les mails de management en local']); | |
27 | - echo $this->Form->input('sender_mail', ['label' => 'Attribut "sender" (mail)']); | |
28 | - echo $this->Form->input('emailGuest1', ['label' => 'Mail guest 1']); | |
29 | - echo $this->Form->input('emailGuest2', ['label' => 'Mail guest 2']); | |
30 | - echo $this->Form->input('emailGuest3', ['label' => 'Mail guest 3']); | |
31 | - echo $this->Form->input('emailGuest4', ['label' => 'Mail guest 4']); | |
32 | - echo $this->Form->input('emailGuest5', ['label' => 'Mail guest 5']); | |
33 | - echo $this->Form->input('emailGuest6', ['label' => 'Mail guest 6']); | |
34 | - echo $this->Form->input('emailGuest7', ['label' => 'Mail guest 7']); | |
35 | - echo $this->Form->input('emailGuest8', ['label' => 'Mail guest 8']); | |
36 | - echo $this->Form->input('emailGuest9', ['label' => 'Mail guest 9']); | |
37 | - echo $this->Form->input('emailGuest10', ['label' => 'Mail guest 10']); | |
38 | - | |
39 | - echo $this->Form->input('numero_labo_sans_annee', ['label' => 'Numero labo sans année']); | |
40 | - echo $this->Form->input('date_commande_facultative', ['label' => 'Champ date commande non obligatoire']); | |
41 | - | |
42 | - echo $this->Form->input('use_ldap', ['label' => 'Utilisation du LDAP', 'onchange' => 'display_ldap();']); | |
43 | - echo '<div id="ldap" style="border-top: 1px solid #CCC; border-bottom: 1px solid #CCC; margin-bottom: 0; background: #EEE; '.$disp.'">'; | |
44 | - echo $this->Form->input('host_ldap', ['label' => 'Host du LDAP']); | |
45 | - echo $this->Form->input('port_ldap', ['label' => 'Port du LDAP']); | |
46 | - echo $this->Form->input('authentificationType_ldap', ['label' => 'Type d\'authentification du LDAP']); | |
47 | - echo $this->Form->input('baseDn_ldap', ['label' => 'Base DN du LDAP']); | |
48 | - echo $this->Form->input('filter_ldap', ['label' => 'Filtre du LDAP']); | |
49 | - echo '</div>'; | |
50 | 85 | ?> |
51 | 86 | </fieldset> |
52 | 87 | <?= $this->Form->submit(__('Valider')) ?> | ... | ... |
src/Template/Configurations/view.ctp
... | ... | @@ -86,6 +86,7 @@ |
86 | 86 | echo '<tr><th style="width: 250px;"></th><th></th></tr>'; |
87 | 87 | $displayElement(__('Imprimante disponible'), $print); |
88 | 88 | $displayElement(__('Seuil (prix) Matériel administratif'), h($configurationObj->prix_inventaire_administratif)); |
89 | + $displayElement(__('Taille max documents (octets)'), substr($configurationObj->taille_max_doc/(1024*1024), 0, 4).' Mo'); | |
89 | 90 | $displayElement(__('Numero labo sans année'), $numLab); |
90 | 91 | $displayElement(__('Champ date commande non obligatoire'), $dateObl); |
91 | 92 | $displayElement(__('Label groupe thématique'), h($configurationObj->nom_groupe_thematique)); | ... | ... |
src/Template/Documents/add.ctp
... | ... | @@ -2,8 +2,12 @@ |
2 | 2 | <div class="documents form"> |
3 | 3 | <?= $this->Form->create($document, ['type' => 'file']) ?> |
4 | 4 | <fieldset> |
5 | - <h2><i class="icon-plus"></i> Lier un document</h2> | |
6 | - <?php | |
5 | + <?php | |
6 | + if(isset($photo)) { | |
7 | + echo '<h2><i class="icon-plus"></i> Lier une photo</h2>'; | |
8 | + }else { | |
9 | + echo '<h2><i class="icon-plus"></i> Lier un document</h2>'; | |
10 | + } | |
7 | 11 | if(isset($materiel)) { |
8 | 12 | echo $this->Form->input('materiel_id', ['label' => 'N° materiel labo', 'options' => $materiel, 'default' => $this->passedArgs[0], 'readonly' => true]); |
9 | 13 | } |
... | ... | @@ -13,9 +17,17 @@ |
13 | 17 | |
14 | 18 | echo $this->Form->input('nom'); |
15 | 19 | echo $this->Form->input('type_document_id', ['label' => 'Type', 'options' => $typesD, 'default' => 1]); |
16 | - | |
17 | 20 | echo $this->Form->input('description'); |
18 | - echo $this->Form->input('chemin_file', ['label' => 'Fichier (10 Mo max)', 'type' => 'file']); | |
21 | + echo $this->Form->input('chemin_file', ['label' => 'Fichier ('.substr($configuration->taille_max_doc/(1024*1024), 0, 4).' Mo max)', 'type' => 'file']); | |
22 | + | |
23 | + | |
24 | + if(isset($photo)) { | |
25 | + echo $this->Form->hidden('photo', ['default' => 1]); | |
26 | + } | |
27 | + else { | |
28 | + echo $this->Form->hidden('photo', ['default' => 0]); | |
29 | + } | |
30 | + | |
19 | 31 | |
20 | 32 | |
21 | 33 | ?> | ... | ... |
src/Template/Documents/index.ctp
... | ... | @@ -9,11 +9,18 @@ |
9 | 9 | <th><?= $this->Paginator->sort('suivi_id', 'Suivi') ?></th> |
10 | 10 | <th><?= $this->Paginator->sort('type_document_id', 'Type') ?></th> |
11 | 11 | <th><?= $this->Paginator->sort('type_doc', 'Extension fichier') ?></th> |
12 | + <th><?= $this->Paginator->sort('photo', 'Photo') ?></th> | |
12 | 13 | <th class="actions"><?= __('') ?></th> |
13 | 14 | </tr> |
14 | 15 | </thead> |
15 | 16 | <tbody> |
16 | - <?php foreach ($documents as $document): ?> | |
17 | + <?php foreach ($documents as $document): | |
18 | + if($document->photo) { | |
19 | + $p = 'Oui'; | |
20 | + } else { | |
21 | + $p = ''; | |
22 | + } | |
23 | + ?> | |
17 | 24 | <tr> |
18 | 25 | <td class="smallText"><?= $this->Html->link($document->nom, ['action' => 'view', $document->id]) ?></td> |
19 | 26 | |
... | ... | @@ -27,14 +34,21 @@ |
27 | 34 | |
28 | 35 | <td class="smallText"><?= $document->has('type_document') ? h($document->type_document->nom) : '' ?></td> |
29 | 36 | <td class="smallText"><?= h($document->type_doc) ?></td> |
37 | + <td class="smallText"><?= $p ?></td> | |
30 | 38 | |
31 | 39 | <td class="actions" style="padding: 6px 0;"> |
32 | 40 | <?= $this->Html->link(__('<i class="icon-eye-open"></i>'), ['action' => 'view', $document->id], ['title' => 'Visualiser', 'style' => 'margin: 0 2px', 'escape' => false ]) ?> |
33 | - <?= $this->Form->postLink(__('<i class="icon-download"></i>'), '/webroot/files/'.$document->id.'.'.$document->type_doc, ['title' => 'Télécharger', 'style' => 'margin: 0 2px', 'escape' => false ]) ?> | |
41 | + <?php | |
42 | + if($document->photo) { | |
43 | + echo $this->Form->postLink(__('<i class="icon-download"></i>'), '/webroot/img/photos/'.$document->id.'.'.$document->type_doc, ['title' => 'Télécharger', 'style' => 'margin: 0 2px', 'escape' => false ]); | |
44 | + }else { | |
45 | + echo $this->Form->postLink(__('<i class="icon-download"></i>'), '/webroot/files/'.$document->id.'.'.$document->type_doc, ['title' => 'Télécharger', 'style' => 'margin: 0 2px', 'escape' => false ]); | |
46 | + } | |
47 | + ?> | |
34 | 48 | <?= $this->Form->postLink(__('<i class="icon-trash"></i>'), ['action' => 'delete', $document->id], ['title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $document->id)]) ?> |
35 | 49 | </td> |
36 | 50 | </tr> |
37 | - <?php endforeach; ?> | |
51 | + <?php endforeach; ?> | |
38 | 52 | </tbody> |
39 | 53 | </table> |
40 | 54 | ... | ... |
src/Template/Documents/view.ctp
... | ... | @@ -20,7 +20,13 @@ |
20 | 20 | $displayElement(__('Description'), h($document->description)); |
21 | 21 | $displayElement(__('Extension fichier'), h($document->type_doc)); |
22 | 22 | |
23 | - echo '<tr><td><strong>Fichier</strong></td><td><a href="'.$this->request->webroot.'webroot/files/'.$document->id.'.'.$document->type_doc.'">Télécharger fichier</a></td></tr>'; | |
23 | + | |
24 | + if($document->photo) { | |
25 | + echo '<tr><td><strong>Fichier</strong></td><td><a href="'.$this->request->webroot.'webroot/img/photos/'.$document->id.'.'.$document->type_doc.'">Télécharger fichier</a></td></tr>'; | |
26 | + }else { | |
27 | + echo '<tr><td><strong>Fichier</strong></td><td><a href="'.$this->request->webroot.'webroot/files/'.$document->id.'.'.$document->type_doc.'">Télécharger fichier</a></td></tr>'; | |
28 | + } | |
29 | + | |
24 | 30 | |
25 | 31 | |
26 | 32 | ... | ... |
src/Template/Layout/default.ctp
... | ... | @@ -94,7 +94,7 @@ $cakeDescription = 'Labinvent 2'; |
94 | 94 | </i></td> |
95 | 95 | <td id="version"> |
96 | 96 | <!-- VERSION M.m.f.b (version (M)ajeure, version (m)ineure, numero de nouvelle (f)onctionnalite, numero de (b)ugfix) --> |
97 | - <font color="black">VERSION 2.5.0.0 (27/06/2016)</font> | |
97 | + <font color="black">VERSION 2.5.1.0 (28/06/2016)</font> | |
98 | 98 | </td> |
99 | 99 | </tr> |
100 | 100 | </table> | ... | ... |
src/Template/Materiels/view.ctp
1 | 1 | |
2 | 2 | <div class="materiels view"> |
3 | 3 | |
4 | - <h2> | |
5 | - <?php if (h($materiel->status) == 'ARCHIVED') echo '<i class="icon-inbox"></i> '; | |
6 | - $panne = ''; | |
7 | - if(h($materiel->hors_service)) { | |
8 | - $panne = ' (HORS SERVICE)'; | |
9 | - } | |
10 | - ?> | |
4 | + <h2> | |
5 | + <?php | |
6 | + | |
7 | +if (h ( $materiel->status ) == 'ARCHIVED') | |
8 | + echo '<i class="icon-inbox"></i> '; | |
9 | + $panne = ''; | |
10 | + if (h ( $materiel->hors_service )) { | |
11 | + $panne = ' (HORS SERVICE)'; | |
12 | + } | |
13 | + ?> | |
11 | 14 | |
12 | 15 | <?= h($materiel->designation).$panne?> |
13 | 16 | <span style="font-size: 70%; color: grey;"> |
14 | - <?= h($materiel->numero_laboratoire) ?> | |
17 | + <?= h($materiel->numero_laboratoire)?> | |
15 | 18 | <?php if (h($materiel->status) == 'ARCHIVED') echo ' (Archivé)'; ?> |
16 | 19 | </span> |
17 | - <?php | |
18 | - //Url transformé en QrCode | |
19 | - $this->request->session()->write("qrUrl", $this->request->env('SERVER_NAME').$this->request->env('REQUEST_URI')); | |
20 | - | |
21 | - $this->requestAction('/QrCodes/creer/'); | |
22 | - echo $this->Html->image('qrcodes/'.$this->request->session()->read("filename"), [ | |
23 | - 'alt' => 'QrCode : '.$materiel->numero_laboratoire, | |
24 | - 'style' => 'float: right']); | |
25 | - | |
26 | - ?> | |
27 | - </h2> | |
28 | - | |
29 | - <div class="actions" style="margin-bottom: 20px; width: 100%; float: none; padding: 10px 0;"> | |
30 | - <?php | |
31 | - if (in_array($materiel->status, ['CREATED', 'VALIDATED'])) { | |
32 | - if(($role == 'Utilisateur' && (in_array($username, [$materiel->nom_createur, $materiel->nom_responsable]))) || (in_array($role, ['Administration', 'Administration Plus', 'Super Administrateur'])) || ($role == 'Responsable' && ($materiel->groupes_metier_id == $userConnected->groupes_metier_id || $materiel->groupes_thematique_id == $userConnected->groupe_thematique_id))) { | |
33 | - echo $this->Html->link(__('<i class="icon-pencil"></i> Editer ce matériel'), | |
34 | - ['action' => 'edit', $materiel->id], | |
35 | - ['escape' => false, | |
36 | - 'onclick' => 'return true;', | |
37 | - 'style' => 'margin-right: 10px' | |
38 | - ]); | |
39 | - } | |
40 | - }else { | |
41 | - if(in_array($role, ['Administration Plus', 'Super Administrateur'])) { | |
42 | - echo $this->Html->link(__('<i class="icon-pencil"></i> Editer ce matériel'), | |
43 | - ['action' => 'edit', $materiel->id], | |
44 | - ['escape' => false, | |
45 | - 'onclick' => 'return true;', | |
46 | - 'style' => 'margin-right: 10px' | |
47 | - ]); | |
48 | - } | |
49 | - } | |
50 | - | |
51 | - if($materiel->status == 'VALIDATED') { | |
52 | - // BOUTON NOUVEAU SUIVI | |
53 | - echo $this->Html->link('<i class="icon-plus"></i> Nouv. Suivi', | |
54 | - ['controller' => 'suivis', | |
55 | - 'action' => 'add', | |
56 | - $materiel->id], | |
57 | - ['title' => 'Faire un nouveau suivi de ce matériel', | |
58 | - 'style' => 'margin-right: 10px', | |
59 | - 'escape' => false] | |
60 | - ); // End link | |
61 | - | |
62 | - // BOUTON NOUVEL EMPRUNT | |
63 | - echo $this->Html->link('<i class="icon-plus"></i> Nouv. Emprunt', | |
64 | - ['controller' => 'emprunts', | |
65 | - 'action' => 'add', | |
66 | - $materiel->id], | |
67 | - ['title' => 'Faire un nouvel emprunt de ce matériel', | |
68 | - 'style' => 'margin-right: 10px', | |
69 | - 'escape' => false] | |
70 | - ); // End link | |
71 | - | |
72 | - | |
20 | + </h2> | |
21 | + </br> | |
22 | + <div style="text-align: center;"> | |
23 | + <?php | |
24 | + | |
25 | + if (isset ( $imgMateriel )) { | |
26 | + echo $this->Html->image ( 'photos/' . $imgMateriel, [ | |
27 | + 'alt' => 'Photo matériel', | |
28 | + 'style' => 'max-width: 300px; text-align: center;' | |
29 | + ] ); | |
30 | + } | |
31 | + | |
32 | + // Url transformé en QrCode | |
33 | + $this->request->session ()->write ( "qrUrl", $this->request->env ( 'SERVER_NAME' ) . $this->request->env ( 'REQUEST_URI' ) ); | |
34 | + | |
35 | + $this->requestAction ( '/QrCodes/creer/' ); | |
36 | + echo $this->Html->image ( 'qrcodes/' . $this->request->session ()->read ( "filename" ), [ | |
37 | + 'alt' => 'QrCode : ' . $materiel->numero_laboratoire, | |
38 | + 'style' => 'float: right' | |
39 | + ] ); | |
40 | + echo '</div>'; | |
41 | + ?> | |
42 | + </br> | |
73 | 43 | |
74 | - } | |
75 | - | |
76 | - echo $this->Html->link('<i class="icon-file"></i> Lier un Doc.', | |
77 | - ['controller' => 'documents', | |
78 | - 'action' => 'add', | |
79 | - $materiel->id, 'mat'], | |
80 | - ['title' => 'Attacher un Doc. à ce matériel', | |
81 | - 'style' => 'margin-right: 10px', | |
82 | - 'escape' => false] | |
83 | - ); | |
84 | - | |
85 | - | |
86 | - if(in_array($role, ['Administration', 'Administration Plus', 'Super Administrateur'])) { | |
87 | - if (($materiel->status == 'VALIDATED') || ($materiel->status == 'CREATED')) { | |
88 | - echo $this->Html->link('<i class="icon-file"></i> Doc. admission', | |
89 | - ['controller' => 'documents', 'action' => 'admission', $materiel->numero_laboratoire], | |
90 | - ['title' => 'Voir le document d\'admission', 'style' => 'margin-right: 10px', 'escape' => false]); | |
91 | - } | |
92 | - // Doc sortie (admin only) | |
93 | - else if (($materiel->status == 'ARCHIVED') || ($materiel->status == 'TOBEARCHIVED')) { | |
94 | - echo $this->Html->link('<i class="icon-file"></i> Doc. sortie', | |
95 | - ['controller' => 'documents', 'action' => 'sortie', $materiel->numero_laboratoire], | |
96 | - ['title' => 'Voir le document de sortie', 'style' => 'margin-right: 10px', 'escape' => false]); | |
97 | - } | |
98 | - } | |
99 | - | |
100 | - if(in_array($role, ['Administration', 'Administration Plus', 'Super Administrateur']) || ($role == 'Responsable' && ($materiel->groupes_metier_id == $userConnected->groupes_metier_id || $materiel->groupes_thematique_id == $userConnected->groupe_thematique_id))) { | |
101 | - // 2) Bouton de changement de statut : Valider, Demander archivage, ou Archiver | |
102 | - switch ($materiel->status) { | |
103 | - case "CREATED": | |
104 | - echo $this->Html->link('<i class="icon-ok-sign"></i> Valider', | |
105 | - ['action' => 'statusValidated', $materiel->id, 'view'], | |
106 | - ['title' => 'Valider le matériel', 'style' => 'margin-right: 10px', 'escape' => false]); | |
107 | - break; | |
108 | - | |
109 | - case "VALIDATED": | |
110 | - echo $this->Html->link('<i class="icon-ok-sign"></i> Demander sortie', | |
111 | - ['action' => 'statusToBeArchived', $materiel->id, 'view'], | |
112 | - ['title' => 'Demander la sortie de l\'inventaire', 'style' => 'margin-right: 10px', 'escape' => false]); | |
113 | - break; | |
114 | - | |
115 | - case "TOBEARCHIVED": | |
116 | - if($role != 'Responsable'&& $role != 'Super Administrateur') { | |
117 | - echo $this->Html->link('<i class="icon-ok-sign"></i> Sortie inventaire', | |
118 | - ['action' => 'statusArchived', $materiel->id, 'view'], | |
119 | - ['title' => 'Sortir définitivement de l\'inventaire', 'style' => 'margin-right: 10px', 'escape' => false, | |
120 | - 'confirm' => 'Êtes-vous sur de bien vouloir archiver ' . $materiel->designation . ' ?']); | |
121 | - } | |
122 | - break; | |
123 | - | |
124 | - } // switch | |
125 | - } | |
126 | - | |
127 | - echo $this->Html->link('<i class="icon-pencil"></i> Copier ce matériel', | |
128 | - ['controller' => 'materiels', | |
129 | - 'action' => 'add', $materiel->id], | |
130 | - ['title' => 'Copier ce matériel', | |
131 | - 'style' => 'margin-right: 10px; margin-top: 10px; display: inline-block', | |
132 | - 'escape' => false]); | |
133 | - | |
134 | - | |
135 | - echo $this->Html->link('<i class="icon-file"></i> Fiche matériel', | |
136 | - ['controller' => 'documents', 'action' => 'ficheMateriel', $materiel->numero_laboratoire], | |
137 | - ['title' => 'Voir la fiche du materiel', 'style' => 'margin-right: 10px', 'escape' => false]); | |
138 | - | |
139 | - // BOUTON ETIQUETTE POSEE | |
140 | - if ($configuration->hasPrinter && in_array($role, ['Administration', 'Administration Plus', 'Super Administrateur'])) { | |
141 | - echo '<div class="actions" style="margin-bottom: 20px; width: 100%; float: none; padding: 10px 0;">'; | |
142 | - | |
143 | - $action = 'Impr. ruban'; | |
144 | - echo $this->Html->link('<i class="icon-print"></i> '.$action, | |
145 | - ['action' => 'printLabelRuban', h($materiel->id), 'view'], | |
146 | - ['title' => 'Imprimer sur un ruban 12mm', | |
147 | - 'style' => 'margin-right: 10px', | |
148 | - 'escape' => false, | |
149 | - 'onclick' => 'return true;' | |
150 | - ]); // End link | |
151 | - | |
152 | - | |
153 | - echo $this->Html->link( | |
154 | - '<i class="icon-file"></i> '. | |
155 | - (h($materiel->etiquette) ? "Etiquette NON posée sur le matériel" : "Etiquette posée sur le matériel"), | |
156 | - ['controller' => 'materiels', | |
157 | - 'action' => h($materiel->etiquette) ?'setLabelIsNotPlaced':'setLabelIsPlaced', h($materiel->id), 'view'], | |
158 | - ['title' => h($materiel->etiquette) ? | |
159 | - "En cliquant sur ce bouton, vous déclarez que l'étiquette n'a PAS été posée sur le matériel": | |
160 | - "En cliquant sur ce bouton, vous certifiez que l'étiquette a bien été posée sur le matériel", | |
161 | - 'style' => 'margin-left: 0px', | |
162 | - 'escape' => false] | |
163 | - ); // End link | |
164 | - | |
165 | - | |
166 | - echo '</div>'; | |
167 | - } | |
168 | - | |
169 | - | |
170 | - ?> | |
44 | + <div class="actions" | |
45 | + style="margin-bottom: 20px; width: 100%; float: none; padding: 10px 0;"> | |
46 | + <?php | |
47 | + if (in_array ( $materiel->status, [ | |
48 | + 'CREATED', | |
49 | + 'VALIDATED' | |
50 | + ] )) { | |
51 | + if (($role == 'Utilisateur' && (in_array ( $username, [ | |
52 | + $materiel->nom_createur, | |
53 | + $materiel->nom_responsable | |
54 | + ] ))) || (in_array ( $role, [ | |
55 | + 'Administration', | |
56 | + 'Administration Plus', | |
57 | + 'Super Administrateur' | |
58 | + ] )) || ($role == 'Responsable' && ($materiel->groupes_metier_id == $userConnected->groupes_metier_id || $materiel->groupes_thematique_id == $userConnected->groupe_thematique_id))) { | |
59 | + echo $this->Html->link ( __ ( '<i class="icon-pencil"></i> Editer ce matériel' ), [ | |
60 | + 'action' => 'edit', | |
61 | + $materiel->id | |
62 | + ], [ | |
63 | + 'escape' => false, | |
64 | + 'onclick' => 'return true;', | |
65 | + 'style' => 'margin-right: 10px' | |
66 | + ] ); | |
67 | + } | |
68 | + } else { | |
69 | + if (in_array ( $role, [ | |
70 | + 'Administration Plus', | |
71 | + 'Super Administrateur' | |
72 | + ] )) { | |
73 | + echo $this->Html->link ( __ ( '<i class="icon-pencil"></i> Editer ce matériel' ), [ | |
74 | + 'action' => 'edit', | |
75 | + $materiel->id | |
76 | + ], [ | |
77 | + 'escape' => false, | |
78 | + 'onclick' => 'return true;', | |
79 | + 'style' => 'margin-right: 10px' | |
80 | + ] ); | |
81 | + } | |
82 | + } | |
83 | + | |
84 | + if ($materiel->status == 'VALIDATED') { | |
85 | + // BOUTON NOUVEAU SUIVI | |
86 | + echo $this->Html->link ( '<i class="icon-plus"></i> Nouv. Suivi', [ | |
87 | + 'controller' => 'suivis', | |
88 | + 'action' => 'add', | |
89 | + $materiel->id | |
90 | + ], [ | |
91 | + 'title' => 'Faire un nouveau suivi de ce matériel', | |
92 | + 'style' => 'margin-right: 10px', | |
93 | + 'escape' => false | |
94 | + ] ); // End link | |
95 | + | |
96 | + // BOUTON NOUVEL EMPRUNT | |
97 | + echo $this->Html->link ( '<i class="icon-plus"></i> Nouv. Emprunt', [ | |
98 | + 'controller' => 'emprunts', | |
99 | + 'action' => 'add', | |
100 | + $materiel->id | |
101 | + ], [ | |
102 | + 'title' => 'Faire un nouvel emprunt de ce matériel', | |
103 | + 'style' => 'margin-right: 10px', | |
104 | + 'escape' => false | |
105 | + ] ); // End link | |
106 | + } | |
107 | + | |
108 | + if (($role == 'Utilisateur' && (in_array ( $username, [ | |
109 | + $materiel->nom_createur, | |
110 | + $materiel->nom_responsable | |
111 | + ] ))) || (in_array ( $role, [ | |
112 | + 'Administration', | |
113 | + 'Administration Plus', | |
114 | + 'Super Administrateur' | |
115 | + ] )) || ($role == 'Responsable' && ($materiel->groupes_metier_id == $userConnected->groupes_metier_id || $materiel->groupes_thematique_id == $userConnected->groupe_thematique_id))) { | |
116 | + | |
117 | + echo $this->Html->link ( '<i class="icon-file"></i> Lier un Doc.', [ | |
118 | + 'controller' => 'documents', | |
119 | + 'action' => 'add', | |
120 | + $materiel->id, | |
121 | + 'mat' | |
122 | + ], [ | |
123 | + 'title' => 'Attacher un Doc. à ce matériel', | |
124 | + 'style' => 'margin-right: 10px', | |
125 | + 'escape' => false | |
126 | + ] ); | |
127 | + | |
128 | + if ($materiel->photo_id != null) { | |
129 | + echo $this->Html->link ( '<i class="icon-file"></i> Remplacer la photo.', [ | |
130 | + 'controller' => 'documents', | |
131 | + 'action' => 'add', | |
132 | + $materiel->id, | |
133 | + 'mat', | |
134 | + 'photo' | |
135 | + ], [ | |
136 | + 'title' => 'Remplacer la photo de ce matériel', | |
137 | + 'style' => 'margin-right: 10px', | |
138 | + 'escape' => false | |
139 | + ] ); | |
140 | + } else { | |
141 | + echo $this->Html->link ( '<i class="icon-file"></i> Lier une photo.', [ | |
142 | + 'controller' => 'documents', | |
143 | + 'action' => 'add', | |
144 | + $materiel->id, | |
145 | + 'mat', | |
146 | + 'photo' | |
147 | + ], [ | |
148 | + 'title' => 'Attacher une photo à ce matériel', | |
149 | + 'style' => 'margin-right: 10px', | |
150 | + 'escape' => false | |
151 | + ] ); | |
152 | + } | |
153 | + } | |
154 | + | |
155 | + if (in_array ( $role, [ | |
156 | + 'Administration', | |
157 | + 'Administration Plus', | |
158 | + 'Super Administrateur' | |
159 | + ] )) { | |
160 | + if (($materiel->status == 'VALIDATED') || ($materiel->status == 'CREATED')) { | |
161 | + echo $this->Html->link ( '<i class="icon-file"></i> Doc. admission', [ | |
162 | + 'controller' => 'documents', | |
163 | + 'action' => 'admission', | |
164 | + $materiel->numero_laboratoire | |
165 | + ], [ | |
166 | + 'title' => 'Voir le document d\'admission', | |
167 | + 'style' => 'margin-right: 10px', | |
168 | + 'escape' => false | |
169 | + ] ); | |
170 | + } // Doc sortie (admin only) | |
171 | + else if (($materiel->status == 'ARCHIVED') || ($materiel->status == 'TOBEARCHIVED')) { | |
172 | + echo $this->Html->link ( '<i class="icon-file"></i> Doc. sortie', [ | |
173 | + 'controller' => 'documents', | |
174 | + 'action' => 'sortie', | |
175 | + $materiel->numero_laboratoire | |
176 | + ], [ | |
177 | + 'title' => 'Voir le document de sortie', | |
178 | + 'style' => 'margin-right: 10px', | |
179 | + 'escape' => false | |
180 | + ] ); | |
181 | + } | |
182 | + } | |
183 | + | |
184 | + if (in_array ( $role, [ | |
185 | + 'Administration', | |
186 | + 'Administration Plus', | |
187 | + 'Super Administrateur' | |
188 | + ] ) || ($role == 'Responsable' && ($materiel->groupes_metier_id == $userConnected->groupes_metier_id || $materiel->groupes_thematique_id == $userConnected->groupe_thematique_id))) { | |
189 | + // 2) Bouton de changement de statut : Valider, Demander archivage, ou Archiver | |
190 | + switch ($materiel->status) { | |
191 | + case "CREATED" : | |
192 | + echo $this->Html->link ( '<i class="icon-ok-sign"></i> Valider', [ | |
193 | + 'action' => 'statusValidated', | |
194 | + $materiel->id, | |
195 | + 'view' | |
196 | + ], [ | |
197 | + 'title' => 'Valider le matériel', | |
198 | + 'style' => 'margin-right: 10px', | |
199 | + 'escape' => false | |
200 | + ] ); | |
201 | + break; | |
202 | + | |
203 | + case "VALIDATED" : | |
204 | + echo $this->Html->link ( '<i class="icon-ok-sign"></i> Demander sortie', [ | |
205 | + 'action' => 'statusToBeArchived', | |
206 | + $materiel->id, | |
207 | + 'view' | |
208 | + ], [ | |
209 | + 'title' => 'Demander la sortie de l\'inventaire', | |
210 | + 'style' => 'margin-right: 10px', | |
211 | + 'escape' => false | |
212 | + ] ); | |
213 | + break; | |
214 | + | |
215 | + case "TOBEARCHIVED" : | |
216 | + if ($role != 'Responsable' && $role != 'Super Administrateur') { | |
217 | + echo $this->Html->link ( '<i class="icon-ok-sign"></i> Sortie inventaire', [ | |
218 | + 'action' => 'statusArchived', | |
219 | + $materiel->id, | |
220 | + 'view' | |
221 | + ], [ | |
222 | + 'title' => 'Sortir définitivement de l\'inventaire', | |
223 | + 'style' => 'margin-right: 10px', | |
224 | + 'escape' => false, | |
225 | + 'confirm' => 'Êtes-vous sur de bien vouloir archiver ' . $materiel->designation . ' ?' | |
226 | + ] ); | |
227 | + } | |
228 | + break; | |
229 | + } // switch | |
230 | + } | |
231 | + | |
232 | + echo $this->Html->link ( '<i class="icon-pencil"></i> Copier ce matériel', [ | |
233 | + 'controller' => 'materiels', | |
234 | + 'action' => 'add', | |
235 | + $materiel->id | |
236 | + ], [ | |
237 | + 'title' => 'Copier ce matériel', | |
238 | + 'style' => 'margin-right: 10px; margin-top: 10px; display: inline-block', | |
239 | + 'escape' => false | |
240 | + ] ); | |
241 | + | |
242 | + echo $this->Html->link ( '<i class="icon-file"></i> Fiche matériel', [ | |
243 | + 'controller' => 'documents', | |
244 | + 'action' => 'ficheMateriel', | |
245 | + $materiel->numero_laboratoire | |
246 | + ], [ | |
247 | + 'title' => 'Voir la fiche du materiel', | |
248 | + 'style' => 'margin-right: 10px', | |
249 | + 'escape' => false | |
250 | + ] ); | |
251 | + | |
252 | + // BOUTON ETIQUETTE POSEE | |
253 | + if ($configuration->hasPrinter && in_array ( $role, [ | |
254 | + 'Administration', | |
255 | + 'Administration Plus', | |
256 | + 'Super Administrateur' | |
257 | + ] )) { | |
258 | + echo '<div class="actions" style="margin-bottom: 20px; width: 100%; float: none; padding: 10px 0;">'; | |
259 | + | |
260 | + $action = 'Impr. ruban'; | |
261 | + echo $this->Html->link ( '<i class="icon-print"></i> ' . $action, [ | |
262 | + 'action' => 'printLabelRuban', | |
263 | + h ( $materiel->id ), | |
264 | + 'view' | |
265 | + ], [ | |
266 | + 'title' => 'Imprimer sur un ruban 12mm', | |
267 | + 'style' => 'margin-right: 10px', | |
268 | + 'escape' => false, | |
269 | + 'onclick' => 'return true;' | |
270 | + ] ); // End link | |
271 | + | |
272 | + echo $this->Html->link ( '<i class="icon-file"></i> ' . (h ( $materiel->etiquette ) ? "Etiquette NON posée sur le matériel" : "Etiquette posée sur le matériel"), [ | |
273 | + 'controller' => 'materiels', | |
274 | + 'action' => h ( $materiel->etiquette ) ? 'setLabelIsNotPlaced' : 'setLabelIsPlaced', | |
275 | + h ( $materiel->id ), | |
276 | + 'view' | |
277 | + ], [ | |
278 | + 'title' => h ( $materiel->etiquette ) ? "En cliquant sur ce bouton, vous déclarez que l'étiquette n'a PAS été posée sur le matériel" : "En cliquant sur ce bouton, vous certifiez que l'étiquette a bien été posée sur le matériel", | |
279 | + 'style' => 'margin-left: 0px', | |
280 | + 'escape' => false | |
281 | + ] ); // End link | |
282 | + | |
283 | + echo '</div>'; | |
284 | + } | |
285 | + | |
286 | + ?> | |
171 | 287 | </div> |
172 | - | |
173 | - <h3 id="t_informations" style="cursor: pointer;"> | |
174 | - <i class="icon-chevron-down" style="font-size: 14px;" id="i_informations"></i> | |
175 | - <span style="text-decoration: underline;">Informations</span> | |
176 | - </h3> | |
177 | - <div id="informations" style="margin-bottom: 20px;"> | |
178 | - <table> | |
179 | - <tr><th style="width: 250px;"></th><th></th></tr> | |
180 | - | |
181 | - <?php | |
182 | - $type = ""; | |
183 | - if(h($materiel->materiel_administratif) == 1 && h($materiel->materiel_technique) == 1) { | |
184 | - $type = 'Administratif et technique'; | |
185 | - } | |
186 | - else if (h($materiel->materiel_administratif) == 1) { | |
187 | - $type = 'Administratif'; | |
188 | - } | |
189 | - else if (h($materiel->materiel_technique) == 1) { | |
190 | - $type = 'Technique'; | |
191 | - } | |
192 | - | |
193 | - $displayElement(__('Description'), h($materiel->description)); | |
194 | - $displayElement(__('Materiel inventorié'), $type); | |
195 | - $displayElement(__('Organisme'), $materiel->has('organisme') ? h($materiel->organisme->nom) : ''); | |
196 | - $displayElement(__('Domaine'), $materiel->has('sur_category') ? h($materiel->sur_category->nom) : ''); | |
197 | - $displayElement(__('Catégorie'), $materiel->has('category') ? h($materiel->category->nom) : ''); | |
198 | - $displayElement(__('Sous-Catégorie'), $materiel->has('sous_category') ? h($materiel->sous_category->nom) : ''); | |
199 | - | |
200 | - if(h($materiel->etiquette) == 0) { | |
201 | - $etiq="Non"; | |
202 | - }else { | |
203 | - $etiq="Oui"; | |
204 | - } | |
205 | - $displayElement(__('Etiquette posée'), $etiq); | |
206 | - $displayElement(__($configuration->nom_groupe_thematique), $materiel->has('groupes_thematique') ? $this->Html->link($materiel->groupes_thematique->nom, ['controller' => 'GroupesThematiques', 'action' => 'view', $materiel->groupes_thematique->id]) : ''); | |
207 | - $displayElement(__($configuration->nom_groupe_metier), $materiel->has('groupes_metier') ? $this->Html->link($materiel->groupes_metier->nom, ['controller' => 'GroupesMetiers', 'action' => 'view', $materiel->groupes_metier->id]) : ''); | |
208 | - $displayElement(__('Date d\'achat'), h($materiel->date_acquisition)); | |
209 | - | |
210 | - $displayElement(__('Date de reception'), h($materiel->date_reception)); | |
211 | - if(!empty(h($materiel->duree_garntie))) { | |
212 | - $displayElement(__('Duree garantie'), h($materiel->duree_garantie).' '.h($materiel->unite_duree_garantie)); | |
213 | - } | |
214 | - $displayElement(__('Date fin de garantie'), h($materiel->date_fin_garantie)); | |
215 | - | |
216 | - $displayElement(__('Statut'), h($materiel->status)); | |
217 | - if($materiel->status == 'ARCHIVED') { | |
218 | - $displayElement(__('Date d\'archivage'), h($materiel->date_archivage)); | |
219 | - } | |
220 | - $displayElement(__('Prix (HT)'), h($materiel->prix_ht).' €'); | |
221 | - $displayElement(__('Fournisseur'), h($materiel->fournisseur)); | |
222 | - | |
223 | - $displayElement(__('Lieu de stockage'), $materiel->has('site') ? h($materiel->site->nom) : ''); | |
224 | - $displayElement(__('Détail lieu de stockage'), h($materiel->lieu_detail)); | |
225 | - | |
226 | - $displayElement(__('Nom du propriétaire'), $this->Html->link(h($materiel->nom_responsable), 'mailto:'.h($materiel->email_responsable))); | |
227 | - $displayElement(__('N. interne (labo)'), h($materiel->numero_laboratoire)); | |
228 | - | |
229 | - if($role == 'Super Administrateur') { | |
230 | - $displayElement(__('Date création'), h($materiel->created)); | |
231 | - $displayElement(__('Nom du créateur'), h($materiel->nom_createur)); | |
232 | - $displayElement(__('Date modification'), h($materiel->modified)); | |
233 | - $displayElement(__('Nom du modificateur'), h($materiel->nom_modificateur)); | |
234 | - } | |
235 | - | |
236 | - ?> | |
288 | + | |
289 | + <h3 id="t_informations" style="cursor: pointer;"> | |
290 | + <i class="icon-chevron-down" style="font-size: 14px;" | |
291 | + id="i_informations"></i> <span style="text-decoration: underline;">Informations</span> | |
292 | + </h3> | |
293 | + <div id="informations" style="margin-bottom: 20px;"> | |
294 | + <table> | |
295 | + <tr> | |
296 | + <th style="width: 250px;"></th> | |
297 | + <th></th> | |
298 | + </tr> | |
299 | + | |
300 | + <?php | |
301 | + $type = ""; | |
302 | + if (h ( $materiel->materiel_administratif ) == 1 && h ( $materiel->materiel_technique ) == 1) { | |
303 | + $type = 'Administratif et technique'; | |
304 | + } else if (h ( $materiel->materiel_administratif ) == 1) { | |
305 | + $type = 'Administratif'; | |
306 | + } else if (h ( $materiel->materiel_technique ) == 1) { | |
307 | + $type = 'Technique'; | |
308 | + } | |
309 | + | |
310 | + $displayElement ( __ ( 'Description' ), h ( $materiel->description ) ); | |
311 | + $displayElement ( __ ( 'Materiel inventorié' ), $type ); | |
312 | + $displayElement ( __ ( 'Organisme' ), $materiel->has ( 'organisme' ) ? h ( $materiel->organisme->nom ) : '' ); | |
313 | + $displayElement ( __ ( 'Domaine' ), $materiel->has ( 'sur_category' ) ? h ( $materiel->sur_category->nom ) : '' ); | |
314 | + $displayElement ( __ ( 'Catégorie' ), $materiel->has ( 'category' ) ? h ( $materiel->category->nom ) : '' ); | |
315 | + $displayElement ( __ ( 'Sous-Catégorie' ), $materiel->has ( 'sous_category' ) ? h ( $materiel->sous_category->nom ) : '' ); | |
316 | + | |
317 | + if (h ( $materiel->etiquette ) == 0) { | |
318 | + $etiq = "Non"; | |
319 | + } else { | |
320 | + $etiq = "Oui"; | |
321 | + } | |
322 | + $displayElement ( __ ( 'Etiquette posée' ), $etiq ); | |
323 | + $displayElement ( __ ( $configuration->nom_groupe_thematique ), $materiel->has ( 'groupes_thematique' ) ? $this->Html->link ( $materiel->groupes_thematique->nom, [ | |
324 | + 'controller' => 'GroupesThematiques', | |
325 | + 'action' => 'view', | |
326 | + $materiel->groupes_thematique->id | |
327 | + ] ) : '' ); | |
328 | + $displayElement ( __ ( $configuration->nom_groupe_metier ), $materiel->has ( 'groupes_metier' ) ? $this->Html->link ( $materiel->groupes_metier->nom, [ | |
329 | + 'controller' => 'GroupesMetiers', | |
330 | + 'action' => 'view', | |
331 | + $materiel->groupes_metier->id | |
332 | + ] ) : '' ); | |
333 | + $displayElement ( __ ( 'Date d\'achat' ), h ( $materiel->date_acquisition ) ); | |
334 | + | |
335 | + $displayElement ( __ ( 'Date de reception' ), h ( $materiel->date_reception ) ); | |
336 | + if (! empty ( h ( $materiel->duree_garntie ) )) { | |
337 | + $displayElement ( __ ( 'Duree garantie' ), h ( $materiel->duree_garantie ) . ' ' . h ( $materiel->unite_duree_garantie ) ); | |
338 | + } | |
339 | + $displayElement ( __ ( 'Date fin de garantie' ), h ( $materiel->date_fin_garantie ) ); | |
340 | + | |
341 | + $displayElement ( __ ( 'Statut' ), h ( $materiel->status ) ); | |
342 | + if ($materiel->status == 'ARCHIVED') { | |
343 | + $displayElement ( __ ( 'Date d\'archivage' ), h ( $materiel->date_archivage ) ); | |
344 | + } | |
345 | + $displayElement ( __ ( 'Prix (HT)' ), h ( $materiel->prix_ht ) . ' €' ); | |
346 | + $displayElement ( __ ( 'Fournisseur' ), h ( $materiel->fournisseur ) ); | |
347 | + | |
348 | + $displayElement ( __ ( 'Lieu de stockage' ), $materiel->has ( 'site' ) ? h ( $materiel->site->nom ) : '' ); | |
349 | + $displayElement ( __ ( 'Détail lieu de stockage' ), h ( $materiel->lieu_detail ) ); | |
350 | + | |
351 | + $displayElement ( __ ( 'Nom du propriétaire' ), $this->Html->link ( h ( $materiel->nom_responsable ), 'mailto:' . h ( $materiel->email_responsable ) ) ); | |
352 | + $displayElement ( __ ( 'N. interne (labo)' ), h ( $materiel->numero_laboratoire ) ); | |
353 | + | |
354 | + if ($role == 'Super Administrateur') { | |
355 | + $displayElement ( __ ( 'Date création' ), h ( $materiel->created ) ); | |
356 | + $displayElement ( __ ( 'Nom du créateur' ), h ( $materiel->nom_createur ) ); | |
357 | + $displayElement ( __ ( 'Date modification' ), h ( $materiel->modified ) ); | |
358 | + $displayElement ( __ ( 'Nom du modificateur' ), h ( $materiel->nom_modificateur ) ); | |
359 | + } | |
360 | + | |
361 | + ?> | |
237 | 362 | </table> |
238 | - </div> | |
363 | + </div> | |
239 | 364 | |
240 | 365 | |
241 | - <?php | |
242 | - //Partie admin | |
243 | - if(in_array($role, ['Administration', 'Administration Plus', 'Super Administrateur'])) { | |
244 | - echo '<h3 id="t_informations_admin" style="cursor: pointer;">'; | |
366 | + <?php | |
367 | + // Partie admin | |
368 | + if (in_array ( $role, [ | |
369 | + 'Administration', | |
370 | + 'Administration Plus', | |
371 | + 'Super Administrateur' | |
372 | + ] )) { | |
373 | + echo '<h3 id="t_informations_admin" style="cursor: pointer;">'; | |
245 | 374 | echo '<i class="icon-chevron-down" style="font-size: 14px;" id="i_informations_admin"></i>'; |
246 | 375 | echo '<span style="text-decoration: underline;">Informations administratives</span>'; |
247 | 376 | echo '</h3>'; |
248 | 377 | echo '<div id="informations_admin" style="margin-bottom: 20px;">'; |
249 | 378 | echo '<table>'; |
250 | 379 | echo '<tr><th style="width: 250px;"></th><th></th></tr>'; |
251 | - | |
252 | - echo '<tr><td><strong>'.__('CentreFinancier/EOTP').' </strong></td><td>'.h($materiel->eotp).'</td></tr>'; | |
253 | - echo '<tr><td><strong>'.__('N° commande').' </strong></td><td>'.h($materiel->numero_commande).'</td></tr>'; | |
254 | - echo '<tr><td><strong>'.__('Code comptable').' </strong></td><td>'.h($materiel->code_comptable).'</td></tr>'; | |
255 | - echo '<tr><td><strong>'.__('N° de série').' </strong></td><td>'.h($materiel->numero_serie).'</td></tr>'; | |
256 | - echo '<tr><td><strong>'.__('N. Inventaire Organisme').' </strong></td><td>'.h($materiel->numero_inventaire_organisme).'</td></tr>'; | |
257 | - echo '<tr><td><strong>'.__('N. inventaire (ancien)').' </strong></td><td>'.h($materiel->numero_inventaire_old).'</td></tr>'; | |
258 | - | |
259 | - echo '</table>'; | |
260 | - echo '</div>'; | |
261 | - | |
262 | - } | |
263 | - | |
264 | - | |
265 | - ?> | |
380 | + | |
381 | + echo '<tr><td><strong>' . __ ( 'CentreFinancier/EOTP' ) . ' </strong></td><td>' . h ( $materiel->eotp ) . '</td></tr>'; | |
382 | + echo '<tr><td><strong>' . __ ( 'N° commande' ) . ' </strong></td><td>' . h ( $materiel->numero_commande ) . '</td></tr>'; | |
383 | + echo '<tr><td><strong>' . __ ( 'Code comptable' ) . ' </strong></td><td>' . h ( $materiel->code_comptable ) . '</td></tr>'; | |
384 | + echo '<tr><td><strong>' . __ ( 'N° de série' ) . ' </strong></td><td>' . h ( $materiel->numero_serie ) . '</td></tr>'; | |
385 | + echo '<tr><td><strong>' . __ ( 'N. Inventaire Organisme' ) . ' </strong></td><td>' . h ( $materiel->numero_inventaire_organisme ) . '</td></tr>'; | |
386 | + echo '<tr><td><strong>' . __ ( 'N. inventaire (ancien)' ) . ' </strong></td><td>' . h ( $materiel->numero_inventaire_old ) . '</td></tr>'; | |
387 | + | |
388 | + echo '</table>'; | |
389 | + echo '</div>'; | |
390 | + } | |
391 | + | |
392 | + ?> | |
266 | 393 | |
267 | 394 | |
268 | 395 | <h3 id="t_suivis" style="cursor: pointer;"> |
269 | - <i class="icon-chevron-down" style="font-size: 14px;" id="i_suivis"></i> | |
396 | + <i class="icon-chevron-down" style="font-size: 14px;" id="i_suivis"></i> | |
270 | 397 | <span style="text-decoration: underline;">Suivi(s) du matériel (<?= count($materiel->suivis) ?>)</span> |
271 | 398 | </h3> |
272 | 399 | <div id="suivis" style="margin-bottom: 20px;"> |
273 | 400 | |
274 | 401 | <?php if (!empty($materiel->suivis)) { ?> |
275 | - <table> | |
276 | - <tr> | |
277 | - <th><?= __('Prestataire') ?></th> | |
278 | - <th><?= __('Date du contrôle') ?></th> | |
279 | - <th><?= __('Date prochain contrôle') ?></th> | |
280 | - <th><?= __('Type d\'intervention') ?></th> | |
281 | - <th style="width:50px;"><?= __('Détail') ?></th> | |
282 | - </tr> | |
402 | + <table> | |
403 | + <tr> | |
404 | + <th><?= __('Prestataire') ?></th> | |
405 | + <th><?= __('Date du contrôle') ?></th> | |
406 | + <th><?= __('Date prochain contrôle') ?></th> | |
407 | + <th><?= __('Type d\'intervention') ?></th> | |
408 | + <th style="width: 50px;"><?= __('Détail') ?></th> | |
409 | + </tr> | |
283 | 410 | <?php foreach ($materiel->suivis as $suivis): ?> |
284 | 411 | <tr> |
285 | - <td><?= h($suivis->organisme) ?></td> | |
286 | - <td><?= h($suivis->date_controle) ?></td> | |
287 | - <td><?= h($suivis->date_prochain_controle) ?></td> | |
288 | - <td><?= $typeSuivis->find()->where(['id =' => h($suivis->type_suivi_id)])->first()['nom']; ?></td> | |
412 | + <td><?= h($suivis->organisme) ?></td> | |
413 | + <td><?= h($suivis->date_controle) ?></td> | |
414 | + <td><?= h($suivis->date_prochain_controle) ?></td> | |
415 | + <td><?= $typeSuivis->find()->where(['id =' => h($suivis->type_suivi_id)])->first()['nom']; ?></td> | |
289 | 416 | |
290 | - <td class="actions"> | |
291 | - <?= $this->Html->link(__('<i class="icon-search"></i>'), ['controller' => 'Suivis', 'action' => 'view', $suivis->id], ['escape' => false, 'style' => 'margin:0']) ?> | |
417 | + <td class="actions"> | |
418 | + <?= $this->Html->link(__('<i class="icon-search"></i>'), ['controller' => 'Suivis', 'action' => 'view', $suivis->id], ['escape' => false, 'style' => 'margin:0'])?> | |
292 | 419 | </td> |
293 | - </tr> | |
420 | + </tr> | |
294 | 421 | <?php endforeach; ?> |
295 | 422 | </table> |
296 | 423 | <?php }else { echo 'Aucun suivi pour ce matériel.'; } ?> |
297 | 424 | </div> |
298 | - | |
299 | - | |
300 | - | |
425 | + | |
426 | + | |
427 | + | |
301 | 428 | <h3 id="t_emprunts" style="cursor: pointer;"> |
302 | - <i class="icon-chevron-down" style="font-size: 14px;" id="i_emprunts"></i> | |
429 | + <i class="icon-chevron-down" style="font-size: 14px;" id="i_emprunts"></i> | |
303 | 430 | <span style="text-decoration: underline;">Emprunt(s) du matériel (<?= count($materiel->emprunts) ?>)</span> |
304 | 431 | </h3> |
305 | 432 | <div id="emprunts" style="margin-bottom: 20px;"> |
306 | 433 | |
307 | 434 | <?php if (!empty($materiel->emprunts)) { ?> |
308 | - <table> | |
309 | - <tr> | |
310 | - <th><?= __('Emprunteur') ?></th> | |
311 | - <th><?= __('Type d\'Emprunt') ?></th> | |
312 | - <th><?= __('Où') ?></th> | |
313 | - <th><?= __('Date de l\'emprunt') ?></th> | |
314 | - <th><?= __('Date de retour') ?></th> | |
315 | - <th style="width:50px;"><?= __('Détail') ?></th> | |
316 | - </tr> | |
317 | - <?php foreach ($materiel->emprunts as $emprunts): | |
318 | - | |
319 | - $type = 'Externe'; | |
320 | - $lieu = $emprunts['laboratoire']; | |
321 | - if ($emprunts['emprunt_interne'] == 1) | |
322 | - { | |
323 | - $type = 'Interne'; | |
324 | - $lieu = $sites->find()->where(['id =' => h($emprunts->site_id)])->first()['nom'].'-'.h($emprunts->e_lieu_detail); | |
325 | - } | |
326 | - ?> | |
435 | + <table> | |
436 | + <tr> | |
437 | + <th><?= __('Emprunteur') ?></th> | |
438 | + <th><?= __('Type d\'Emprunt') ?></th> | |
439 | + <th><?= __('Où') ?></th> | |
440 | + <th><?= __('Date de l\'emprunt') ?></th> | |
441 | + <th><?= __('Date de retour') ?></th> | |
442 | + <th style="width: 50px;"><?= __('Détail') ?></th> | |
443 | + </tr> | |
444 | + <?php | |
445 | + | |
446 | +foreach ( $materiel->emprunts as $emprunts ) : | |
447 | + | |
448 | + $type = 'Externe'; | |
449 | + $lieu = $emprunts ['laboratoire']; | |
450 | + if ($emprunts ['emprunt_interne'] == 1) { | |
451 | + $type = 'Interne'; | |
452 | + $lieu = $sites->find ()->where ( [ | |
453 | + 'id =' => h ( $emprunts->site_id ) | |
454 | + ] )->first () ['nom'] . '-' . h ( $emprunts->e_lieu_detail ); | |
455 | + } | |
456 | + ?> | |
327 | 457 | <tr> |
328 | - <td><?= h($emprunts->nom_emprunteur) ?></td> | |
329 | - <td><?= h($type) ?></td> | |
330 | - <td><?= h($lieu) ?></td> | |
331 | - <td><?= h($emprunts->date_emprunt) ?></td> | |
332 | - <td><?= h($emprunts->date_retour_emprunt) ?></td> | |
458 | + <td><?= h($emprunts->nom_emprunteur) ?></td> | |
459 | + <td><?= h($type) ?></td> | |
460 | + <td><?= h($lieu) ?></td> | |
461 | + <td><?= h($emprunts->date_emprunt) ?></td> | |
462 | + <td><?= h($emprunts->date_retour_emprunt) ?></td> | |
333 | 463 | |
334 | - <td class="actions"> | |
335 | - <?= $this->Html->link(__('<i class="icon-search"></i>'), ['controller' => 'Emprunts', 'action' => 'view', $emprunts->id], ['escape' => false, 'style' => 'margin:0']) ?> | |
464 | + <td class="actions"> | |
465 | + <?= $this->Html->link(__('<i class="icon-search"></i>'), ['controller' => 'Emprunts', 'action' => 'view', $emprunts->id], ['escape' => false, 'style' => 'margin:0'])?> | |
336 | 466 | </td> |
337 | - </tr> | |
467 | + </tr> | |
338 | 468 | <?php endforeach; ?> |
339 | 469 | </table> |
340 | 470 | <?php }else { echo 'Aucun emprunt pour ce matériel.'; } ?> |
341 | 471 | </div> |
342 | 472 | |
343 | 473 | |
474 | + <?php | |
475 | + $nbFic = count ( $materiel->documents ); | |
476 | + ?> | |
477 | + | |
344 | 478 | |
345 | 479 | <h3 id="t_fichiers" style="cursor: pointer;"> |
346 | - <i class="icon-chevron-down" style="font-size: 14px;" id="i_fichiers"></i> | |
347 | - <span style="text-decoration: underline;">Fichier(s) lié(s) au matériel (<?= count($materiel->documents) ?>)</span> | |
480 | + <i class="icon-chevron-down" style="font-size: 14px;" id="i_fichiers"></i> | |
481 | + <span style="text-decoration: underline;">Fichier(s) lié(s) au matériel (<?= $nbFic ?>)</span> | |
348 | 482 | </h3> |
349 | 483 | <div id="fichiers" style="margin-bottom: 20px;"> |
350 | 484 | |
351 | - <?php if (!empty($materiel->documents)) { ?> | |
352 | - <table> | |
353 | - <tr> | |
354 | - <th><?= __('Nom') ?></th> | |
355 | - <th><?= __('Type') ?></th> | |
356 | - <th style="width:50px;"><?= __('Détail') ?></th> | |
357 | - <th style="width:50px;"><?= __('Télécharger') ?></th> | |
358 | - <th style="width:50px;"><?= __('Supprimer') ?></th> | |
359 | - </tr> | |
360 | - <?php foreach ($materiel->documents as $documents): | |
361 | - | |
362 | - $type = $typeDocuments->find()->where(['id =' => h($documents->type_document_id)])->first()['nom']; | |
363 | - ?> | |
485 | + <?php if ($nbFic != 0) { ?> | |
486 | + <table> | |
487 | + <tr> | |
488 | + <th><?= __('Nom') ?></th> | |
489 | + <th><?= __('Type') ?></th> | |
490 | + <th><?= __('Photo') ?></th> | |
491 | + <th style="width: 50px;"><?= __('Détail') ?></th> | |
492 | + <th style="width: 50px;"><?= __('Télécharger') ?></th> | |
493 | + <?php | |
494 | + if(($role == 'Utilisateur' && (in_array($username, [$materiel->nom_createur, $materiel->nom_responsable]))) || (in_array($role, ['Administration', 'Administration Plus', 'Super Administrateur'])) || ($role == 'Responsable' && ($materiel->groupes_metier_id == $userConnected->groupes_metier_id || $materiel->groupes_thematique_id == $userConnected->groupe_thematique_id))) { | |
495 | + ?> | |
496 | + <th style="width: 50px;"><?= __('Supprimer') ?></th> | |
497 | + <?php } ?> | |
498 | + </tr> | |
499 | + <?php | |
500 | + | |
501 | +foreach ( $materiel->documents as $documents ) : | |
502 | + | |
503 | + if ($documents->photo) { | |
504 | + $p = 'Oui'; | |
505 | + } else { | |
506 | + $p = ''; | |
507 | + } | |
508 | + $type = $typeDocuments->find ()->where ( [ | |
509 | + 'id =' => h ( $documents->type_document_id ) | |
510 | + ] )->first () ['nom']; | |
511 | + ?> | |
364 | 512 | <tr> |
365 | - <td><?= h($documents->nom) ?></td> | |
366 | - <td><?= $type ?></td> | |
513 | + <td><?= h($documents->nom) ?></td> | |
514 | + <td><?= $type ?></td> | |
515 | + <td><?= $p ?></td> | |
367 | 516 | |
368 | - <td class="actions"> | |
369 | - <?= $this->Html->link(__('<i class="icon-search"></i>'), ['controller' => 'Documents', 'action' => 'view', $documents->id], ['escape' => false, 'style' => 'margin:0']) ?> | |
370 | - </td> | |
371 | - <td class="actions"> | |
372 | - <?= $this->Html->link(__('<i class="icon-download"></i>'), '/webroot/files/'.$documents->id.'.'.$documents->type_doc, ['title' => 'Télécharger', 'style' => 'margin:0', 'escape' => false ]) ?> | |
517 | + <td class="actions"> | |
518 | + <?= $this->Html->link(__('<i class="icon-search"></i>'), ['controller' => 'Documents', 'action' => 'view', $documents->id], ['escape' => false, 'style' => 'margin:0'])?> | |
373 | 519 | </td> |
374 | - <td class="actions"> | |
375 | - <?= $this->Form->postLink(__('<i class="icon-trash"></i>'), ['controller' => 'Documents', 'action' => 'delete', $documents->id], ['escape' => false, 'style' => 'margin:0']) ?> | |
520 | + | |
521 | + <td class="actions"> | |
522 | + <?php | |
523 | + if ($documents->photo) { | |
524 | + echo $this->Html->link ( __ ( '<i class="icon-download"></i>' ), '/webroot/img/photos/' . $documents->id . '.' . $documents->type_doc, [ | |
525 | + 'title' => 'Télécharger', | |
526 | + 'style' => 'margin:0', | |
527 | + 'escape' => false | |
528 | + ] ); | |
529 | + } else { | |
530 | + echo $this->Html->link ( __ ( '<i class="icon-download"></i>' ), '/webroot/files/' . $documents->id . '.' . $documents->type_doc, [ | |
531 | + 'title' => 'Télécharger', | |
532 | + 'style' => 'margin:0', | |
533 | + 'escape' => false | |
534 | + ] ); | |
535 | + } | |
536 | + ?> | |
376 | 537 | </td> |
377 | - </tr> | |
378 | - <?php endforeach; ?> | |
538 | + <?php | |
539 | + if(($role == 'Utilisateur' && (in_array($username, [$materiel->nom_createur, $materiel->nom_responsable]))) || (in_array($role, ['Administration', 'Administration Plus', 'Super Administrateur'])) || ($role == 'Responsable' && ($materiel->groupes_metier_id == $userConnected->groupes_metier_id || $materiel->groupes_thematique_id == $userConnected->groupe_thematique_id))) { | |
540 | + ?> | |
541 | + <td class="actions"> | |
542 | + <?= $this->Form->postLink(__('<i class="icon-trash"></i>'), ['controller' => 'Documents', 'action' => 'delete', $documents->id], ['escape' => false, 'style' => 'margin:0', 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $documents->id)])?> | |
543 | + </td> | |
544 | + <?php } ?> | |
545 | + </tr> | |
546 | + <?php | |
547 | + endforeach | |
548 | + ; | |
549 | + ?> | |
379 | 550 | </table> |
380 | 551 | <?php }else { echo 'Aucun fichier pour ce matériel.'; } ?> |
381 | 552 | </div> |
382 | 553 | |
383 | -</div> | |
554 | + </div> | |
384 | 555 | |
385 | 556 | |
386 | - <div class="actions"> | |
387 | - <?php echo $this->element('menu') ?> | |
388 | - <?php echo $this->element('menu_view', | |
389 | - [ 'pluralHumanName' => 'Matériels', | |
390 | - 'singularHumanName' => 'Matériel', | |
391 | - 'lien' => $materiel->id ]) ?> | |
557 | + <div class="actions"> | |
558 | + <?php echo $this->element('menu')?> | |
559 | + <?php | |
560 | + | |
561 | +echo $this->element ( 'menu_view', [ | |
562 | + 'pluralHumanName' => 'Matériels', | |
563 | + 'singularHumanName' => 'Matériel', | |
564 | + 'lien' => $materiel->id | |
565 | + ] )?> | |
392 | 566 | </div> |
393 | 567 | \ No newline at end of file | ... | ... |
src/Template/Suivis/view.ctp
... | ... | @@ -66,7 +66,11 @@ |
66 | 66 | <th><?= __('Type') ?></th> |
67 | 67 | <th style="width:50px;"><?= __('Détail') ?></th> |
68 | 68 | <th style="width:50px;"><?= __('Télécharger') ?></th> |
69 | + <?php | |
70 | + if(($role == 'Utilisateur' && in_array($username, [$suivi->nom_createur])) || (in_array($role, ['Administration', 'Administration Plus', 'Super Administrateur'])) || $role == 'Responsable' && ($suivi->groupes_metier_id == $userConnected->groupes_metier_id || $suivi->groupes_thematique_id == $userConnected->groupe_thematique_id)) { | |
71 | + ?> | |
69 | 72 | <th style="width:50px;"><?= __('Supprimer') ?></th> |
73 | + <?php } ?> | |
70 | 74 | </tr> |
71 | 75 | <?php foreach ($suivi->documents as $documents): |
72 | 76 | |
... | ... | @@ -83,9 +87,13 @@ |
83 | 87 | <td class="actions"> |
84 | 88 | <?= $this->Html->link(__('<i class="icon-download"></i>'), '/webroot/files/'.$documents->id.'.'.$documents->type_doc, ['title' => 'Télécharger', 'style' => 'margin:0', 'escape' => false ]) ?> |
85 | 89 | </td> |
90 | + <?php | |
91 | + if(($role == 'Utilisateur' && in_array($username, [$suivi->nom_createur])) || (in_array($role, ['Administration', 'Administration Plus', 'Super Administrateur'])) || $role == 'Responsable' && ($suivi->groupes_metier_id == $userConnected->groupes_metier_id || $suivi->groupes_thematique_id == $userConnected->groupe_thematique_id)) { | |
92 | + ?> | |
86 | 93 | <td class="actions"> |
87 | - <?= $this->Form->postLink(__('<i class="icon-trash"></i>'), ['controller' => 'Documents', 'action' => 'delete', $documents->id], ['escape' => false, 'style' => 'margin:0']) ?> | |
94 | + <?= $this->Form->postLink(__('<i class="icon-trash"></i>'), ['controller' => 'Documents', 'action' => 'delete', $documents->id], ['escape' => false, 'style' => 'margin:0', 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $documents->id)]) ?> | |
88 | 95 | </td> |
96 | + <?php } ?> | |
89 | 97 | </tr> |
90 | 98 | <?php endforeach; ?> |
91 | 99 | </table> | ... | ... |
tests/Fixture/ConfigurationsFixture.php
... | ... | @@ -50,6 +50,7 @@ class ConfigurationsFixture extends TestFixture |
50 | 50 | 'date_commande_facultative' => ['type' => 'boolean', 'length' => null, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null], |
51 | 51 | 'numero_labo_sans_annee' => ['type' => 'boolean', 'length' => null, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null], |
52 | 52 | 'prix_inventaire_administratif' => ['type' => 'integer', 'length' => 10, 'null' => true, 'default' => 800, 'comment' => '', 'precision' => null], |
53 | + 'taille_max_doc' => ['type' => 'integer', 'length' => 15, 'null' => true, 'default' => 8000000, 'comment' => '', 'precision' => null], | |
53 | 54 | '_constraints' => [ |
54 | 55 | 'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []], |
55 | 56 | 'nom_UNIQUE' => ['type' => 'unique', 'columns' => ['nom'], 'length' => []], | ... | ... |
tests/Fixture/DocumentsFixture.php
... | ... | @@ -23,7 +23,8 @@ class DocumentsFixture extends TestFixture |
23 | 23 | 'suivi_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], |
24 | 24 | 'nom' => ['type' => 'string', 'length' => 100, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null, 'fixed' => null], |
25 | 25 | 'type_document_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => true, 'default' => '1', 'comment' => '', 'precision' => null, 'autoIncrement' => null], |
26 | - '_indexes' => [ | |
26 | + 'photo' => ['type' => 'boolean', 'length' => null, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null], | |
27 | + '_indexes' => [ | |
27 | 28 | 'fk_documents_materiel_id' => ['type' => 'index', 'columns' => ['materiel_id'], 'length' => []], |
28 | 29 | 'fk_documents_suivi_id' => ['type' => 'index', 'columns' => ['suivi_id'], 'length' => []], |
29 | 30 | 'fk_documents_type_documents_id' => ['type' => 'index', 'columns' => ['type_document_id'], 'length' => []], | ... | ... |
tests/Fixture/MaterielsFixture.php
... | ... | @@ -53,6 +53,7 @@ class MaterielsFixture extends TestFixture |
53 | 53 | 'date_reception' => ['type' => 'date', 'length' => null, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null], |
54 | 54 | 'organisme_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], |
55 | 55 | 'site_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => true, 'default' => '1', 'comment' => '', 'precision' => null, 'autoIncrement' => null], |
56 | + 'photo_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], | |
56 | 57 | 'hors_service' => ['type' => 'boolean', 'length' => null, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null], |
57 | 58 | '_indexes' => [ |
58 | 59 | 'fk_administrative_materials_sub_categories1' => ['type' => 'index', 'columns' => ['sous_categorie_id'], 'length' => []], | ... | ... |
webroot/img/.gitignore