Commit f4e6dc027109b4e4073ed0e37329fad5c60d2677

Authored by Alexandre
1 parent 9347b408

Version: 2.5.2.0

envoi mail ajout document + edition details doc + acl documents + pb
saut de ligne champ "text + bugfixes

Demande (terminé) : https://projects.irap.omp.eu/issues/3913
					https://projects.irap.omp.eu/issues/3716
					https://projects.irap.omp.eu/issues/3912
	   
Version majeure en cours (2.5): https://projects.irap.omp.eu/versions/99

ROADMAP: https://projects.irap.omp.eu/projects/labinvent/roadmap
README-LABINVENT.md
@@ -50,18 +50,14 @@ Logiciel testé et validé sur les configurations suivantes : @@ -50,18 +50,14 @@ Logiciel testé et validé sur les configurations suivantes :
50 50
51 VERSION ACTUELLE 51 VERSION ACTUELLE
52 52
53 -Date: 28/06/2016  
54 -Version: 2.5.1.0 53 +Date: 29/06/2016
  54 +Version: 2.5.2.0
55 55
56 -!!! Se placer dans database/update et exécuter le script ./db-update-2016-06-28.sh !!! 56 +envoi mail ajout document + bugfixes + edition details doc + acl documents + pb saut de ligne champ "text
57 57
58 -Confirmation suppression doc + organisation configuration/form + taille doc config + photo materiel + liste type document défaut + acl documents + bugfixes  
59 -  
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 -  
64 -Demande (en cours) : https://projects.irap.omp.eu/issues/3716 58 +Demande (terminé) : https://projects.irap.omp.eu/issues/3913
  59 + https://projects.irap.omp.eu/issues/3716
  60 + https://projects.irap.omp.eu/issues/3912
