diff --git a/README-LABINVENT.md b/README-LABINVENT.md index 84b5ff3..040b2bf 100755 --- a/README-LABINVENT.md +++ b/README-LABINVENT.md @@ -50,19 +50,18 @@ Logiciel testé et validé sur les configurations suivantes : VERSION ACTUELLE -Date: 27/06/2016 -Version: 2.5.0.0 +Date: 28/06/2016 +Version: 2.5.1.0 -!!! Se placer dans database/update et exécuter le script ./db-update-2016-06-27.sh !!! +!!! Se placer dans database/update et exécuter le script ./db-update-2016-06-28.sh !!! -Documents + Type documents + Réorganisation configuration générale (view) + Bugfixes (numero de labo, ... ) +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/3789 - https://projects.irap.omp.eu/issues/3762 - https://projects.irap.omp.eu/issues/3791 +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/3790 - https://projects.irap.omp.eu/issues/3716 +Demande (en cours) : https://projects.irap.omp.eu/issues/3716 Version majeure en cours (2.5): https://projects.irap.omp.eu/versions/99 @@ -101,6 +100,10 @@ Liste complète des évolutions: https://gitlab.irap.omp.eu/epallier/labinvent/c MODIFICATIONS STRUCTURELLES A FAIRE MANUELLEMENT APRES LA MISE A JOUR (git pull) +28/06/16 (v2.5.1.0) Se placer dans database/update et exécuter le script ./db-update-2016-06-28.sh + +27/06/16 (v2.5.0.0) Se placer dans database/update et exécuter le script ./db-update-2016-06-27.sh + 24/06/16 (v2.4.7.2) Se placer dans database/update et exécuter le script ./db-update-2016-06-24-2.sh 24/06/16 (v2.4.7.0) Se placer dans database/update et exécuter le script ./db-update-2016-06-24.sh diff --git a/database/labinvent_2.1_12-05-16.sql b/database/labinvent_2.1_12-05-16.sql index dccb249..c16d2be 100755 --- a/database/labinvent_2.1_12-05-16.sql +++ b/database/labinvent_2.1_12-05-16.sql @@ -73,11 +73,11 @@ CREATE TABLE IF NOT EXISTS `documents` ( `id` int(11) NOT NULL AUTO_INCREMENT, `type_doc` varchar(20) DEFAULT NULL, `description` text DEFAULT NULL, - `chemin` varchar(200) DEFAULT NULL, `nom` VARCHAR(100) DEFAULT NULL, `materiel_id` int(11) DEFAULT NULL, `suivi_id` int(11) DEFAULT NULL, `type_document_id` int(11) DEFAULT NULL, + `photo` tinyint(1) DEFAULT NULL, PRIMARY KEY (`id`), KEY `fk_documents_materiel_id` (`materiel_id`), KEY `fk_documents_suivi_id` (`suivi_id`), @@ -182,6 +182,7 @@ CREATE TABLE IF NOT EXISTS `materiels` ( `date_fin_garantie` date DEFAULT NULL, `duree_garantie` int(10) DEFAULT NULL, `unite_duree_garantie` varchar (30) DEFAULT NULL, + `photo_id` int(11) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `numero_irap` (`numero_laboratoire`), KEY `fk_administrative_materials_sub_categories1` (`sous_categorie_id`), @@ -298,7 +299,6 @@ CREATE TABLE `type_documents` ( PRIMARY KEY (`id`) ); -Insert into type_documents(id, nom) values (1, 'N/A'); -- -------------------------------------------------------- -- -- Structure de la table `users` @@ -360,6 +360,7 @@ CREATE TABLE IF NOT EXISTS `configurations` ( `prix_inventaire_administratif` int( 10 ) DEFAULT '800', `numero_labo_sans_annee` tinyint(1) DEFAULT NULL, `date_commande_facultative` tinyint(1) DEFAULT NULL, + `taille_max_doc` int (15) DEFAULT '8000000', PRIMARY KEY (`id`), UNIQUE KEY `nom_UNIQUE` (`nom`) ); @@ -430,10 +431,24 @@ ALTER TABLE `users` Insert into type_suivis(nom) values ('Réparation'); Insert into sites(id, nom) values (9, 'N/A'); +Insert into type_documents(id, nom) values (1, 'N/A'); +Insert into type_documents(nom) values ('Bon de commande'); +Insert into type_documents(nom) values ('Bon de livraison'); +Insert into type_documents(nom) values ('Photo'); +Insert into type_documents(nom) values ('Documentation technique'); +Insert into type_documents(nom) values ('Spécifications'); +Insert into type_documents(nom) values ('CR de maintenance'); +Insert into type_documents(nom) values ('CR d\'étalonnage'); +Insert into type_documents(nom) values ('Suivi de panne'); +Insert into type_documents(nom) values ('Certificat de garantie'); +Insert into type_documents(nom) values ('Certificat de conformité'); +Insert into type_documents(nom) values ('Manuel d\'utilisation'); + -- Insertion par défaut pour la table configuration 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', '', '', ''); + /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; diff --git a/database/update/db-update-2016-06-28.sh b/database/update/db-update-2016-06-28.sh new file mode 100755 index 0000000..e44920c --- /dev/null +++ b/database/update/db-update-2016-06-28.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +# Pour Mac OS recent (10.10, Yosemite), la syntaxe du SED est differente +# Il faut donc faire une copie de ce fichier et transformer les instructions sed a l'interieur +# Pour cela, il suffit d'executer ces 2 lignes : +# cp ce_script.sh ce_script_macosx.sh +# sed -e "s/ -i / -i '' /" -i '' ce_script_macosx.sh + +if [ ! -f ../../config/app.php ] ; then +echo "Vous devez executer ce script depuis le dossier database/update/" +exit 1 +fi + +if [ ! -d "../../webroot/img/photos" ]; then + mkdir ../../webroot/img/photos +fi + + +# Get login, pass, dbname, and hostname +username=$(grep "/\*d\*/'username'" ../../config/app.php | cut -d"'" -f4) +password=$(grep "/\*d\*/'password'" ../../config/app.php | cut -d"'" -f4) +database=$(grep "/\*d\*/'database'" ../../config/app.php | cut -d"'" -f4) +host=$(grep "/\*d\*/'host'" ../../config/app.php | cut -d"'" -f4) + + +cp -p ./script_sql/db-update-2016-06-28.sql ./script_sql/db-update-2016-06-28-build.sql + +# Execute sql update script +sed -e "s/database/$database/" -i ./script_sql/db-update-2016-06-28-build.sql +mysql --user=$username --password=$password -h $host < ./script_sql/db-update-2016-06-28-build.sql + +# Delete cakephp cache +sudo rm ../../tmp/cache/models/* +sudo rm ../../tmp/cache/persistent/* + +sudo chmod -R 777 ../../tmp +sudo chmod -R 777 ../../vendor +sudo chmod -R 777 ../../webroot diff --git a/database/update/script_sql/db-update-2016-06-28.sql b/database/update/script_sql/db-update-2016-06-28.sql new file mode 100755 index 0000000..063b560 --- /dev/null +++ b/database/update/script_sql/db-update-2016-06-28.sql @@ -0,0 +1,20 @@ +use database; + +ALTER TABLE `materiels` ADD `photo_id` int(11) DEFAULT NULL; + +ALTER TABLE `configurations` ADD `taille_max_doc` int (15) DEFAULT '8000000'; + +ALTER TABLE `documents` ADD `photo` tinyint(1) DEFAULT NULL; + +Insert into type_documents(nom) values ('Bon de commande'); +Insert into type_documents(nom) values ('Bon de livraison'); +Insert into type_documents(nom) values ('Photo'); +Insert into type_documents(nom) values ('Documentation technique'); +Insert into type_documents(nom) values ('Spécifications'); +Insert into type_documents(nom) values ('CR de maintenance'); +Insert into type_documents(nom) values ('CR d\'étalonnage'); +Insert into type_documents(nom) values ('Suivi de panne'); + +Insert into type_documents(nom) values ('Certificat de garantie'); +Insert into type_documents(nom) values ('Certificat de conformité'); +Insert into type_documents(nom) values ('Manuel d\'utilisation'); diff --git a/install/installation.sh b/install/installation.sh index 8b4700a..635c403 100755 --- a/install/installation.sh +++ b/install/installation.sh @@ -98,6 +98,9 @@ fi if [ ! -d "./webroot/img/qrcodes" ]; then mkdir ./webroot/img/qrcodes fi +if [ ! -d "./webroot/img/photos" ]; then + mkdir ./webroot/img/photos +fi if [ ! -d "./vendor/phpunit" ]; then ./composer.phar require --dev phpunit/phpunit diff --git a/src/Controller/DocumentsController.php b/src/Controller/DocumentsController.php index 096839e..de5b3d4 100755 --- a/src/Controller/DocumentsController.php +++ b/src/Controller/DocumentsController.php @@ -35,9 +35,17 @@ class DocumentsController extends AppController return true; } } + + if($action == 'delete') { + if ($this->userHasRole('Administration')) { + return true; + } + } //Pour tout le monde if (in_array($action, ['view', 'add', 'ficheMateriel'])) return true; + + return false; } /** @@ -96,9 +104,27 @@ class DocumentsController extends AppController if ($this->request->is('post')) { $document = $this->Documents->patchEntity($document, $this->request->data); + if(isset($this->passedArgs[2]) && $this->passedArgs[2] == 'photo') { + $document->set('photo', 1); + } + if ($this->Documents->save($document)) { $this->Flash->success(__('Le fichier a bien été ajouté.')); + if(isset($this->passedArgs[2]) && $this->passedArgs[2] == 'photo') { + $materielTable = TableRegistry::get('Materiels'); + $materiel = $materielTable->get($document->materiel_id); + + $photoIdOld = $materiel->get('photo_id'); + if(isset($photoIdOld)) { + $docOld = TableRegistry::get('Documents')->get($photoIdOld); + $this->Documents->delete($docOld); + } + + $materiel->set('photo_id', $document->id); + $materielTable->save($materiel); + } + $id = $document->materiel_id; if(empty($id)) { $id = $document->suivi_id; @@ -120,6 +146,10 @@ class DocumentsController extends AppController $suivi = $this->Documents->Suivis->find('list', [ 'keyField' => 'id', 'valueField' => 'id'])->where(['id =' => $this->passedArgs[0]]); $this->set('suivi', $suivi); } + + if(isset($this->passedArgs[2]) && $this->passedArgs[2] == 'photo') { + $this->set('photo', 1); + } $typesD = $this->Documents->TypeDocuments->find('list', [ 'keyField' => 'id', 'valueField' => 'nom', 'order' => 'TypeDocuments.nom']); @@ -141,6 +171,14 @@ class DocumentsController extends AppController $this->request->allowMethod(['post', 'delete']); $document = $this->Documents->get($id); + if($document->photo) { + $materielTable = TableRegistry::get('Materiels'); + $materiel = $materielTable->get($document->materiel_id); + + $materiel->set('photo_id', null); + $materielTable->save($materiel); + } + if ($this->Documents->delete($document)) { $this->Flash->success(__('Le fichier a bien été supprimé.')); } else { diff --git a/src/Controller/MaterielsController.php b/src/Controller/MaterielsController.php index ff1ad35..8f37a0d 100755 --- a/src/Controller/MaterielsController.php +++ b/src/Controller/MaterielsController.php @@ -217,6 +217,11 @@ class MaterielsController extends AppController $typeSuivis = TableRegistry::get('TypeSuivis'); $typeDocuments = TableRegistry::get('TypeDocuments'); + if($materiel->photo_id != null) { + $imgMateriel = $materiel->photo_id.'.'.TableRegistry::get('Documents')->get($materiel->photo_id)->get('type_doc'); + $this->set('imgMateriel', $imgMateriel); + } + $this->set('sites', $sites); $this->set('typeSuivis', $typeSuivis); $this->set('typeDocuments', $typeDocuments); diff --git a/src/Model/Entity/Configuration.php b/src/Model/Entity/Configuration.php index cd5885a..3f6b6f2 100644 --- a/src/Model/Entity/Configuration.php +++ b/src/Model/Entity/Configuration.php @@ -39,6 +39,7 @@ use Cake\ORM\Entity; * @property bool $date_commande_facultative * @property bool $numero_labo_sans_annee * @property int $prix_inventaire_administratif + * @property int $taille_max_doc */ class Configuration extends Entity { diff --git a/src/Model/Entity/Document.php b/src/Model/Entity/Document.php index 172b966..5f294d6 100755 --- a/src/Model/Entity/Document.php +++ b/src/Model/Entity/Document.php @@ -11,6 +11,7 @@ use Cake\ORM\Entity; * @property string $chemin * @property string $description * @property string $nom + * @property bool $photo * @property int $materiel_id * @property \App\Model\Entity\Materiel $materiel * @property int $suivi_id diff --git a/src/Model/Entity/Materiel.php b/src/Model/Entity/Materiel.php index 4b19ea4..2dca35e 100755 --- a/src/Model/Entity/Materiel.php +++ b/src/Model/Entity/Materiel.php @@ -48,6 +48,7 @@ use Cake\ORM\Entity; * @property int $organisme_id * @property \App\Model\Entity\Organisme $organisme * @property int $site_id + * @property int $photo_id * @property bool $hors_service * @property \App\Model\Entity\Site $site * @property \App\Model\Entity\Document[] $documents diff --git a/src/Model/Table/AppTable.php b/src/Model/Table/AppTable.php index c60072c..32a6535 100644 --- a/src/Model/Table/AppTable.php +++ b/src/Model/Table/AppTable.php @@ -20,7 +20,7 @@ class AppTable extends Table // autoriser les caracteres spéciaux (pour une PHRASE ou paragraphe) : // check_string PLUS ces symboles ====> & * > < ? % ! : , " ' public function check_string_with_some_special_cars($check) { - return (bool) preg_match('/^['.$this->string.'?%!:,&*><\-\+\="\''.']*$/', $check); + return (bool) preg_match('/^['.$this->string.'?%!:,&#*><\-\+\="\''.']*$/', $check); } public function check_mail($check) { diff --git a/src/Model/Table/ConfigurationsTable.php b/src/Model/Table/ConfigurationsTable.php index f19544e..45c0f5d 100644 --- a/src/Model/Table/ConfigurationsTable.php +++ b/src/Model/Table/ConfigurationsTable.php @@ -80,7 +80,7 @@ class ConfigurationsTable extends AppTable ->notEmpty('labNameShort'); $validator - ->allowEmpty('labPresent'); + ->notEmpty('labPresent'); $validator ->allowEmpty('labUmr'); @@ -136,7 +136,10 @@ class ConfigurationsTable extends AppTable ->allowEmpty('test'); $validator - ->allowEmpty('prix_inventaire_administratif'); + ->notEmpty('prix_inventaire_administratif'); + + $validator + ->notEmpty('taille_max_doc'); $validator ->allowEmpty('date_commande_facultative'); diff --git a/src/Model/Table/DocumentsTable.php b/src/Model/Table/DocumentsTable.php index a567b4b..98685fb 100755 --- a/src/Model/Table/DocumentsTable.php +++ b/src/Model/Table/DocumentsTable.php @@ -6,6 +6,7 @@ use Cake\ORM\Query; use Cake\ORM\RulesChecker; use Cake\ORM\Table; use Cake\Validation\Validator; +use Cake\ORM\TableRegistry; /** * Documents Model @@ -73,6 +74,9 @@ class DocumentsTable extends AppTable $validator ->allowEmpty('materiel_id'); + + $validator + ->allowEmpty('photo'); $validator ->allowEmpty('suivi_id'); @@ -90,10 +94,13 @@ class DocumentsTable extends AppTable */ public function buildRules(RulesChecker $rules) { + $config = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first(); + $checkSizeDoc= function($entity) { + $config = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first(); $size = $entity->get('chemin_file')['size']; if(isset($size)) { - if($size > 1000000) { + if($size > $config->taille_max_doc) { return false; } else { return true; @@ -104,11 +111,28 @@ class DocumentsTable extends AppTable }; + $checkPhoto= function($entity) { + if($entity->get('photo')) { + $extension = strtolower(pathinfo($entity->get('chemin_file')['name'] , PATHINFO_EXTENSION)); + return in_array($extension, ['png', 'jpg', 'jpeg']); + } + else { + return true; + } + }; + + $rules->add($checkSizeDoc, [ 'errorField' => 'chemin_file', - 'message' => 'Le fichier ne peut pas avoir une taille supérieur à 8mo.' + 'message' => 'Le fichier ne peut pas avoir une taille supérieur à '.substr($config->taille_max_doc/(1024*1024), 0, 4).' Mo.' ]); + $rules->add($checkPhoto, [ + 'errorField' => 'chemin_file', + 'message' => 'La photo doit etre au format png, jpg (ou jpeg).' + ]); + + return $rules; } @@ -144,7 +168,12 @@ class DocumentsTable extends AppTable $file = $entity->get('chemin_file'); if(!empty($file['tmp_name'])) { $extension = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION)); - move_uploaded_file($file['tmp_name'], 'files'.DS.$entity->get('id').'.'.$extension); + if($entity->get('photo')) { + move_uploaded_file($file['tmp_name'], 'img'.DS.'photos'.DS.$entity->get('id').'.'.$extension); + } + else { + move_uploaded_file($file['tmp_name'], 'files'.DS.$entity->get('id').'.'.$extension); + } } } @@ -154,8 +183,12 @@ class DocumentsTable extends AppTable **/ public function afterDelete($event, $entity, $options) { $nomFichier = $entity->get('id').'.'.$entity->get('type_doc'); - unlink('files'.DS.$nomFichier); - + if($entity->get('photo')) { + unlink('img'.DS.'photos'.DS.$nomFichier); + } + else { + unlink('files'.DS.$nomFichier); + } } } diff --git a/src/Model/Table/MaterielsTable.php b/src/Model/Table/MaterielsTable.php index 9a0469e..0bbcc35 100755 --- a/src/Model/Table/MaterielsTable.php +++ b/src/Model/Table/MaterielsTable.php @@ -165,6 +165,9 @@ class MaterielsTable extends AppTable ->allowEmpty('date_archivage'); $validator + ->allowEmpty('photo_id'); + + $validator ->boolean('etiquette') ->allowEmpty('etiquette'); diff --git a/src/Template/Configurations/edit.ctp b/src/Template/Configurations/edit.ctp index 3047592..1aa5d03 100644 --- a/src/Template/Configurations/edit.ctp +++ b/src/Template/Configurations/edit.ctp @@ -5,48 +5,83 @@
'; + echo ''; + echo 'Modes'; + echo ''; + echo '
'; + echo $this->Form->input('mode_install'); + echo $this->Form->input('mode_debug'); + echo '
'; + + + echo '

