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,19 +50,18 @@ Logiciel testé et validé sur les configurations suivantes : | ||
50 | 50 | ||
51 | VERSION ACTUELLE | 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 | Version majeure en cours (2.5): https://projects.irap.omp.eu/versions/99 | 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,6 +100,10 @@ Liste complète des évolutions: https://gitlab.irap.omp.eu/epallier/labinvent/c | ||
101 | 100 | ||
102 | MODIFICATIONS STRUCTURELLES A FAIRE MANUELLEMENT APRES LA MISE A JOUR (git pull) | 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 | 24/06/16 (v2.4.7.2) Se placer dans database/update et exécuter le script ./db-update-2016-06-24-2.sh | 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 | 24/06/16 (v2.4.7.0) Se placer dans database/update et exécuter le script ./db-update-2016-06-24.sh | 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,11 +73,11 @@ CREATE TABLE IF NOT EXISTS `documents` ( | ||
73 | `id` int(11) NOT NULL AUTO_INCREMENT, | 73 | `id` int(11) NOT NULL AUTO_INCREMENT, |
74 | `type_doc` varchar(20) DEFAULT NULL, | 74 | `type_doc` varchar(20) DEFAULT NULL, |
75 | `description` text DEFAULT NULL, | 75 | `description` text DEFAULT NULL, |
76 | - `chemin` varchar(200) DEFAULT NULL, | ||
77 | `nom` VARCHAR(100) DEFAULT NULL, | 76 | `nom` VARCHAR(100) DEFAULT NULL, |
78 | `materiel_id` int(11) DEFAULT NULL, | 77 | `materiel_id` int(11) DEFAULT NULL, |
79 | `suivi_id` int(11) DEFAULT NULL, | 78 | `suivi_id` int(11) DEFAULT NULL, |
80 | `type_document_id` int(11) DEFAULT NULL, | 79 | `type_document_id` int(11) DEFAULT NULL, |
80 | + `photo` tinyint(1) DEFAULT NULL, | ||
81 | PRIMARY KEY (`id`), | 81 | PRIMARY KEY (`id`), |
82 | KEY `fk_documents_materiel_id` (`materiel_id`), | 82 | KEY `fk_documents_materiel_id` (`materiel_id`), |
83 | KEY `fk_documents_suivi_id` (`suivi_id`), | 83 | KEY `fk_documents_suivi_id` (`suivi_id`), |
@@ -182,6 +182,7 @@ CREATE TABLE IF NOT EXISTS `materiels` ( | @@ -182,6 +182,7 @@ CREATE TABLE IF NOT EXISTS `materiels` ( | ||
182 | `date_fin_garantie` date DEFAULT NULL, | 182 | `date_fin_garantie` date DEFAULT NULL, |
183 | `duree_garantie` int(10) DEFAULT NULL, | 183 | `duree_garantie` int(10) DEFAULT NULL, |
184 | `unite_duree_garantie` varchar (30) DEFAULT NULL, | 184 | `unite_duree_garantie` varchar (30) DEFAULT NULL, |
185 | + `photo_id` int(11) DEFAULT NULL, | ||
185 | PRIMARY KEY (`id`), | 186 | PRIMARY KEY (`id`), |
186 | UNIQUE KEY `numero_irap` (`numero_laboratoire`), | 187 | UNIQUE KEY `numero_irap` (`numero_laboratoire`), |
187 | KEY `fk_administrative_materials_sub_categories1` (`sous_categorie_id`), | 188 | KEY `fk_administrative_materials_sub_categories1` (`sous_categorie_id`), |
@@ -298,7 +299,6 @@ CREATE TABLE `type_documents` ( | @@ -298,7 +299,6 @@ CREATE TABLE `type_documents` ( | ||
298 | PRIMARY KEY (`id`) | 299 | PRIMARY KEY (`id`) |
299 | ); | 300 | ); |
300 | 301 | ||
301 | -Insert into type_documents(id, nom) values (1, 'N/A'); | ||
302 | -- -------------------------------------------------------- | 302 | -- -------------------------------------------------------- |
303 | -- | 303 | -- |
304 | -- Structure de la table `users` | 304 | -- Structure de la table `users` |
@@ -360,6 +360,7 @@ CREATE TABLE IF NOT EXISTS `configurations` ( | @@ -360,6 +360,7 @@ CREATE TABLE IF NOT EXISTS `configurations` ( | ||
360 | `prix_inventaire_administratif` int( 10 ) DEFAULT '800', | 360 | `prix_inventaire_administratif` int( 10 ) DEFAULT '800', |
361 | `numero_labo_sans_annee` tinyint(1) DEFAULT NULL, | 361 | `numero_labo_sans_annee` tinyint(1) DEFAULT NULL, |
362 | `date_commande_facultative` tinyint(1) DEFAULT NULL, | 362 | `date_commande_facultative` tinyint(1) DEFAULT NULL, |
363 | + `taille_max_doc` int (15) DEFAULT '8000000', | ||
363 | PRIMARY KEY (`id`), | 364 | PRIMARY KEY (`id`), |
364 | UNIQUE KEY `nom_UNIQUE` (`nom`) | 365 | UNIQUE KEY `nom_UNIQUE` (`nom`) |
365 | ); | 366 | ); |
@@ -430,10 +431,24 @@ ALTER TABLE `users` | @@ -430,10 +431,24 @@ ALTER TABLE `users` | ||
430 | Insert into type_suivis(nom) values ('Réparation'); | 431 | Insert into type_suivis(nom) values ('Réparation'); |
431 | Insert into sites(id, nom) values (9, 'N/A'); | 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 | -- Insertion par défaut pour la table configuration | 447 | -- Insertion par défaut pour la table configuration |
434 | 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', '', '', ''); | 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 | /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; | 452 | /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; |
438 | /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; | 453 | /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; |
439 | /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; | 454 | /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; |
@@ -0,0 +1,38 @@ | @@ -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 @@ | @@ -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,6 +98,9 @@ fi | ||
98 | if [ ! -d "./webroot/img/qrcodes" ]; then | 98 | if [ ! -d "./webroot/img/qrcodes" ]; then |
99 | mkdir ./webroot/img/qrcodes | 99 | mkdir ./webroot/img/qrcodes |
100 | fi | 100 | fi |
101 | +if [ ! -d "./webroot/img/photos" ]; then | ||
102 | + mkdir ./webroot/img/photos | ||
103 | +fi | ||
101 | 104 | ||
102 | if [ ! -d "./vendor/phpunit" ]; then | 105 | if [ ! -d "./vendor/phpunit" ]; then |
103 | ./composer.phar require --dev phpunit/phpunit | 106 | ./composer.phar require --dev phpunit/phpunit |
src/Controller/DocumentsController.php
@@ -35,9 +35,17 @@ class DocumentsController extends AppController | @@ -35,9 +35,17 @@ class DocumentsController extends AppController | ||
35 | return true; | 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 | //Pour tout le monde | 45 | //Pour tout le monde |
40 | if (in_array($action, ['view', 'add', 'ficheMateriel'])) return true; | 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,9 +104,27 @@ class DocumentsController extends AppController | ||
96 | if ($this->request->is('post')) { | 104 | if ($this->request->is('post')) { |
97 | $document = $this->Documents->patchEntity($document, $this->request->data); | 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 | if ($this->Documents->save($document)) { | 111 | if ($this->Documents->save($document)) { |
100 | $this->Flash->success(__('Le fichier a bien été ajouté.')); | 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 | $id = $document->materiel_id; | 128 | $id = $document->materiel_id; |
103 | if(empty($id)) { | 129 | if(empty($id)) { |
104 | $id = $document->suivi_id; | 130 | $id = $document->suivi_id; |
@@ -120,6 +146,10 @@ class DocumentsController extends AppController | @@ -120,6 +146,10 @@ class DocumentsController extends AppController | ||
120 | $suivi = $this->Documents->Suivis->find('list', [ 'keyField' => 'id', 'valueField' => 'id'])->where(['id =' => $this->passedArgs[0]]); | 146 | $suivi = $this->Documents->Suivis->find('list', [ 'keyField' => 'id', 'valueField' => 'id'])->where(['id =' => $this->passedArgs[0]]); |
121 | $this->set('suivi', $suivi); | 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 | $typesD = $this->Documents->TypeDocuments->find('list', [ 'keyField' => 'id', 'valueField' => 'nom', 'order' => 'TypeDocuments.nom']); | 155 | $typesD = $this->Documents->TypeDocuments->find('list', [ 'keyField' => 'id', 'valueField' => 'nom', 'order' => 'TypeDocuments.nom']); |
@@ -141,6 +171,14 @@ class DocumentsController extends AppController | @@ -141,6 +171,14 @@ class DocumentsController extends AppController | ||
141 | $this->request->allowMethod(['post', 'delete']); | 171 | $this->request->allowMethod(['post', 'delete']); |
142 | $document = $this->Documents->get($id); | 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 | if ($this->Documents->delete($document)) { | 182 | if ($this->Documents->delete($document)) { |
145 | $this->Flash->success(__('Le fichier a bien été supprimé.')); | 183 | $this->Flash->success(__('Le fichier a bien été supprimé.')); |
146 | } else { | 184 | } else { |
src/Controller/MaterielsController.php
@@ -217,6 +217,11 @@ class MaterielsController extends AppController | @@ -217,6 +217,11 @@ class MaterielsController extends AppController | ||
217 | $typeSuivis = TableRegistry::get('TypeSuivis'); | 217 | $typeSuivis = TableRegistry::get('TypeSuivis'); |
218 | $typeDocuments = TableRegistry::get('TypeDocuments'); | 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 | $this->set('sites', $sites); | 225 | $this->set('sites', $sites); |
221 | $this->set('typeSuivis', $typeSuivis); | 226 | $this->set('typeSuivis', $typeSuivis); |
222 | $this->set('typeDocuments', $typeDocuments); | 227 | $this->set('typeDocuments', $typeDocuments); |
src/Model/Entity/Configuration.php
@@ -39,6 +39,7 @@ use Cake\ORM\Entity; | @@ -39,6 +39,7 @@ use Cake\ORM\Entity; | ||
39 | * @property bool $date_commande_facultative | 39 | * @property bool $date_commande_facultative |
40 | * @property bool $numero_labo_sans_annee | 40 | * @property bool $numero_labo_sans_annee |
41 | * @property int $prix_inventaire_administratif | 41 | * @property int $prix_inventaire_administratif |
42 | + * @property int $taille_max_doc | ||
42 | */ | 43 | */ |
43 | class Configuration extends Entity | 44 | class Configuration extends Entity |
44 | { | 45 | { |
src/Model/Entity/Document.php
@@ -11,6 +11,7 @@ use Cake\ORM\Entity; | @@ -11,6 +11,7 @@ use Cake\ORM\Entity; | ||
11 | * @property string $chemin | 11 | * @property string $chemin |
12 | * @property string $description | 12 | * @property string $description |
13 | * @property string $nom | 13 | * @property string $nom |
14 | + * @property bool $photo | ||
14 | * @property int $materiel_id | 15 | * @property int $materiel_id |
15 | * @property \App\Model\Entity\Materiel $materiel | 16 | * @property \App\Model\Entity\Materiel $materiel |
16 | * @property int $suivi_id | 17 | * @property int $suivi_id |
src/Model/Entity/Materiel.php
@@ -48,6 +48,7 @@ use Cake\ORM\Entity; | @@ -48,6 +48,7 @@ use Cake\ORM\Entity; | ||
48 | * @property int $organisme_id | 48 | * @property int $organisme_id |
49 | * @property \App\Model\Entity\Organisme $organisme | 49 | * @property \App\Model\Entity\Organisme $organisme |
50 | * @property int $site_id | 50 | * @property int $site_id |
51 | + * @property int $photo_id | ||
51 | * @property bool $hors_service | 52 | * @property bool $hors_service |
52 | * @property \App\Model\Entity\Site $site | 53 | * @property \App\Model\Entity\Site $site |
53 | * @property \App\Model\Entity\Document[] $documents | 54 | * @property \App\Model\Entity\Document[] $documents |
src/Model/Table/AppTable.php
@@ -20,7 +20,7 @@ class AppTable extends Table | @@ -20,7 +20,7 @@ class AppTable extends Table | ||
20 | // autoriser les caracteres spéciaux (pour une PHRASE ou paragraphe) : | 20 | // autoriser les caracteres spéciaux (pour une PHRASE ou paragraphe) : |
21 | // check_string PLUS ces symboles ====> & * > < ? % ! : , " ' | 21 | // check_string PLUS ces symboles ====> & * > < ? % ! : , " ' |
22 | public function check_string_with_some_special_cars($check) { | 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 | public function check_mail($check) { | 26 | public function check_mail($check) { |
src/Model/Table/ConfigurationsTable.php
@@ -80,7 +80,7 @@ class ConfigurationsTable extends AppTable | @@ -80,7 +80,7 @@ class ConfigurationsTable extends AppTable | ||
80 | ->notEmpty('labNameShort'); | 80 | ->notEmpty('labNameShort'); |
81 | 81 | ||
82 | $validator | 82 | $validator |
83 | - ->allowEmpty('labPresent'); | 83 | + ->notEmpty('labPresent'); |
84 | 84 | ||
85 | $validator | 85 | $validator |
86 | ->allowEmpty('labUmr'); | 86 | ->allowEmpty('labUmr'); |
@@ -136,7 +136,10 @@ class ConfigurationsTable extends AppTable | @@ -136,7 +136,10 @@ class ConfigurationsTable extends AppTable | ||
136 | ->allowEmpty('test'); | 136 | ->allowEmpty('test'); |
137 | 137 | ||
138 | $validator | 138 | $validator |
139 | - ->allowEmpty('prix_inventaire_administratif'); | 139 | + ->notEmpty('prix_inventaire_administratif'); |
140 | + | ||
141 | + $validator | ||
142 | + ->notEmpty('taille_max_doc'); | ||
140 | 143 | ||
141 | $validator | 144 | $validator |
142 | ->allowEmpty('date_commande_facultative'); | 145 | ->allowEmpty('date_commande_facultative'); |
src/Model/Table/DocumentsTable.php
@@ -6,6 +6,7 @@ use Cake\ORM\Query; | @@ -6,6 +6,7 @@ use Cake\ORM\Query; | ||
6 | use Cake\ORM\RulesChecker; | 6 | use Cake\ORM\RulesChecker; |
7 | use Cake\ORM\Table; | 7 | use Cake\ORM\Table; |
8 | use Cake\Validation\Validator; | 8 | use Cake\Validation\Validator; |
9 | +use Cake\ORM\TableRegistry; | ||
9 | 10 | ||
10 | /** | 11 | /** |
11 | * Documents Model | 12 | * Documents Model |
@@ -73,6 +74,9 @@ class DocumentsTable extends AppTable | @@ -73,6 +74,9 @@ class DocumentsTable extends AppTable | ||
73 | 74 | ||
74 | $validator | 75 | $validator |
75 | ->allowEmpty('materiel_id'); | 76 | ->allowEmpty('materiel_id'); |
77 | + | ||
78 | + $validator | ||
79 | + ->allowEmpty('photo'); | ||
76 | 80 | ||
77 | $validator | 81 | $validator |
78 | ->allowEmpty('suivi_id'); | 82 | ->allowEmpty('suivi_id'); |
@@ -90,10 +94,13 @@ class DocumentsTable extends AppTable | @@ -90,10 +94,13 @@ class DocumentsTable extends AppTable | ||
90 | */ | 94 | */ |
91 | public function buildRules(RulesChecker $rules) | 95 | public function buildRules(RulesChecker $rules) |
92 | { | 96 | { |
97 | + $config = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first(); | ||
98 | + | ||
93 | $checkSizeDoc= function($entity) { | 99 | $checkSizeDoc= function($entity) { |
100 | + $config = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first(); | ||
94 | $size = $entity->get('chemin_file')['size']; | 101 | $size = $entity->get('chemin_file')['size']; |
95 | if(isset($size)) { | 102 | if(isset($size)) { |
96 | - if($size > 1000000) { | 103 | + if($size > $config->taille_max_doc) { |
97 | return false; | 104 | return false; |
98 | } else { | 105 | } else { |
99 | return true; | 106 | return true; |
@@ -104,11 +111,28 @@ class DocumentsTable extends AppTable | @@ -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 | $rules->add($checkSizeDoc, [ | 125 | $rules->add($checkSizeDoc, [ |
108 | 'errorField' => 'chemin_file', | 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 | return $rules; | 136 | return $rules; |
113 | } | 137 | } |
114 | 138 | ||
@@ -144,7 +168,12 @@ class DocumentsTable extends AppTable | @@ -144,7 +168,12 @@ class DocumentsTable extends AppTable | ||
144 | $file = $entity->get('chemin_file'); | 168 | $file = $entity->get('chemin_file'); |
145 | if(!empty($file['tmp_name'])) { | 169 | if(!empty($file['tmp_name'])) { |
146 | $extension = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION)); | 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,8 +183,12 @@ class DocumentsTable extends AppTable | ||
154 | **/ | 183 | **/ |
155 | public function afterDelete($event, $entity, $options) { | 184 | public function afterDelete($event, $entity, $options) { |
156 | $nomFichier = $entity->get('id').'.'.$entity->get('type_doc'); | 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
@@ -165,6 +165,9 @@ class MaterielsTable extends AppTable | @@ -165,6 +165,9 @@ class MaterielsTable extends AppTable | ||
165 | ->allowEmpty('date_archivage'); | 165 | ->allowEmpty('date_archivage'); |
166 | 166 | ||
167 | $validator | 167 | $validator |
168 | + ->allowEmpty('photo_id'); | ||
169 | + | ||
170 | + $validator | ||
168 | ->boolean('etiquette') | 171 | ->boolean('etiquette') |
169 | ->allowEmpty('etiquette'); | 172 | ->allowEmpty('etiquette'); |
170 | 173 |
src/Template/Configurations/edit.ctp
@@ -5,48 +5,83 @@ | @@ -5,48 +5,83 @@ | ||
5 | 5 | ||
6 | <fieldset> | 6 | <fieldset> |
7 | <?php | 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 | </fieldset> | 86 | </fieldset> |
52 | <?= $this->Form->submit(__('Valider')) ?> | 87 | <?= $this->Form->submit(__('Valider')) ?> |
src/Template/Configurations/view.ctp
@@ -86,6 +86,7 @@ | @@ -86,6 +86,7 @@ | ||
86 | echo '<tr><th style="width: 250px;"></th><th></th></tr>'; | 86 | echo '<tr><th style="width: 250px;"></th><th></th></tr>'; |
87 | $displayElement(__('Imprimante disponible'), $print); | 87 | $displayElement(__('Imprimante disponible'), $print); |
88 | $displayElement(__('Seuil (prix) Matériel administratif'), h($configurationObj->prix_inventaire_administratif)); | 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 | $displayElement(__('Numero labo sans année'), $numLab); | 90 | $displayElement(__('Numero labo sans année'), $numLab); |
90 | $displayElement(__('Champ date commande non obligatoire'), $dateObl); | 91 | $displayElement(__('Champ date commande non obligatoire'), $dateObl); |
91 | $displayElement(__('Label groupe thématique'), h($configurationObj->nom_groupe_thematique)); | 92 | $displayElement(__('Label groupe thématique'), h($configurationObj->nom_groupe_thematique)); |
src/Template/Documents/add.ctp
@@ -2,8 +2,12 @@ | @@ -2,8 +2,12 @@ | ||
2 | <div class="documents form"> | 2 | <div class="documents form"> |
3 | <?= $this->Form->create($document, ['type' => 'file']) ?> | 3 | <?= $this->Form->create($document, ['type' => 'file']) ?> |
4 | <fieldset> | 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 | if(isset($materiel)) { | 11 | if(isset($materiel)) { |
8 | echo $this->Form->input('materiel_id', ['label' => 'N° materiel labo', 'options' => $materiel, 'default' => $this->passedArgs[0], 'readonly' => true]); | 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,9 +17,17 @@ | ||
13 | 17 | ||
14 | echo $this->Form->input('nom'); | 18 | echo $this->Form->input('nom'); |
15 | echo $this->Form->input('type_document_id', ['label' => 'Type', 'options' => $typesD, 'default' => 1]); | 19 | echo $this->Form->input('type_document_id', ['label' => 'Type', 'options' => $typesD, 'default' => 1]); |
16 | - | ||
17 | echo $this->Form->input('description'); | 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,11 +9,18 @@ | ||
9 | <th><?= $this->Paginator->sort('suivi_id', 'Suivi') ?></th> | 9 | <th><?= $this->Paginator->sort('suivi_id', 'Suivi') ?></th> |
10 | <th><?= $this->Paginator->sort('type_document_id', 'Type') ?></th> | 10 | <th><?= $this->Paginator->sort('type_document_id', 'Type') ?></th> |
11 | <th><?= $this->Paginator->sort('type_doc', 'Extension fichier') ?></th> | 11 | <th><?= $this->Paginator->sort('type_doc', 'Extension fichier') ?></th> |
12 | + <th><?= $this->Paginator->sort('photo', 'Photo') ?></th> | ||
12 | <th class="actions"><?= __('') ?></th> | 13 | <th class="actions"><?= __('') ?></th> |
13 | </tr> | 14 | </tr> |
14 | </thead> | 15 | </thead> |
15 | <tbody> | 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 | <tr> | 24 | <tr> |
18 | <td class="smallText"><?= $this->Html->link($document->nom, ['action' => 'view', $document->id]) ?></td> | 25 | <td class="smallText"><?= $this->Html->link($document->nom, ['action' => 'view', $document->id]) ?></td> |
19 | 26 | ||
@@ -27,14 +34,21 @@ | @@ -27,14 +34,21 @@ | ||
27 | 34 | ||
28 | <td class="smallText"><?= $document->has('type_document') ? h($document->type_document->nom) : '' ?></td> | 35 | <td class="smallText"><?= $document->has('type_document') ? h($document->type_document->nom) : '' ?></td> |
29 | <td class="smallText"><?= h($document->type_doc) ?></td> | 36 | <td class="smallText"><?= h($document->type_doc) ?></td> |
37 | + <td class="smallText"><?= $p ?></td> | ||
30 | 38 | ||
31 | <td class="actions" style="padding: 6px 0;"> | 39 | <td class="actions" style="padding: 6px 0;"> |
32 | <?= $this->Html->link(__('<i class="icon-eye-open"></i>'), ['action' => 'view', $document->id], ['title' => 'Visualiser', 'style' => 'margin: 0 2px', 'escape' => false ]) ?> | 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 | <?= $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)]) ?> | 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 | </td> | 49 | </td> |
36 | </tr> | 50 | </tr> |
37 | - <?php endforeach; ?> | 51 | + <?php endforeach; ?> |
38 | </tbody> | 52 | </tbody> |
39 | </table> | 53 | </table> |
40 | 54 |
src/Template/Documents/view.ctp
@@ -20,7 +20,13 @@ | @@ -20,7 +20,13 @@ | ||
20 | $displayElement(__('Description'), h($document->description)); | 20 | $displayElement(__('Description'), h($document->description)); |
21 | $displayElement(__('Extension fichier'), h($document->type_doc)); | 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,7 +94,7 @@ $cakeDescription = 'Labinvent 2'; | ||
94 | </i></td> | 94 | </i></td> |
95 | <td id="version"> | 95 | <td id="version"> |
96 | <!-- VERSION M.m.f.b (version (M)ajeure, version (m)ineure, numero de nouvelle (f)onctionnalite, numero de (b)ugfix) --> | 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 | </td> | 98 | </td> |
99 | </tr> | 99 | </tr> |
100 | </table> | 100 | </table> |
src/Template/Materiels/view.ctp
1 | 1 | ||
2 | <div class="materiels view"> | 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 | <?= h($materiel->designation).$panne?> | 15 | <?= h($materiel->designation).$panne?> |
13 | <span style="font-size: 70%; color: grey;"> | 16 | <span style="font-size: 70%; color: grey;"> |
14 | - <?= h($materiel->numero_laboratoire) ?> | 17 | + <?= h($materiel->numero_laboratoire)?> |
15 | <?php if (h($materiel->status) == 'ARCHIVED') echo ' (Archivé)'; ?> | 18 | <?php if (h($materiel->status) == 'ARCHIVED') echo ' (Archivé)'; ?> |
16 | </span> | 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 | </div> | 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 | </table> | 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 | echo '<i class="icon-chevron-down" style="font-size: 14px;" id="i_informations_admin"></i>'; | 374 | echo '<i class="icon-chevron-down" style="font-size: 14px;" id="i_informations_admin"></i>'; |
246 | echo '<span style="text-decoration: underline;">Informations administratives</span>'; | 375 | echo '<span style="text-decoration: underline;">Informations administratives</span>'; |
247 | echo '</h3>'; | 376 | echo '</h3>'; |
248 | echo '<div id="informations_admin" style="margin-bottom: 20px;">'; | 377 | echo '<div id="informations_admin" style="margin-bottom: 20px;">'; |
249 | echo '<table>'; | 378 | echo '<table>'; |
250 | echo '<tr><th style="width: 250px;"></th><th></th></tr>'; | 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 | <h3 id="t_suivis" style="cursor: pointer;"> | 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 | <span style="text-decoration: underline;">Suivi(s) du matériel (<?= count($materiel->suivis) ?>)</span> | 397 | <span style="text-decoration: underline;">Suivi(s) du matériel (<?= count($materiel->suivis) ?>)</span> |
271 | </h3> | 398 | </h3> |
272 | <div id="suivis" style="margin-bottom: 20px;"> | 399 | <div id="suivis" style="margin-bottom: 20px;"> |
273 | 400 | ||
274 | <?php if (!empty($materiel->suivis)) { ?> | 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 | <?php foreach ($materiel->suivis as $suivis): ?> | 410 | <?php foreach ($materiel->suivis as $suivis): ?> |
284 | <tr> | 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 | </td> | 419 | </td> |
293 | - </tr> | 420 | + </tr> |
294 | <?php endforeach; ?> | 421 | <?php endforeach; ?> |
295 | </table> | 422 | </table> |
296 | <?php }else { echo 'Aucun suivi pour ce matériel.'; } ?> | 423 | <?php }else { echo 'Aucun suivi pour ce matériel.'; } ?> |
297 | </div> | 424 | </div> |
298 | - | ||
299 | - | ||
300 | - | 425 | + |
426 | + | ||
427 | + | ||
301 | <h3 id="t_emprunts" style="cursor: pointer;"> | 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 | <span style="text-decoration: underline;">Emprunt(s) du matériel (<?= count($materiel->emprunts) ?>)</span> | 430 | <span style="text-decoration: underline;">Emprunt(s) du matériel (<?= count($materiel->emprunts) ?>)</span> |
304 | </h3> | 431 | </h3> |
305 | <div id="emprunts" style="margin-bottom: 20px;"> | 432 | <div id="emprunts" style="margin-bottom: 20px;"> |
306 | 433 | ||
307 | <?php if (!empty($materiel->emprunts)) { ?> | 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 | <tr> | 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 | </td> | 466 | </td> |
337 | - </tr> | 467 | + </tr> |
338 | <?php endforeach; ?> | 468 | <?php endforeach; ?> |
339 | </table> | 469 | </table> |
340 | <?php }else { echo 'Aucun emprunt pour ce matériel.'; } ?> | 470 | <?php }else { echo 'Aucun emprunt pour ce matériel.'; } ?> |
341 | </div> | 471 | </div> |
342 | 472 | ||
343 | 473 | ||
474 | + <?php | ||
475 | + $nbFic = count ( $materiel->documents ); | ||
476 | + ?> | ||
477 | + | ||
344 | 478 | ||
345 | <h3 id="t_fichiers" style="cursor: pointer;"> | 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 | </h3> | 482 | </h3> |
349 | <div id="fichiers" style="margin-bottom: 20px;"> | 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 | <tr> | 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 | </td> | 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 | </td> | 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 | </table> | 550 | </table> |
380 | <?php }else { echo 'Aucun fichier pour ce matériel.'; } ?> | 551 | <?php }else { echo 'Aucun fichier pour ce matériel.'; } ?> |
381 | </div> | 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 | </div> | 566 | </div> |
393 | \ No newline at end of file | 567 | \ No newline at end of file |
src/Template/Suivis/view.ctp
@@ -66,7 +66,11 @@ | @@ -66,7 +66,11 @@ | ||
66 | <th><?= __('Type') ?></th> | 66 | <th><?= __('Type') ?></th> |
67 | <th style="width:50px;"><?= __('Détail') ?></th> | 67 | <th style="width:50px;"><?= __('Détail') ?></th> |
68 | <th style="width:50px;"><?= __('Télécharger') ?></th> | 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 | <th style="width:50px;"><?= __('Supprimer') ?></th> | 72 | <th style="width:50px;"><?= __('Supprimer') ?></th> |
73 | + <?php } ?> | ||
70 | </tr> | 74 | </tr> |
71 | <?php foreach ($suivi->documents as $documents): | 75 | <?php foreach ($suivi->documents as $documents): |
72 | 76 | ||
@@ -83,9 +87,13 @@ | @@ -83,9 +87,13 @@ | ||
83 | <td class="actions"> | 87 | <td class="actions"> |
84 | <?= $this->Html->link(__('<i class="icon-download"></i>'), '/webroot/files/'.$documents->id.'.'.$documents->type_doc, ['title' => 'Télécharger', 'style' => 'margin:0', 'escape' => false ]) ?> | 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 | </td> | 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 | <td class="actions"> | 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 | </td> | 95 | </td> |
96 | + <?php } ?> | ||
89 | </tr> | 97 | </tr> |
90 | <?php endforeach; ?> | 98 | <?php endforeach; ?> |
91 | </table> | 99 | </table> |
tests/Fixture/ConfigurationsFixture.php
@@ -50,6 +50,7 @@ class ConfigurationsFixture extends TestFixture | @@ -50,6 +50,7 @@ class ConfigurationsFixture extends TestFixture | ||
50 | 'date_commande_facultative' => ['type' => 'boolean', 'length' => null, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null], | 50 | 'date_commande_facultative' => ['type' => 'boolean', 'length' => null, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null], |
51 | 'numero_labo_sans_annee' => ['type' => 'boolean', 'length' => null, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null], | 51 | 'numero_labo_sans_annee' => ['type' => 'boolean', 'length' => null, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null], |
52 | 'prix_inventaire_administratif' => ['type' => 'integer', 'length' => 10, 'null' => true, 'default' => 800, 'comment' => '', 'precision' => null], | 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 | '_constraints' => [ | 54 | '_constraints' => [ |
54 | 'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []], | 55 | 'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []], |
55 | 'nom_UNIQUE' => ['type' => 'unique', 'columns' => ['nom'], 'length' => []], | 56 | 'nom_UNIQUE' => ['type' => 'unique', 'columns' => ['nom'], 'length' => []], |
tests/Fixture/DocumentsFixture.php
@@ -23,7 +23,8 @@ class DocumentsFixture extends TestFixture | @@ -23,7 +23,8 @@ class DocumentsFixture extends TestFixture | ||
23 | 'suivi_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], | 23 | 'suivi_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], |
24 | 'nom' => ['type' => 'string', 'length' => 100, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null, 'fixed' => null], | 24 | 'nom' => ['type' => 'string', 'length' => 100, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null, 'fixed' => null], |
25 | 'type_document_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => true, 'default' => '1', 'comment' => '', 'precision' => null, 'autoIncrement' => null], | 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 | 'fk_documents_materiel_id' => ['type' => 'index', 'columns' => ['materiel_id'], 'length' => []], | 28 | 'fk_documents_materiel_id' => ['type' => 'index', 'columns' => ['materiel_id'], 'length' => []], |
28 | 'fk_documents_suivi_id' => ['type' => 'index', 'columns' => ['suivi_id'], 'length' => []], | 29 | 'fk_documents_suivi_id' => ['type' => 'index', 'columns' => ['suivi_id'], 'length' => []], |
29 | 'fk_documents_type_documents_id' => ['type' => 'index', 'columns' => ['type_document_id'], 'length' => []], | 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,6 +53,7 @@ class MaterielsFixture extends TestFixture | ||
53 | 'date_reception' => ['type' => 'date', 'length' => null, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null], | 53 | 'date_reception' => ['type' => 'date', 'length' => null, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null], |
54 | 'organisme_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], | 54 | 'organisme_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], |
55 | 'site_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => true, 'default' => '1', 'comment' => '', 'precision' => null, 'autoIncrement' => null], | 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 | 'hors_service' => ['type' => 'boolean', 'length' => null, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null], | 57 | 'hors_service' => ['type' => 'boolean', 'length' => null, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null], |
57 | '_indexes' => [ | 58 | '_indexes' => [ |
58 | 'fk_administrative_materials_sub_categories1' => ['type' => 'index', 'columns' => ['sous_categorie_id'], 'length' => []], | 59 | 'fk_administrative_materials_sub_categories1' => ['type' => 'index', 'columns' => ['sous_categorie_id'], 'length' => []], |
webroot/img/.gitignore