65 61
66 Version majeure en cours (2.5): https://projects.irap.omp.eu/versions/99 62 Version majeure en cours (2.5): https://projects.irap.omp.eu/versions/99
67 63
src/Controller/AppController.php
@@ -164,10 +164,7 @@ class AppController extends Controller @@ -164,10 +164,7 @@ class AppController extends Controller
164 $this->set('_serialize', true); 164 $this->set('_serialize', true);
165 } 165 }
166 $this->set('username', $this->LdapAuth->user('givenname')[0].' '.$this->LdapAuth->user('sn')[0]); 166 $this->set('username', $this->LdapAuth->user('givenname')[0].' '.$this->LdapAuth->user('sn')[0]);
167 -  
168 -  
169 -  
170 - 167 +
171 $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first(); 168 $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
172 $this->set('configuration', $configuration); 169 $this->set('configuration', $configuration);
173 $this->request->session()->write("authType", $configuration->authentificationType_ldap); 170 $this->request->session()->write("authType", $configuration->authentificationType_ldap);
@@ -249,30 +246,33 @@ class AppController extends Controller @@ -249,30 +246,33 @@ class AppController extends Controller
249 246
250 switch ($action) { 247 switch ($action) {
251 case 'add': 248 case 'add':
252 - $actionFrench = ['Création', 'créé']; 249 + $actionFrench = ['Création d\'un ', 'été créé'];
253 break; 250 break;
254 case 'edit': 251 case 'edit':
255 - $actionFrench = ['Modification', 'modifié']; 252 + $actionFrench = ['Modification d\'un ', 'été modifié'];
256 break; 253 break;
257 case 'delete': 254 case 'delete':
258 - $actionFrench = ['Suppression', 'supprimé']; 255 + $actionFrench = ['Suppression d\'un ', 'été supprimé'];
259 break; 256 break;
260 case 'statusValidated': 257 case 'statusValidated':
261 - $actionFrench = ['Validation', 'validé']; 258 + $actionFrench = ['Validation d\'un ', 'été validé'];
262 break; 259 break;
263 case 'statusToBeArchived': 260 case 'statusToBeArchived':
264 - $actionFrench = ['Demande Archivage', 'demandé pour archivage']; 261 + $actionFrench = ['Demande Archivage d\'un ', 'été demandé pour archivage'];
265 break; 262 break;
266 case 'statusArchived': 263 case 'statusArchived':
267 - $actionFrench = ['Archivage', 'archivé']; 264 + $actionFrench = ['Archivage d\'un ', 'été archivé'];
  265 + break;
  266 + case 'setLabelIsPlaced':
  267 + $actionFrench = ['Etiquette posé sur un ', 'reçu une étiquette'];
268 break; 268 break;
269 default: 269 default:
270 - $actionFrench = [$action, $action]; 270 + $actionFrench = [$action.' d\'un ', 'été '.$action];
271 break; 271 break;
272 } 272 }
273 $doneBy = $userName." (".$userEmail.", login=".$userAuth.", profil=".$role.")."; 273 $doneBy = $userName." (".$userEmail.", login=".$userAuth.", profil=".$role.").";
274 274
275 - $subject = $actionFrench[0]." d'un " .$controller; 275 + $subject = $actionFrench[0].$controller;
276 276
277 if($id != null) { 277 if($id != null) {
278 $entityName = TableRegistry::get($modelName)->find('all')->where(['id =' => $id])->first(); 278 $entityName = TableRegistry::get($modelName)->find('all')->where(['id =' => $id])->first();
@@ -291,7 +291,7 @@ class AppController extends Controller @@ -291,7 +291,7 @@ class AppController extends Controller
291 $entityName = NULL; 291 $entityName = NULL;
292 } 292 }
293 293
294 - $message = $this->getArticle().$controller." ".$entityName." (id=".$id.") a été ".$actionFrench[1]." par ".$doneBy; 294 + $message = $this->getArticle().$controller." ".$entityName." (id=".$id.") a ".$actionFrench[1]." par ".$doneBy;
295 295
296 $this->sendEmailToManagementWith($subject, $message); 296 $this->sendEmailToManagementWith($subject, $message);
297 297
src/Controller/DocumentsController.php
@@ -36,10 +36,33 @@ class DocumentsController extends AppController @@ -36,10 +36,33 @@ class DocumentsController extends AppController
36 } 36 }
37 } 37 }
38 38
39 - if($action == 'delete') { 39 + if(in_array($action, ['delete', 'edit'])) {
40 if ($this->userHasRole('Administration')) { 40 if ($this->userHasRole('Administration')) {
41 return true; 41 return true;
42 } 42 }
  43 + $u = TableRegistry::get('Users')->find()->where(['username' => $user[$configuration->authentificationType_ldap][0]])->first();
  44 +
  45 + $doc = $this->Documents->get((int)$this->request->params['pass'][0]);
  46 +
  47 + $id = $doc->get('materiel_id');
  48 + if(empty($id)) {
  49 + $id = $doc->get('suivi_id');
  50 + $suiviTable = TableRegistry::get('Suivis');
  51 + if ($role == 'Responsable') {
  52 + return ($suiviTable->exists(['id' => $id, 'groupes_metier_id' => $u['groupes_metier_id']]) || $suiviTable->exists(['id' => $id, 'groupes_thematique_id' => $u['groupe_thematique_id']]));
  53 + }
  54 + if ($role == 'Utilisateur') {
  55 + return $suiviTable->exists(['id' => $id, 'nom_createur' => $user['givenname'][0].' '.$user['sn'][0]]);
  56 + }
  57 + } else {
  58 + $materielTable = TableRegistry::get('Materiels');
  59 + if ($role == 'Responsable') {
  60 + return ($materielTable->exists(['id' => $id, 'groupes_metier_id' => $u['groupes_metier_id']]) || $materielTable->exists(['id' => $id, 'groupes_thematique_id' => $u['groupe_thematique_id']]));
  61 + }
  62 + if ($role == 'Utilisateur') {
  63 + return ($materielTable->exists(['id' => $id, 'nom_createur' => $user['givenname'][0].' '.$user['sn'][0]]) || $materielTable->exists(['id' => $id, 'nom_responsable' => $user['givenname'][0].' '.$user['sn'][0]]));
  64 + }
  65 + }
43 } 66 }
44 67
45 //Pour tout le monde 68 //Pour tout le monde
@@ -101,20 +124,27 @@ class DocumentsController extends AppController @@ -101,20 +124,27 @@ class DocumentsController extends AppController
101 public function add() 124 public function add()
102 { 125 {
103 $document = $this->Documents->newEntity(); 126 $document = $this->Documents->newEntity();
  127 +
104 if ($this->request->is('post')) { 128 if ($this->request->is('post')) {
105 $document = $this->Documents->patchEntity($document, $this->request->data); 129 $document = $this->Documents->patchEntity($document, $this->request->data);
106 130
  131 + $nomType = $this->Documents->TypeDocuments->find()->where(['id =' => $document->type_document_id])->first()['nom'];
  132 +
107 if(isset($this->passedArgs[2]) && $this->passedArgs[2] == 'photo') { 133 if(isset($this->passedArgs[2]) && $this->passedArgs[2] == 'photo') {
108 $document->set('photo', 1); 134 $document->set('photo', 1);
109 } 135 }
110 - 136 +
111 if ($this->Documents->save($document)) { 137 if ($this->Documents->save($document)) {
112 $this->Flash->success(__('Le fichier a bien été ajouté.')); 138 $this->Flash->success(__('Le fichier a bien été ajouté.'));
113 139
  140 + $id = $document->materiel_id;
  141 + if(!empty($id)) {
  142 + $materielTable = TableRegistry::get('Materiels');
  143 + $materiel = $materielTable->get($id);
  144 + }
  145 +
114 if(isset($this->passedArgs[2]) && $this->passedArgs[2] == 'photo') { 146 if(isset($this->passedArgs[2]) && $this->passedArgs[2] == 'photo') {
115 - $materielTable = TableRegistry::get('Materiels');  
116 - $materiel = $materielTable->get($document->materiel_id);  
117 - 147 +
118 $photoIdOld = $materiel->get('photo_id'); 148 $photoIdOld = $materiel->get('photo_id');
119 if(isset($photoIdOld)) { 149 if(isset($photoIdOld)) {
120 $docOld = TableRegistry::get('Documents')->get($photoIdOld); 150 $docOld = TableRegistry::get('Documents')->get($photoIdOld);
@@ -125,11 +155,16 @@ class DocumentsController extends AppController @@ -125,11 +155,16 @@ class DocumentsController extends AppController
125 $materielTable->save($materiel); 155 $materielTable->save($materiel);
126 } 156 }
127 157
  158 + $userName = $this->LdapAuth->user('givenname')[0].' '.$this->LdapAuth->user('sn')[0];
  159 + $userEmail = $this->LdapAuth->user('mail')[0];
  160 +
128 $id = $document->materiel_id; 161 $id = $document->materiel_id;
129 if(empty($id)) { 162 if(empty($id)) {
130 $id = $document->suivi_id; 163 $id = $document->suivi_id;
  164 + $this->sendEmailToManagementWith('[LabInvent] Ajout d\'un document', $userName.' (email = '.$userEmail.') a ajouté un document de type "'.$nomType.'" au suivi "Suivi '.$document->suivi_id.'".');
131 return $this->redirect(['controller' => 'suivis', 'action' => 'view', $id]); 165 return $this->redirect(['controller' => 'suivis', 'action' => 'view', $id]);
132 } else { 166 } else {
  167 + $this->sendEmailToManagementWith('[LabInvent] Ajout d\'un document', $userName.' (email = '.$userEmail.') a ajouté un document de type "'.$nomType.'" au matériel "'.$materiel->designation.'" (id = '.$materiel->id.').');
133 return $this->redirect(['controller' => 'materiels', 'action' => 'view', $id]); 168 return $this->redirect(['controller' => 'materiels', 'action' => 'view', $id]);
134 } 169 }
135 170
@@ -158,6 +193,56 @@ class DocumentsController extends AppController @@ -158,6 +193,56 @@ class DocumentsController extends AppController
158 $this->set('_serialize', ['document']); 193 $this->set('_serialize', ['document']);
159 } 194 }
160 195
  196 + /**
  197 + * EDit method
  198 + *
  199 + * @return \Cake\Network\Response|void Redirects on successful edit, renders view otherwise.
  200 + */
  201 + public function edit($id = null)
  202 + {
  203 + $document = $this->Documents->get($id, [
  204 + 'contain' => []
  205 + ]);
  206 +
  207 + if ($this->request->is(['patch', 'post', 'put'])) {
  208 + $document = $this->Documents->patchEntity($document, $this->request->data);
  209 +
  210 + if ($this->Documents->save($document)) {
  211 + $this->Flash->success(__('Le fichier a bien été edité.'));
  212 +
  213 + $id = $document->materiel_id;
  214 + if(empty($id)) {
  215 + $id = $document->suivi_id;
  216 + return $this->redirect(['controller' => 'suivis', 'action' => 'view', $id]);
  217 + } else {
  218 + return $this->redirect(['controller' => 'materiels', 'action' => 'view', $id]);
  219 + }
  220 +
  221 + } else {
  222 + $this->Flash->error(__('Le fichier n\'a pas pu être edité.'));
  223 + }
  224 + }
  225 +
  226 + $id = $document->materiel_id;
  227 + if(empty($id)) {
  228 + $id = $document->suivi_id;
  229 + $suivi = $this->Documents->Suivis->find('list', [ 'keyField' => 'id', 'valueField' => 'id'])->where(['id =' => $id]);
  230 + $this->set('suivi', $suivi);
  231 + } else {
  232 + $materiel = $this->Documents->Materiels->find('list', [ 'keyField' => 'id', 'valueField' => 'numero_laboratoire'])->where(['id =' => $id]);
  233 + $this->set('materiel', $materiel);
  234 + }
  235 +
  236 + if($document->photo) {
  237 + $this->set('photo', 1);
  238 + }
  239 +
  240 +
  241 + $typesD = $this->Documents->TypeDocuments->find('list', [ 'keyField' => 'id', 'valueField' => 'nom', 'order' => 'TypeDocuments.nom']);
  242 +
  243 + $this->set(compact('document', 'typesD'));
  244 + $this->set('_serialize', ['document']);
  245 + }
161 246
162 /** 247 /**
163 * Delete method 248 * Delete method
src/Controller/MaterielsController.php
@@ -906,16 +906,14 @@ class MaterielsController extends AppController @@ -906,16 +906,14 @@ class MaterielsController extends AppController
906 906
907 if ($this->Materiels->save($materiel, ['checkRules' => false, 'checkExisting' => false])) { 907 if ($this->Materiels->save($materiel, ['checkRules' => false, 'checkExisting' => false])) {
908 $this->Flash->success(__('L\'étiquette a bien été éditer.')); 908 $this->Flash->success(__('L\'étiquette a bien été éditer.'));
909 - $this->sendEmailToManagement($id); 909 + // Envoi email seulement si etiquette posée
  910 + if ($printed) {
  911 + $this->sendEmailToManagement($id);
  912 + }
910 } 913 }
911 else { 914 else {
912 $this->Flash->error(__('L\'étiquette n\'a pas pu être édité.')); 915 $this->Flash->error(__('L\'étiquette n\'a pas pu être édité.'));
913 } 916 }
914 -  
915 - // Envoi email seulement si etiquette posée  
916 - if ($printed) {  
917 - $this->sendEmailToManagementWith('etiquette posée', "Une étiquette a été posée sur le matériel (id=$id)");  
918 - }  
919 917
920 return $this->redirect($this->referer()); 918 return $this->redirect($this->referer());
921 } 919 }
src/Model/Table/AppTable.php
@@ -11,7 +11,7 @@ class AppTable extends Table @@ -11,7 +11,7 @@ class AppTable extends Table
11 11
12 // autoriser les caracteres habituels standards pour un ou plusieurs MOTs 12 // autoriser les caracteres habituels standards pour un ou plusieurs MOTs
13 // accents + - _ / () . , \s (=space) 13 // accents + - _ / () . , \s (=space)
14 - private $string = "a-zA-Z0-9éèàùâêôîôûç%().,\/\s\+\-_"; 14 + private $string = "a-zA-Z0-9éèàùâêôîôûç%().,\/\s\+\-_'";
15 15
16 public function check_string($check) { 16 public function check_string($check) {
17 return (bool) preg_match('/^['.$this->string.']*$/', $check); 17 return (bool) preg_match('/^['.$this->string.']*$/', $check);
src/Model/Table/DocumentsTable.php
@@ -61,8 +61,8 @@ class DocumentsTable extends AppTable @@ -61,8 +61,8 @@ class DocumentsTable extends AppTable
61 ->allowEmpty('type_doc'); 61 ->allowEmpty('type_doc');
62 62
63 $validator 63 $validator
64 - ->notEmpty('chemin_file');  
65 - 64 + ->allowEmpty('chemin_file');
  65 +
66 $validator 66 $validator
67 ->notEmpty('nom'); 67 ->notEmpty('nom');
68 68
@@ -97,30 +97,49 @@ class DocumentsTable extends AppTable @@ -97,30 +97,49 @@ class DocumentsTable extends AppTable
97 $config = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first(); 97 $config = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
98 98
99 $checkSizeDoc= function($entity) { 99 $checkSizeDoc= function($entity) {
100 - $config = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();  
101 - $size = $entity->get('chemin_file')['size'];  
102 - if(isset($size)) {  
103 - if($size > $config->taille_max_doc) {  
104 - return false; 100 + if(!empty($entity->get('chemin_file')['tmp_name'])) {
  101 + $config = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
  102 + $size = $entity->get('chemin_file')['size'];
  103 + if(isset($size)) {
  104 + if($size > $config->taille_max_doc) {
  105 + return false;
  106 + } else {
  107 + return true;
  108 + }
105 } else { 109 } else {
106 - return true; 110 + return false;
107 } 111 }
108 } else { 112 } else {
109 - return false; 113 + return true;
110 } 114 }
111 -  
112 }; 115 };
113 116
114 $checkPhoto= function($entity) { 117 $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 - } 118 + if(!empty($entity->get('chemin_file')['tmp_name'])) {
  119 + if($entity->get('photo')) {
  120 + $extension = strtolower(pathinfo($entity->get('chemin_file')['name'] , PATHINFO_EXTENSION));
  121 + return in_array($extension, ['png', 'jpg', 'jpeg']);
  122 + }
  123 + else {
  124 + return true;
  125 + }
  126 + } else {
  127 + return true;
  128 + }
122 }; 129 };
123 130
  131 + $checkEditFile= function($entity) {
  132 + if(!$entity->get('edit')) {
  133 + if(empty($entity->get('chemin_file')['tmp_name'])) {
  134 + return false;
  135 + }
  136 + else {
  137 + return true;
  138 + }
  139 + } else {
  140 + return true;
  141 + }
  142 + };
124 143
125 $rules->add($checkSizeDoc, [ 144 $rules->add($checkSizeDoc, [
126 'errorField' => 'chemin_file', 145 'errorField' => 'chemin_file',
@@ -132,6 +151,10 @@ class DocumentsTable extends AppTable @@ -132,6 +151,10 @@ class DocumentsTable extends AppTable
132 'message' => 'La photo doit etre au format png, jpg (ou jpeg).' 151 'message' => 'La photo doit etre au format png, jpg (ou jpeg).'
133 ]); 152 ]);
134 153
  154 + $rules->add($checkEditFile, [
  155 + 'errorField' => 'chemin_file',
  156 + 'message' => 'Un fichier doit être présent.'
  157 + ]);
135 158
136 return $rules; 159 return $rules;
137 } 160 }
@@ -154,10 +177,13 @@ class DocumentsTable extends AppTable @@ -154,10 +177,13 @@ class DocumentsTable extends AppTable
154 **/ 177 **/
155 public function beforeSave($event, $entity, $options) 178 public function beforeSave($event, $entity, $options)
156 { 179 {
  180 +
157 $file = $entity->get('chemin_file'); 181 $file = $entity->get('chemin_file');
158 - $extension = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION)); 182 + if(!empty($file['tmp_name'])) {
  183 + $extension = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
  184 + $entity->set('type_doc', $extension);
  185 + }
159 186
160 - $entity->set('type_doc', $extension);  
161 return true; 187 return true;
162 } 188 }
163 189
src/Template/Documents/edit.ctp 0 → 100644
@@ -0,0 +1,46 @@ @@ -0,0 +1,46 @@
  1 +
  2 +<div class="documents form">
  3 + <?= $this->Form->create($document, ['type' => 'file']) ?>
  4 + <fieldset>
  5 + <?php
  6 + if(isset($photo)) {
  7 + echo '<h2><i class="icon-plus"></i> Editer une photo</h2>';
  8 + }else {
  9 + echo '<h2><i class="icon-plus"></i> Editer un document</h2>';
  10 + }
  11 + if(isset($materiel)) {
  12 + echo $this->Form->input('materiel_id', ['label' => 'N° materiel labo', 'options' => $materiel, 'default' => $this->passedArgs[0], 'readonly' => true]);
  13 + }
  14 + else if(isset($suivi)) {
  15 + echo $this->Form->input('suivi_id', ['label' => 'N° suivi', 'options' => $suivi, 'default' => $this->passedArgs[0], 'readonly' => true]);
  16 + }
  17 +
  18 + echo $this->Form->input('nom');
  19 + echo $this->Form->input('type_document_id', ['label' => 'Type', 'options' => $typesD, 'default' => 1]);
  20 + echo $this->Form->input('description');
  21 +
  22 + echo $this->Form->hidden('chemin_file', ['label' => 'Fichier ('.substr($configuration->taille_max_doc/(1024*1024), 0, 4).' Mo max)', 'type' => 'file']);
  23 +
  24 + echo $this->Form->hidden('edit', ['default' => 1]);
  25 +
  26 + if(isset($photo)) {
  27 + echo $this->Form->hidden('photo', ['default' => 1]);
  28 + }
  29 + else {
  30 + echo $this->Form->hidden('photo', ['default' => 0]);
  31 + }
  32 +
  33 +
  34 +
  35 + ?>
  36 + </fieldset>
  37 + <?= $this->Form->submit(__('Valider')) ?>
  38 + <?= $this->Form->end() ?>
  39 +</div>
  40 +
  41 +<div class="actions">
  42 + <?php
  43 + echo $this->element('menu');
  44 + echo $this->element('menu_form', [ 'pluralHumanName' => 'Documents' ]);
  45 + ?>
  46 +</div>
src/Template/Documents/index.ctp
@@ -45,6 +45,8 @@ @@ -45,6 +45,8 @@
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 ]); 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 } 46 }
47 ?> 47 ?>
  48 + <?= $this->Html->link(__('<i class="icon-edit"></i>'), ['action' => 'edit', $document->id], ['title' => 'Editer', 'style' => 'margin: 0 2px', 'escape' => false]) ?>
  49 +
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)]) ?> 50 <?= $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)]) ?>
49 </td> 51 </td>
50 </tr> 52 </tr>
src/Template/Documents/view.ctp
@@ -17,7 +17,9 @@ @@ -17,7 +17,9 @@
17 17
18 $displayElement(__('Nom'), h($document->nom)); 18 $displayElement(__('Nom'), h($document->nom));
19 $displayElement(__('Type'), $document->has('type_document') ? h($document->type_document->nom) : ''); 19 $displayElement(__('Type'), $document->has('type_document') ? h($document->type_document->nom) : '');
20 - $displayElement(__('Description'), h($document->description)); 20 +
  21 + echo '<tr><td><strong>'.__('Description').' </strong></td><td>'.nl2br($document->description).'</td></tr>';
  22 +