'; + echo ''; + echo 'Laboratoire'; + echo '

'; + echo '
'; + echo $this->Form->input('labName', ['label' => 'Nom complet du Labo']); + echo $this->Form->input('labNameShort', ['label' => 'Nom court du Labo']); + echo $this->Form->input('labPresent', ['label' => 'Liaison présentation nom du Labo']); + echo $this->Form->input('labUmr', ['label' => 'UMR du Labo']); + echo '
'; + + echo '

'; + echo ''; + echo 'Divers'; + echo '

'; + echo '
'; + echo $this->Form->input('hasPrinter', ['label' => 'Imprimante disponible']); + + echo $this->Form->input('numero_labo_sans_annee', ['label' => 'Numero labo sans année']); + echo $this->Form->input('date_commande_facultative', ['label' => 'Champ date commande non obligatoire']); + + echo $this->Form->input('prix_inventaire_administratif', ['label' => 'Seuil (prix) Matériel administratif']); + echo $this->Form->input('taille_max_doc', ['label' => 'Taille max documents (octets)']); + + echo $this->Form->input('nom_groupe_thematique', ['label' => 'Label groupe thématique']); + echo $this->Form->input('nom_groupe_metier', ['label' => 'Label groupe métier']); + + + echo '
'; + + + echo '

'; + echo ''; + echo 'Emails'; + echo '

'; + echo '
'; + echo $this->Form->input('envoi_mail_management_dev', ['label' => 'Ne pas envoyer les mails de management en local']); + echo $this->Form->input('sender_mail', ['label' => 'Attribut "sender" (mail)']); + echo $this->Form->input('emailGuest1', ['label' => 'Mail guest 1']); + echo $this->Form->input('emailGuest2', ['label' => 'Mail guest 2']); + echo $this->Form->input('emailGuest3', ['label' => 'Mail guest 3']); + echo $this->Form->input('emailGuest4', ['label' => 'Mail guest 4']); + echo $this->Form->input('emailGuest5', ['label' => 'Mail guest 5']); + echo $this->Form->input('emailGuest6', ['label' => 'Mail guest 6']); + echo $this->Form->input('emailGuest7', ['label' => 'Mail guest 7']); + echo $this->Form->input('emailGuest8', ['label' => 'Mail guest 8']); + echo $this->Form->input('emailGuest9', ['label' => 'Mail guest 9']); + echo $this->Form->input('emailGuest10', ['label' => 'Mail guest 10']); + echo '
'; + + + echo '

'; + echo ''; + echo 'LDAP'; + echo '

'; + echo '
'; + echo $this->Form->input('use_ldap', ['label' => 'Utilisation du LDAP', 'onchange' => 'display_ldap();']); + echo '
'; + echo $this->Form->input('host_ldap', ['label' => 'Host du LDAP']); + echo $this->Form->input('port_ldap', ['label' => 'Port du LDAP']); + echo $this->Form->input('authentificationType_ldap', ['label' => 'Type d\'authentification du LDAP']); + echo $this->Form->input('baseDn_ldap', ['label' => 'Base DN du LDAP']); + echo $this->Form->input('filter_ldap', ['label' => 'Filtre du LDAP']); + echo '
'; + echo '
'; - echo $this->Form->input('mode_install'); - echo $this->Form->input('mode_debug'); - - echo $this->Form->input('hasPrinter', ['label' => 'Imprimante disponible']); - - echo $this->Form->input('labName', ['label' => 'Nom complet du Labo']); - echo $this->Form->input('labNameShort', ['label' => 'Nom court du Labo']); - echo $this->Form->input('labPresent', ['label' => 'Liaison présentation nom du Labo']); - echo $this->Form->input('labUmr', ['label' => 'UMR du Labo']); - - echo $this->Form->input('nom_groupe_thematique', ['label' => 'Label groupe thématique']); - echo $this->Form->input('nom_groupe_metier', ['label' => 'Label groupe métier']); - - echo $this->Form->input('prix_inventaire_administratif', ['label' => 'Seuil (prix) Matériel administratif']); - - - echo $this->Form->input('envoi_mail_management_dev', ['label' => 'Ne pas envoyer les mails de management en local']); - echo $this->Form->input('sender_mail', ['label' => 'Attribut "sender" (mail)']); - echo $this->Form->input('emailGuest1', ['label' => 'Mail guest 1']); - echo $this->Form->input('emailGuest2', ['label' => 'Mail guest 2']); - echo $this->Form->input('emailGuest3', ['label' => 'Mail guest 3']); - echo $this->Form->input('emailGuest4', ['label' => 'Mail guest 4']); - echo $this->Form->input('emailGuest5', ['label' => 'Mail guest 5']); - echo $this->Form->input('emailGuest6', ['label' => 'Mail guest 6']); - echo $this->Form->input('emailGuest7', ['label' => 'Mail guest 7']); - echo $this->Form->input('emailGuest8', ['label' => 'Mail guest 8']); - echo $this->Form->input('emailGuest9', ['label' => 'Mail guest 9']); - echo $this->Form->input('emailGuest10', ['label' => 'Mail guest 10']); - - echo $this->Form->input('numero_labo_sans_annee', ['label' => 'Numero labo sans année']); - echo $this->Form->input('date_commande_facultative', ['label' => 'Champ date commande non obligatoire']); - - echo $this->Form->input('use_ldap', ['label' => 'Utilisation du LDAP', 'onchange' => 'display_ldap();']); - echo '
'; - echo $this->Form->input('host_ldap', ['label' => 'Host du LDAP']); - echo $this->Form->input('port_ldap', ['label' => 'Port du LDAP']); - echo $this->Form->input('authentificationType_ldap', ['label' => 'Type d\'authentification du LDAP']); - echo $this->Form->input('baseDn_ldap', ['label' => 'Base DN du LDAP']); - echo $this->Form->input('filter_ldap', ['label' => 'Filtre du LDAP']); - echo '
'; ?>
Form->submit(__('Valider')) ?> diff --git a/src/Template/Configurations/view.ctp b/src/Template/Configurations/view.ctp index 09af3d5..87723e0 100644 --- a/src/Template/Configurations/view.ctp +++ b/src/Template/Configurations/view.ctp @@ -86,6 +86,7 @@ echo ''; $displayElement(__('Imprimante disponible'), $print); $displayElement(__('Seuil (prix) Matériel administratif'), h($configurationObj->prix_inventaire_administratif)); + $displayElement(__('Taille max documents (octets)'), substr($configurationObj->taille_max_doc/(1024*1024), 0, 4).' Mo'); $displayElement(__('Numero labo sans année'), $numLab); $displayElement(__('Champ date commande non obligatoire'), $dateObl); $displayElement(__('Label groupe thématique'), h($configurationObj->nom_groupe_thematique)); diff --git a/src/Template/Documents/add.ctp b/src/Template/Documents/add.ctp index 3c23e36..abbea25 100755 --- a/src/Template/Documents/add.ctp +++ b/src/Template/Documents/add.ctp @@ -2,8 +2,12 @@
Form->create($document, ['type' => 'file']) ?>
-