21 $displayElement(__('Extension fichier'), h($document->type_doc)); 23 $displayElement(__('Extension fichier'), h($document->type_doc));
22 24
23 25
src/Template/Element/menu_view.ctp
  1 +<?php
  2 +use Cake\ORM\TableRegistry;
  3 +?>
  4 +
1 <h3 style="margin-top: 20px;"><?php echo $pluralHumanName;?></h3> 5 <h3 style="margin-top: 20px;"><?php echo $pluralHumanName;?></h3>
2 <ul> 6 <ul>
3 <?php 7 <?php
@@ -67,6 +71,34 @@ @@ -67,6 +71,34 @@
67 $isAuthorized = true; 71 $isAuthorized = true;
68 } 72 }
69 } 73 }
  74 + else if ($singularHumanName == 'Document') {
  75 + if(in_array($role, ['Administration', 'Administration Plus', 'Super Administrateur'])) {
  76 + $isAuthorized = true;
  77 + }
  78 + $doc = TableRegistry::get('Documents')->get((int)$this->request->params['pass'][0]);
  79 +
  80 + $id = $doc->get('materiel_id');
  81 +
  82 + if(empty($id)) {
  83 + $id = $doc->get('suivi_id');
  84 + $suiviTable = TableRegistry::get('Suivis');
  85 + if ($role == 'Responsable') {
  86 + $isAuthorized = ($suiviTable->exists(['id' => $id, 'groupes_metier_id' => $userConnected['groupes_metier_id']]) || $suiviTable->exists(['id' => $id, 'groupes_thematique_id' => $userConnected['groupe_thematique_id']]));
  87 + }
  88 + if ($role == 'Utilisateur') {
  89 + $isAuthorized = $suiviTable->exists(['id' => $id, 'nom_createur' => $username]);
  90 + }
  91 + } else {
  92 + $materielTable = TableRegistry::get('Materiels');
  93 + if ($role == 'Responsable') {
  94 + $isAuthorized = ($materielTable->exists(['id' => $id, 'groupes_metier_id' => $userConnected['groupes_metier_id']]) || $materielTable->exists(['id' => $id, 'groupes_thematique_id' => $userConnected['groupe_thematique_id']]));
  95 + }
  96 + if ($role == 'Utilisateur') {
  97 + $isAuthorized = ($materielTable->exists(['id' => $id, 'nom_createur' => $username]) || $materielTable->exists(['id' => $id, 'nom_responsable' => $username]));
  98 + }
  99 + }
  100 +
  101 + }