Lier un document

- Lier une photo'; + }else { + echo '

Lier un document

'; + } if(isset($materiel)) { echo $this->Form->input('materiel_id', ['label' => 'N° materiel labo', 'options' => $materiel, 'default' => $this->passedArgs[0], 'readonly' => true]); } @@ -13,9 +17,17 @@ echo $this->Form->input('nom'); echo $this->Form->input('type_document_id', ['label' => 'Type', 'options' => $typesD, 'default' => 1]); - echo $this->Form->input('description'); - echo $this->Form->input('chemin_file', ['label' => 'Fichier (10 Mo max)', 'type' => 'file']); + echo $this->Form->input('chemin_file', ['label' => 'Fichier ('.substr($configuration->taille_max_doc/(1024*1024), 0, 4).' Mo max)', 'type' => 'file']); + + + if(isset($photo)) { + echo $this->Form->hidden('photo', ['default' => 1]); + } + else { + echo $this->Form->hidden('photo', ['default' => 0]); + } + ?> diff --git a/src/Template/Documents/index.ctp b/src/Template/Documents/index.ctp index 3d76466..46bf87f 100755 --- a/src/Template/Documents/index.ctp +++ b/src/Template/Documents/index.ctp @@ -9,11 +9,18 @@ Paginator->sort('suivi_id', 'Suivi') ?> Paginator->sort('type_document_id', 'Type') ?> Paginator->sort('type_doc', 'Extension fichier') ?> + Paginator->sort('photo', 'Photo') ?> - + photo) { + $p = 'Oui'; + } else { + $p = ''; + } + ?> Html->link($document->nom, ['action' => 'view', $document->id]) ?> @@ -27,14 +34,21 @@ has('type_document') ? h($document->type_document->nom) : '' ?> type_doc) ?> + Html->link(__(''), ['action' => 'view', $document->id], ['title' => 'Visualiser', 'style' => 'margin: 0 2px', 'escape' => false ]) ?> - Form->postLink(__(''), '/webroot/files/'.$document->id.'.'.$document->type_doc, ['title' => 'Télécharger', 'style' => 'margin: 0 2px', 'escape' => false ]) ?> + photo) { + echo $this->Form->postLink(__(''), '/webroot/img/photos/'.$document->id.'.'.$document->type_doc, ['title' => 'Télécharger', 'style' => 'margin: 0 2px', 'escape' => false ]); + }else { + echo $this->Form->postLink(__(''), '/webroot/files/'.$document->id.'.'.$document->type_doc, ['title' => 'Télécharger', 'style' => 'margin: 0 2px', 'escape' => false ]); + } + ?> Form->postLink(__(''), ['action' => 'delete', $document->id], ['title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $document->id)]) ?> - + diff --git a/src/Template/Documents/view.ctp b/src/Template/Documents/view.ctp index 8594c28..50ac248 100755 --- a/src/Template/Documents/view.ctp +++ b/src/Template/Documents/view.ctp @@ -20,7 +20,13 @@ $displayElement(__('Description'), h($document->description)); $displayElement(__('Extension fichier'), h($document->type_doc)); - echo 'FichierTélécharger fichier'; + + if($document->photo) { + echo 'FichierTélécharger fichier'; + }else { + echo 'FichierTélécharger fichier'; + } + diff --git a/src/Template/Layout/default.ctp b/src/Template/Layout/default.ctp index 7d235ca..59568bc 100755 --- a/src/Template/Layout/default.ctp +++ b/src/Template/Layout/default.ctp @@ -94,7 +94,7 @@ $cakeDescription = 'Labinvent 2'; - VERSION 2.5.0.0 (27/06/2016) + VERSION 2.5.1.0 (28/06/2016) diff --git a/src/Template/Materiels/view.ctp b/src/Template/Materiels/view.ctp index aa5f89f..9be12d0 100755 --- a/src/Template/Materiels/view.ctp +++ b/src/Template/Materiels/view.ctp @@ -1,392 +1,566 @@
-

- status) == 'ARCHIVED') echo ' '; - $panne = ''; - if(h($materiel->hors_service)) { - $panne = ' (HORS SERVICE)'; - } - ?> +