70 else { 102 else {
71 if (in_array($role, ['Administration Plus', 'Super Administrateur'])) { 103 if (in_array($role, ['Administration Plus', 'Super Administrateur'])) {
72 $isAuthorized = true; 104 $isAuthorized = true;
@@ -74,7 +106,6 @@ @@ -74,7 +106,6 @@
74 } 106 }
75 107
76 if ($isAuthorized == true) { 108 if ($isAuthorized == true) {
77 - if($singularHumanName != 'Document') {  
78 $action = ''; 109 $action = '';
79 if(strstr($t, 'catégorie')) 110 if(strstr($t, 'catégorie'))
80 $action = ' Editer cette'; 111 $action = ' Editer cette';
@@ -89,7 +120,6 @@ @@ -89,7 +120,6 @@
89 ['action' => 'edit', $lien], 120 ['action' => 'edit', $lien],
90 ['escape' => false,'onclick' => 'return true;'] 121 ['escape' => false,'onclick' => 'return true;']
91 ); 122 );
92 - }  
93 } 123 }
94 124
95 125
@@ -130,6 +160,33 @@ @@ -130,6 +160,33 @@
130 } 160 }
131 } 161 }
132 } 162 }
  163 + } else if ($singularHumanName == 'Document') {
  164 + if(in_array($role, ['Administration', 'Administration Plus', 'Super Administrateur'])) {
  165 + $isAuthorized = true;
  166 + }
  167 + $doc = TableRegistry::get('Documents')->get((int)$this->request->params['pass'][0]);
  168 +
  169 + $id = $doc->get('materiel_id');
  170 +
  171 + if(empty($id)) {
  172 + $id = $doc->get('suivi_id');
  173 + $suiviTable = TableRegistry::get('Suivis');
  174 + if ($role == 'Responsable') {
  175 + $isAuthorized = ($suiviTable->exists(['id' => $id, 'groupes_metier_id' => $userConnected['groupes_metier_id']]) || $suiviTable->exists(['id' => $id, 'groupes_thematique_id' => $userConnected['groupe_thematique_id']]));
  176 + }
  177 + if ($role == 'Utilisateur') {
  178 + $isAuthorized = $suiviTable->exists(['id' => $id, 'nom_createur' => $username]);
  179 + }
  180 + } else {
  181 + $materielTable = TableRegistry::get('Materiels');
  182 + if ($role == 'Responsable') {
  183 + $isAuthorized = ($materielTable->exists(['id' => $id, 'groupes_metier_id' => $userConnected['groupes_metier_id']]) || $materielTable->exists(['id' => $id, 'groupes_thematique_id' => $userConnected['groupe_thematique_id']]));
  184 + }
  185 + if ($role == 'Utilisateur') {
  186 + $isAuthorized = ($materielTable->exists(['id' => $id, 'nom_createur' => $username]) || $materielTable->exists(['id' => $id, 'nom_responsable' => $username]));
  187 + }
  188 + }
  189 +
133 } 190 }
134 else { 191 else {
135 if (in_array($role, ['Super Administrateur'])) { 192 if (in_array($role, ['Super Administrateur'])) {
@@ -138,17 +195,17 @@ @@ -138,17 +195,17 @@
138 } 195 }
139 196
140 if($isAuthorized == true) { 197 if($isAuthorized == true) {
141 - $action = '';  
142 - if(strstr($t, 'catégorie'))  
143 - $action = ' Supprimer cette';  
144 - elseif ( strstr($t, 'utilisateur') || strstr($t, 'emprunt') )  
145 - $action = ' Supprimer cet';  
146 - else  
147 - $action = ' Supprimer ce'; 198 + $action = '';
  199 + if(strstr($t, 'catégorie'))
  200 + $action = ' Supprimer cette';
  201 + elseif ( strstr($t, 'utilisateur') || strstr($t, 'emprunt') )
  202 + $action = ' Supprimer cet';
  203 + else
  204 + $action = ' Supprimer ce';
148 205
149 - echo $this->Form->postLink('<i class="icon-trash"></i>' . $action . ' ' . $t,  
150 - ['action' => 'delete', $lien],  
151 - ['escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer '.$lien.' ?')]); 206 + echo $this->Form->postLink('<i class="icon-trash"></i>' . $action . ' ' . $t,
  207 + ['action' => 'delete', $lien],
  208 + ['escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer '.$lien.' ?')]);
152 } 209 }
153 210
154 211
src/Template/Layout/default.ctp
@@ -94,7 +94,7 @@ $cakeDescription = &#39;Labinvent 2&#39;; @@ -94,7 +94,7 @@ $cakeDescription = &#39;Labinvent 2&#39;;
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.1.0 (28/06/2016)</font> 97 + <font color="black">VERSION 2.5.2.0 (29/06/2016)</font>
98 </td> 98 </td>
99 </tr> 99 </tr>
100 </table> 100 </table>
src/Template/Materiels/view.ctp
@@ -307,7 +307,8 @@ if (h ( $materiel-&gt;status ) == &#39;ARCHIVED&#39;) @@ -307,7 +307,8 @@ if (h ( $materiel-&gt;status ) == &#39;ARCHIVED&#39;)
307 $type = 'Technique'; 307 $type = 'Technique';
308 } 308 }
309 309
310 - $displayElement ( __ ( 'Description' ), h ( $materiel->description ) ); 310 + echo '<tr><td><strong>'.__('Description').' </strong></td><td>'.nl2br($materiel->description).'</td></tr>';
  311 +