+ status ) == 'ARCHIVED') + echo ' '; + $panne = ''; + if (h ( $materiel->hors_service )) { + $panne = ' (HORS SERVICE)'; + } + ?> designation).$panne?> - numero_laboratoire) ?> + numero_laboratoire)?> status) == 'ARCHIVED') echo ' (Archivé)'; ?> - request->session()->write("qrUrl", $this->request->env('SERVER_NAME').$this->request->env('REQUEST_URI')); - - $this->requestAction('/QrCodes/creer/'); - echo $this->Html->image('qrcodes/'.$this->request->session()->read("filename"), [ - 'alt' => 'QrCode : '.$materiel->numero_laboratoire, - 'style' => 'float: right']); - - ?> -

- -
- status, ['CREATED', 'VALIDATED'])) { - 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))) { - echo $this->Html->link(__(' Editer ce matériel'), - ['action' => 'edit', $materiel->id], - ['escape' => false, - 'onclick' => 'return true;', - 'style' => 'margin-right: 10px' - ]); - } - }else { - if(in_array($role, ['Administration Plus', 'Super Administrateur'])) { - echo $this->Html->link(__(' Editer ce matériel'), - ['action' => 'edit', $materiel->id], - ['escape' => false, - 'onclick' => 'return true;', - 'style' => 'margin-right: 10px' - ]); - } - } - - if($materiel->status == 'VALIDATED') { - // BOUTON NOUVEAU SUIVI - echo $this->Html->link(' Nouv. Suivi', - ['controller' => 'suivis', - 'action' => 'add', - $materiel->id], - ['title' => 'Faire un nouveau suivi de ce matériel', - 'style' => 'margin-right: 10px', - 'escape' => false] - ); // End link - - // BOUTON NOUVEL EMPRUNT - echo $this->Html->link(' Nouv. Emprunt', - ['controller' => 'emprunts', - 'action' => 'add', - $materiel->id], - ['title' => 'Faire un nouvel emprunt de ce matériel', - 'style' => 'margin-right: 10px', - 'escape' => false] - ); // End link - - + +
+
+ Html->image ( 'photos/' . $imgMateriel, [ + 'alt' => 'Photo matériel', + 'style' => 'max-width: 300px; text-align: center;' + ] ); + } + + // Url transformé en QrCode + $this->request->session ()->write ( "qrUrl", $this->request->env ( 'SERVER_NAME' ) . $this->request->env ( 'REQUEST_URI' ) ); + + $this->requestAction ( '/QrCodes/creer/' ); + echo $this->Html->image ( 'qrcodes/' . $this->request->session ()->read ( "filename" ), [ + 'alt' => 'QrCode : ' . $materiel->numero_laboratoire, + 'style' => 'float: right' + ] ); + echo '
'; + ?> +
- } - - echo $this->Html->link(' Lier un Doc.', - ['controller' => 'documents', - 'action' => 'add', - $materiel->id, 'mat'], - ['title' => 'Attacher un Doc. à ce matériel', - 'style' => 'margin-right: 10px', - 'escape' => false] - ); - - - if(in_array($role, ['Administration', 'Administration Plus', 'Super Administrateur'])) { - if (($materiel->status == 'VALIDATED') || ($materiel->status == 'CREATED')) { - echo $this->Html->link(' Doc. admission', - ['controller' => 'documents', 'action' => 'admission', $materiel->numero_laboratoire], - ['title' => 'Voir le document d\'admission', 'style' => 'margin-right: 10px', 'escape' => false]); - } - // Doc sortie (admin only) - else if (($materiel->status == 'ARCHIVED') || ($materiel->status == 'TOBEARCHIVED')) { - echo $this->Html->link(' Doc. sortie', - ['controller' => 'documents', 'action' => 'sortie', $materiel->numero_laboratoire], - ['title' => 'Voir le document de sortie', 'style' => 'margin-right: 10px', 'escape' => false]); - } - } - - 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))) { - // 2) Bouton de changement de statut : Valider, Demander archivage, ou Archiver - switch ($materiel->status) { - case "CREATED": - echo $this->Html->link(' Valider', - ['action' => 'statusValidated', $materiel->id, 'view'], - ['title' => 'Valider le matériel', 'style' => 'margin-right: 10px', 'escape' => false]); - break; - - case "VALIDATED": - echo $this->Html->link(' Demander sortie', - ['action' => 'statusToBeArchived', $materiel->id, 'view'], - ['title' => 'Demander la sortie de l\'inventaire', 'style' => 'margin-right: 10px', 'escape' => false]); - break; - - case "TOBEARCHIVED": - if($role != 'Responsable'&& $role != 'Super Administrateur') { - echo $this->Html->link(' Sortie inventaire', - ['action' => 'statusArchived', $materiel->id, 'view'], - ['title' => 'Sortir définitivement de l\'inventaire', 'style' => 'margin-right: 10px', 'escape' => false, - 'confirm' => 'Êtes-vous sur de bien vouloir archiver ' . $materiel->designation . ' ?']); - } - break; - - } // switch - } - - echo $this->Html->link(' Copier ce matériel', - ['controller' => 'materiels', - 'action' => 'add', $materiel->id], - ['title' => 'Copier ce matériel', - 'style' => 'margin-right: 10px; margin-top: 10px; display: inline-block', - 'escape' => false]); - - - echo $this->Html->link(' Fiche matériel', - ['controller' => 'documents', 'action' => 'ficheMateriel', $materiel->numero_laboratoire], - ['title' => 'Voir la fiche du materiel', 'style' => 'margin-right: 10px', 'escape' => false]); - - // BOUTON ETIQUETTE POSEE - if ($configuration->hasPrinter && in_array($role, ['Administration', 'Administration Plus', 'Super Administrateur'])) { - echo '
'; - - $action = 'Impr. ruban'; - echo $this->Html->link(' '.$action, - ['action' => 'printLabelRuban', h($materiel->id), 'view'], - ['title' => 'Imprimer sur un ruban 12mm', - 'style' => 'margin-right: 10px', - 'escape' => false, - 'onclick' => 'return true;' - ]); // End link - - - echo $this->Html->link( - ' '. - (h($materiel->etiquette) ? "Etiquette NON posée sur le matériel" : "Etiquette posée sur le matériel"), - ['controller' => 'materiels', - 'action' => h($materiel->etiquette) ?'setLabelIsNotPlaced':'setLabelIsPlaced', h($materiel->id), 'view'], - ['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", - 'style' => 'margin-left: 0px', - 'escape' => false] - ); // End link - - - echo '
'; - } - - - ?> +
+ status, [ + 'CREATED', + 'VALIDATED' + ] )) { + 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))) { + echo $this->Html->link ( __ ( ' Editer ce matériel' ), [ + 'action' => 'edit', + $materiel->id + ], [ + 'escape' => false, + 'onclick' => 'return true;', + 'style' => 'margin-right: 10px' + ] ); + } + } else { + if (in_array ( $role, [ + 'Administration Plus', + 'Super Administrateur' + ] )) { + echo $this->Html->link ( __ ( ' Editer ce matériel' ), [ + 'action' => 'edit', + $materiel->id + ], [ + 'escape' => false, + 'onclick' => 'return true;', + 'style' => 'margin-right: 10px' + ] ); + } + } + + if ($materiel->status == 'VALIDATED') { + // BOUTON NOUVEAU SUIVI + echo $this->Html->link ( ' Nouv. Suivi', [ + 'controller' => 'suivis', + 'action' => 'add', + $materiel->id + ], [ + 'title' => 'Faire un nouveau suivi de ce matériel', + 'style' => 'margin-right: 10px', + 'escape' => false + ] ); // End link + + // BOUTON NOUVEL EMPRUNT + echo $this->Html->link ( ' Nouv. Emprunt', [ + 'controller' => 'emprunts', + 'action' => 'add', + $materiel->id + ], [ + 'title' => 'Faire un nouvel emprunt de ce matériel', + 'style' => 'margin-right: 10px', + 'escape' => false + ] ); // End link + } + + 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))) { + + echo $this->Html->link ( ' Lier un Doc.', [ + 'controller' => 'documents', + 'action' => 'add', + $materiel->id, + 'mat' + ], [ + 'title' => 'Attacher un Doc. à ce matériel', + 'style' => 'margin-right: 10px', + 'escape' => false + ] ); + + if ($materiel->photo_id != null) { + echo $this->Html->link ( ' Remplacer la photo.', [ + 'controller' => 'documents', + 'action' => 'add', + $materiel->id, + 'mat', + 'photo' + ], [ + 'title' => 'Remplacer la photo de ce matériel', + 'style' => 'margin-right: 10px', + 'escape' => false + ] ); + } else { + echo $this->Html->link ( ' Lier une photo.', [ + 'controller' => 'documents', + 'action' => 'add', + $materiel->id, + 'mat', + 'photo' + ], [ + 'title' => 'Attacher une photo à ce matériel', + 'style' => 'margin-right: 10px', + 'escape' => false + ] ); + } + } + + if (in_array ( $role, [ + 'Administration', + 'Administration Plus', + 'Super Administrateur' + ] )) { + if (($materiel->status == 'VALIDATED') || ($materiel->status == 'CREATED')) { + echo $this->Html->link ( ' Doc. admission', [ + 'controller' => 'documents', + 'action' => 'admission', + $materiel->numero_laboratoire + ], [ + 'title' => 'Voir le document d\'admission', + 'style' => 'margin-right: 10px', + 'escape' => false + ] ); + } // Doc sortie (admin only) + else if (($materiel->status == 'ARCHIVED') || ($materiel->status == 'TOBEARCHIVED')) { + echo $this->Html->link ( ' Doc. sortie', [ + 'controller' => 'documents', + 'action' => 'sortie', + $materiel->numero_laboratoire + ], [ + 'title' => 'Voir le document de sortie', + 'style' => 'margin-right: 10px', + 'escape' => false + ] ); + } + } + + 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))) { + // 2) Bouton de changement de statut : Valider, Demander archivage, ou Archiver + switch ($materiel->status) { + case "CREATED" : + echo $this->Html->link ( ' Valider', [ + 'action' => 'statusValidated', + $materiel->id, + 'view' + ], [ + 'title' => 'Valider le matériel', + 'style' => 'margin-right: 10px', + 'escape' => false + ] ); + break; + + case "VALIDATED" : + echo $this->Html->link ( ' Demander sortie', [ + 'action' => 'statusToBeArchived', + $materiel->id, + 'view' + ], [ + 'title' => 'Demander la sortie de l\'inventaire', + 'style' => 'margin-right: 10px', + 'escape' => false + ] ); + break; + + case "TOBEARCHIVED" : + if ($role != 'Responsable' && $role != 'Super Administrateur') { + echo $this->Html->link ( ' Sortie inventaire', [ + 'action' => 'statusArchived', + $materiel->id, + 'view' + ], [ + 'title' => 'Sortir définitivement de l\'inventaire', + 'style' => 'margin-right: 10px', + 'escape' => false, + 'confirm' => 'Êtes-vous sur de bien vouloir archiver ' . $materiel->designation . ' ?' + ] ); + } + break; + } // switch + } + + echo $this->Html->link ( ' Copier ce matériel', [ + 'controller' => 'materiels', + 'action' => 'add', + $materiel->id + ], [ + 'title' => 'Copier ce matériel', + 'style' => 'margin-right: 10px; margin-top: 10px; display: inline-block', + 'escape' => false + ] ); + + echo $this->Html->link ( ' Fiche matériel', [ + 'controller' => 'documents', + 'action' => 'ficheMateriel', + $materiel->numero_laboratoire + ], [ + 'title' => 'Voir la fiche du materiel', + 'style' => 'margin-right: 10px', + 'escape' => false + ] ); + + // BOUTON ETIQUETTE POSEE + if ($configuration->hasPrinter && in_array ( $role, [ + 'Administration', + 'Administration Plus', + 'Super Administrateur' + ] )) { + echo '
'; + + $action = 'Impr. ruban'; + echo $this->Html->link ( ' ' . $action, [ + 'action' => 'printLabelRuban', + h ( $materiel->id ), + 'view' + ], [ + 'title' => 'Imprimer sur un ruban 12mm', + 'style' => 'margin-right: 10px', + 'escape' => false, + 'onclick' => 'return true;' + ] ); // End link + + echo $this->Html->link ( ' ' . (h ( $materiel->etiquette ) ? "Etiquette NON posée sur le matériel" : "Etiquette posée sur le matériel"), [ + 'controller' => 'materiels', + 'action' => h ( $materiel->etiquette ) ? 'setLabelIsNotPlaced' : 'setLabelIsPlaced', + h ( $materiel->id ), + 'view' + ], [ + '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", + 'style' => 'margin-left: 0px', + 'escape' => false + ] ); // End link + + echo '
'; + } + + ?>
- -

- - Informations -

-
- - - - materiel_administratif) == 1 && h($materiel->materiel_technique) == 1) { - $type = 'Administratif et technique'; - } - else if (h($materiel->materiel_administratif) == 1) { - $type = 'Administratif'; - } - else if (h($materiel->materiel_technique) == 1) { - $type = 'Technique'; - } - - $displayElement(__('Description'), h($materiel->description)); - $displayElement(__('Materiel inventorié'), $type); - $displayElement(__('Organisme'), $materiel->has('organisme') ? h($materiel->organisme->nom) : ''); - $displayElement(__('Domaine'), $materiel->has('sur_category') ? h($materiel->sur_category->nom) : ''); - $displayElement(__('Catégorie'), $materiel->has('category') ? h($materiel->category->nom) : ''); - $displayElement(__('Sous-Catégorie'), $materiel->has('sous_category') ? h($materiel->sous_category->nom) : ''); - - if(h($materiel->etiquette) == 0) { - $etiq="Non"; - }else { - $etiq="Oui"; - } - $displayElement(__('Etiquette posée'), $etiq); - $displayElement(__($configuration->nom_groupe_thematique), $materiel->has('groupes_thematique') ? $this->Html->link($materiel->groupes_thematique->nom, ['controller' => 'GroupesThematiques', 'action' => 'view', $materiel->groupes_thematique->id]) : ''); - $displayElement(__($configuration->nom_groupe_metier), $materiel->has('groupes_metier') ? $this->Html->link($materiel->groupes_metier->nom, ['controller' => 'GroupesMetiers', 'action' => 'view', $materiel->groupes_metier->id]) : ''); - $displayElement(__('Date d\'achat'), h($materiel->date_acquisition)); - - $displayElement(__('Date de reception'), h($materiel->date_reception)); - if(!empty(h($materiel->duree_garntie))) { - $displayElement(__('Duree garantie'), h($materiel->duree_garantie).' '.h($materiel->unite_duree_garantie)); - } - $displayElement(__('Date fin de garantie'), h($materiel->date_fin_garantie)); - - $displayElement(__('Statut'), h($materiel->status)); - if($materiel->status == 'ARCHIVED') { - $displayElement(__('Date d\'archivage'), h($materiel->date_archivage)); - } - $displayElement(__('Prix (HT)'), h($materiel->prix_ht).' €'); - $displayElement(__('Fournisseur'), h($materiel->fournisseur)); - - $displayElement(__('Lieu de stockage'), $materiel->has('site') ? h($materiel->site->nom) : ''); - $displayElement(__('Détail lieu de stockage'), h($materiel->lieu_detail)); - - $displayElement(__('Nom du propriétaire'), $this->Html->link(h($materiel->nom_responsable), 'mailto:'.h($materiel->email_responsable))); - $displayElement(__('N. interne (labo)'), h($materiel->numero_laboratoire)); - - if($role == 'Super Administrateur') { - $displayElement(__('Date création'), h($materiel->created)); - $displayElement(__('Nom du créateur'), h($materiel->nom_createur)); - $displayElement(__('Date modification'), h($materiel->modified)); - $displayElement(__('Nom du modificateur'), h($materiel->nom_modificateur)); - } - - ?> + +

+ Informations +

+
+
+ + + + + + materiel_administratif ) == 1 && h ( $materiel->materiel_technique ) == 1) { + $type = 'Administratif et technique'; + } else if (h ( $materiel->materiel_administratif ) == 1) { + $type = 'Administratif'; + } else if (h ( $materiel->materiel_technique ) == 1) { + $type = 'Technique'; + } + + $displayElement ( __ ( 'Description' ), h ( $materiel->description ) ); + $displayElement ( __ ( 'Materiel inventorié' ), $type ); + $displayElement ( __ ( 'Organisme' ), $materiel->has ( 'organisme' ) ? h ( $materiel->organisme->nom ) : '' ); + $displayElement ( __ ( 'Domaine' ), $materiel->has ( 'sur_category' ) ? h ( $materiel->sur_category->nom ) : '' ); + $displayElement ( __ ( 'Catégorie' ), $materiel->has ( 'category' ) ? h ( $materiel->category->nom ) : '' ); + $displayElement ( __ ( 'Sous-Catégorie' ), $materiel->has ( 'sous_category' ) ? h ( $materiel->sous_category->nom ) : '' ); + + if (h ( $materiel->etiquette ) == 0) { + $etiq = "Non"; + } else { + $etiq = "Oui"; + } + $displayElement ( __ ( 'Etiquette posée' ), $etiq ); + $displayElement ( __ ( $configuration->nom_groupe_thematique ), $materiel->has ( 'groupes_thematique' ) ? $this->Html->link ( $materiel->groupes_thematique->nom, [ + 'controller' => 'GroupesThematiques', + 'action' => 'view', + $materiel->groupes_thematique->id + ] ) : '' ); + $displayElement ( __ ( $configuration->nom_groupe_metier ), $materiel->has ( 'groupes_metier' ) ? $this->Html->link ( $materiel->groupes_metier->nom, [ + 'controller' => 'GroupesMetiers', + 'action' => 'view', + $materiel->groupes_metier->id + ] ) : '' ); + $displayElement ( __ ( 'Date d\'achat' ), h ( $materiel->date_acquisition ) ); + + $displayElement ( __ ( 'Date de reception' ), h ( $materiel->date_reception ) ); + if (! empty ( h ( $materiel->duree_garntie ) )) { + $displayElement ( __ ( 'Duree garantie' ), h ( $materiel->duree_garantie ) . ' ' . h ( $materiel->unite_duree_garantie ) ); + } + $displayElement ( __ ( 'Date fin de garantie' ), h ( $materiel->date_fin_garantie ) ); + + $displayElement ( __ ( 'Statut' ), h ( $materiel->status ) ); + if ($materiel->status == 'ARCHIVED') { + $displayElement ( __ ( 'Date d\'archivage' ), h ( $materiel->date_archivage ) ); + } + $displayElement ( __ ( 'Prix (HT)' ), h ( $materiel->prix_ht ) . ' €' ); + $displayElement ( __ ( 'Fournisseur' ), h ( $materiel->fournisseur ) ); + + $displayElement ( __ ( 'Lieu de stockage' ), $materiel->has ( 'site' ) ? h ( $materiel->site->nom ) : '' ); + $displayElement ( __ ( 'Détail lieu de stockage' ), h ( $materiel->lieu_detail ) ); + + $displayElement ( __ ( 'Nom du propriétaire' ), $this->Html->link ( h ( $materiel->nom_responsable ), 'mailto:' . h ( $materiel->email_responsable ) ) ); + $displayElement ( __ ( 'N. interne (labo)' ), h ( $materiel->numero_laboratoire ) ); + + if ($role == 'Super Administrateur') { + $displayElement ( __ ( 'Date création' ), h ( $materiel->created ) ); + $displayElement ( __ ( 'Nom du créateur' ), h ( $materiel->nom_createur ) ); + $displayElement ( __ ( 'Date modification' ), h ( $materiel->modified ) ); + $displayElement ( __ ( 'Nom du modificateur' ), h ( $materiel->nom_modificateur ) ); + } + + ?>
-
+
- '; + '; echo ''; echo 'Informations administratives'; echo ''; echo '
'; echo ''; echo ''; - - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - - echo '
'.__('CentreFinancier/EOTP').' '.h($materiel->eotp).'
'.__('N° commande').' '.h($materiel->numero_commande).'
'.__('Code comptable').' '.h($materiel->code_comptable).'
'.__('N° de série').' '.h($materiel->numero_serie).'
'.__('N. Inventaire Organisme').' '.h($materiel->numero_inventaire_organisme).'
'.__('N. inventaire (ancien)').' '.h($materiel->numero_inventaire_old).'
'; - echo '
'; - - } - - - ?> + + echo '' . __ ( 'CentreFinancier/EOTP' ) . ' ' . h ( $materiel->eotp ) . ''; + echo '' . __ ( 'N° commande' ) . ' ' . h ( $materiel->numero_commande ) . ''; + echo '' . __ ( 'Code comptable' ) . ' ' . h ( $materiel->code_comptable ) . ''; + echo '' . __ ( 'N° de série' ) . ' ' . h ( $materiel->numero_serie ) . ''; + echo '' . __ ( 'N. Inventaire Organisme' ) . ' ' . h ( $materiel->numero_inventaire_organisme ) . ''; + echo '' . __ ( 'N. inventaire (ancien)' ) . ' ' . h ( $materiel->numero_inventaire_old ) . ''; + + echo ''; + echo '
'; + } + + ?>