311 $displayElement ( __ ( 'Materiel inventorié' ), $type ); 312 $displayElement ( __ ( 'Materiel inventorié' ), $type );
312 $displayElement ( __ ( 'Organisme' ), $materiel->has ( 'organisme' ) ? h ( $materiel->organisme->nom ) : '' ); 313 $displayElement ( __ ( 'Organisme' ), $materiel->has ( 'organisme' ) ? h ( $materiel->organisme->nom ) : '' );
313 $displayElement ( __ ( 'Domaine' ), $materiel->has ( 'sur_category' ) ? h ( $materiel->sur_category->nom ) : '' ); 314 $displayElement ( __ ( 'Domaine' ), $materiel->has ( 'sur_category' ) ? h ( $materiel->sur_category->nom ) : '' );
@@ -493,6 +494,7 @@ foreach ( $materiel-&gt;emprunts as $emprunts ) : @@ -493,6 +494,7 @@ foreach ( $materiel-&gt;emprunts as $emprunts ) :
493 <?php 494 <?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 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 ?>
  497 + <th style="width: 50px;"><?= __('Editer') ?></th>
496 <th style="width: 50px;"><?= __('Supprimer') ?></th> 498 <th style="width: 50px;"><?= __('Supprimer') ?></th>
497 <?php } ?> 499 <?php } ?>
498 </tr> 500 </tr>
@@ -538,8 +540,11 @@ foreach ( $materiel-&gt;documents as $documents ) : @@ -538,8 +540,11 @@ foreach ( $materiel-&gt;documents as $documents ) :
538 <?php 540 <?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))) { 541 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 ?> 542 ?>
  543 + <td class="actions">
  544 + <?= $this->Html->link(__('<i class="icon-edit"></i>'), ['controller' => 'Documents', 'action' => 'edit', $documents->id], ['escape' => false, 'style' => 'margin:0'])?>
  545 + </td>
541 <td class="actions"> 546 <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)])?> 547 + <?= $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> 548 </td>
544 <?php } ?> 549 <?php } ?>
545 </tr> 550 </tr>
src/Template/Suivis/view.ctp
@@ -66,9 +66,11 @@ @@ -66,9 +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 +
69 <?php 70 <?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 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 ?> 72 ?>
  73 + <th style="width: 50px;"><?= __('Editer') ?></th>
72 <th style="width:50px;"><?= __('Supprimer') ?></th> 74 <th style="width:50px;"><?= __('Supprimer') ?></th>
73 <?php } ?> 75 <?php } ?>
74 </tr> 76 </tr>
@@ -91,6 +93,9 @@ @@ -91,6 +93,9 @@
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)) { 93 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 ?> 94 ?>
93 <td class="actions"> 95 <td class="actions">
  96 + <?= $this->Html->link(__('<i class="icon-edit"></i>'), ['controller' => 'Documents', 'action' => 'edit', $documents->id], ['escape' => false, 'style' => 'margin:0'])?>
  97 + </td>
  98 + <td class="actions">
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)]) ?> 99 <?= $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)]) ?>
95 </td> 100 </td>
96 <?php } ?> 101 <?php } ?>