- + Suivi(s) du matériel (suivis) ?>)

suivis)) { ?> - - - - - - - - +
+ + + + + + + suivis as $suivis): ?> - - - - + + + + - - +
organisme) ?>date_controle) ?>date_prochain_controle) ?>find()->where(['id =' => h($suivis->type_suivi_id)])->first()['nom']; ?>organisme) ?>date_controle) ?>date_prochain_controle) ?>find()->where(['id =' => h($suivis->type_suivi_id)])->first()['nom']; ?> - Html->link(__(''), ['controller' => 'Suivis', 'action' => 'view', $suivis->id], ['escape' => false, 'style' => 'margin:0']) ?> + + Html->link(__(''), ['controller' => 'Suivis', 'action' => 'view', $suivis->id], ['escape' => false, 'style' => 'margin:0'])?>
- - - + + +

- + Emprunt(s) du matériel (emprunts) ?>)

emprunts)) { ?> - - - - - - - - - - emprunts as $emprunts): - - $type = 'Externe'; - $lieu = $emprunts['laboratoire']; - if ($emprunts['emprunt_interne'] == 1) - { - $type = 'Interne'; - $lieu = $sites->find()->where(['id =' => h($emprunts->site_id)])->first()['nom'].'-'.h($emprunts->e_lieu_detail); - } - ?> +
+ + + + + + + + + emprunts as $emprunts ) : + + $type = 'Externe'; + $lieu = $emprunts ['laboratoire']; + if ($emprunts ['emprunt_interne'] == 1) { + $type = 'Interne'; + $lieu = $sites->find ()->where ( [ + 'id =' => h ( $emprunts->site_id ) + ] )->first () ['nom'] . '-' . h ( $emprunts->e_lieu_detail ); + } + ?> - - - - - + + + + + - - +
nom_emprunteur) ?>date_emprunt) ?>date_retour_emprunt) ?>nom_emprunteur) ?>date_emprunt) ?>date_retour_emprunt) ?> - Html->link(__(''), ['controller' => 'Emprunts', 'action' => 'view', $emprunts->id], ['escape' => false, 'style' => 'margin:0']) ?> + + Html->link(__(''), ['controller' => 'Emprunts', 'action' => 'view', $emprunts->id], ['escape' => false, 'style' => 'margin:0'])?>
+ documents ); + ?> +

- - Fichier(s) lié(s) au matériel (documents) ?>) + + Fichier(s) lié(s) au matériel ()

- documents)) { ?> - - - - - - - - - documents as $documents): - - $type = $typeDocuments->find()->where(['id =' => h($documents->type_document_id)])->first()['nom']; - ?> + +
+ + + + + + + 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))) { + ?> + + + + documents as $documents ) : + + if ($documents->photo) { + $p = 'Oui'; + } else { + $p = ''; + } + $type = $typeDocuments->find ()->where ( [ + 'id =' => h ( $documents->type_document_id ) + ] )->first () ['nom']; + ?> - - + + + - - - - - + 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))) { + ?> + + + +
nom) ?>nom) ?> - Html->link(__(''), ['controller' => 'Documents', 'action' => 'view', $documents->id], ['escape' => false, 'style' => 'margin:0']) ?> - - Html->link(__(''), '/webroot/files/'.$documents->id.'.'.$documents->type_doc, ['title' => 'Télécharger', 'style' => 'margin:0', 'escape' => false ]) ?> + + Html->link(__(''), ['controller' => 'Documents', 'action' => 'view', $documents->id], ['escape' => false, 'style' => 'margin:0'])?> - Form->postLink(__(''), ['controller' => 'Documents', 'action' => 'delete', $documents->id], ['escape' => false, 'style' => 'margin:0']) ?> + + + photo) { + echo $this->Html->link ( __ ( '' ), '/webroot/img/photos/' . $documents->id . '.' . $documents->type_doc, [ + 'title' => 'Télécharger', + 'style' => 'margin:0', + 'escape' => false + ] ); + } else { + echo $this->Html->link ( __ ( '' ), '/webroot/files/' . $documents->id . '.' . $documents->type_doc, [ + 'title' => 'Télécharger', + 'style' => 'margin:0', + 'escape' => false + ] ); + } + ?>
+ Form->postLink(__(''), ['controller' => 'Documents', 'action' => 'delete', $documents->id], ['escape' => false, 'style' => 'margin:0', 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $documents->id)])?> +
-
+ -
- element('menu') ?> - element('menu_view', - [ 'pluralHumanName' => 'Matériels', - 'singularHumanName' => 'Matériel', - 'lien' => $materiel->id ]) ?> +
+ element('menu')?> + element ( 'menu_view', [ + 'pluralHumanName' => 'Matériels', + 'singularHumanName' => 'Matériel', + 'lien' => $materiel->id + ] )?>
\ No newline at end of file diff --git a/src/Template/Suivis/view.ctp b/src/Template/Suivis/view.ctp index 0efaaa9..2a0b611 100755 --- a/src/Template/Suivis/view.ctp +++ b/src/Template/Suivis/view.ctp @@ -66,7 +66,11 @@ + 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)) { + ?> + documents as $documents): @@ -83,9 +87,13 @@ Html->link(__(''), '/webroot/files/'.$documents->id.'.'.$documents->type_doc, ['title' => 'Télécharger', 'style' => 'margin:0', 'escape' => false ]) ?> + 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)) { + ?> - Form->postLink(__(''), ['controller' => 'Documents', 'action' => 'delete', $documents->id], ['escape' => false, 'style' => 'margin:0']) ?> + Form->postLink(__(''), ['controller' => 'Documents', 'action' => 'delete', $documents->id], ['escape' => false, 'style' => 'margin:0', 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $documents->id)]) ?> + diff --git a/tests/Fixture/ConfigurationsFixture.php b/tests/Fixture/ConfigurationsFixture.php index 8677179..079d1bf 100644 --- a/tests/Fixture/ConfigurationsFixture.php +++ b/tests/Fixture/ConfigurationsFixture.php @@ -50,6 +50,7 @@ class ConfigurationsFixture extends TestFixture 'date_commande_facultative' => ['type' => 'boolean', 'length' => null, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null], 'numero_labo_sans_annee' => ['type' => 'boolean', 'length' => null, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null], 'prix_inventaire_administratif' => ['type' => 'integer', 'length' => 10, 'null' => true, 'default' => 800, 'comment' => '', 'precision' => null], + 'taille_max_doc' => ['type' => 'integer', 'length' => 15, 'null' => true, 'default' => 8000000, 'comment' => '', 'precision' => null], '_constraints' => [ 'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []], 'nom_UNIQUE' => ['type' => 'unique', 'columns' => ['nom'], 'length' => []], diff --git a/tests/Fixture/DocumentsFixture.php b/tests/Fixture/DocumentsFixture.php index 01e1ea0..530abeb 100755 --- a/tests/Fixture/DocumentsFixture.php +++ b/tests/Fixture/DocumentsFixture.php @@ -23,7 +23,8 @@ class DocumentsFixture extends TestFixture 'suivi_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], 'nom' => ['type' => 'string', 'length' => 100, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null, 'fixed' => null], 'type_document_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => true, 'default' => '1', 'comment' => '', 'precision' => null, 'autoIncrement' => null], - '_indexes' => [ + 'photo' => ['type' => 'boolean', 'length' => null, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null], + '_indexes' => [ 'fk_documents_materiel_id' => ['type' => 'index', 'columns' => ['materiel_id'], 'length' => []], 'fk_documents_suivi_id' => ['type' => 'index', 'columns' => ['suivi_id'], 'length' => []], 'fk_documents_type_documents_id' => ['type' => 'index', 'columns' => ['type_document_id'], 'length' => []], diff --git a/tests/Fixture/MaterielsFixture.php b/tests/Fixture/MaterielsFixture.php index fef445a..c0be5d1 100755 --- a/tests/Fixture/MaterielsFixture.php +++ b/tests/Fixture/MaterielsFixture.php @@ -53,6 +53,7 @@ class MaterielsFixture extends TestFixture 'date_reception' => ['type' => 'date', 'length' => null, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null], 'organisme_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], 'site_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => true, 'default' => '1', 'comment' => '', 'precision' => null, 'autoIncrement' => null], + 'photo_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], 'hors_service' => ['type' => 'boolean', 'length' => null, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null], '_indexes' => [ 'fk_administrative_materials_sub_categories1' => ['type' => 'index', 'columns' => ['sous_categorie_id'], 'length' => []], diff --git a/webroot/img/.gitignore b/webroot/img/.gitignore index e579d6d..561dee9 100755 --- a/webroot/img/.gitignore +++ b/webroot/img/.gitignore @@ -1 +1,2 @@ /qrcodes/ +/photos/ \ No newline at end of file -- libgit2 0.21.2