Commit dccb0abd authored by tguillon's avatar tguillon
Browse files

Correction : add, edit, show d'un formulaire et d'un traitement

Ajout : mise en place de l'option sur les extentions des fichiers en annexe d'un traitement
parent 55eb1bf4
......@@ -55,34 +55,12 @@ INSERT INTO etats (libelle, value, created, modified) VALUES
ALTER TABLE organisations DROP verrouiller;
--
-- Création de la table baselegales
--
CREATE TABLE baselegales (
id serial NOT NULL PRIMARY KEY,
libelle VARCHAR NOT NULL,
description VARCHAR NOT NULL,
created timestamp without time zone NOT NULL,
modified timestamp without time zone NOT NULL
);
CREATE UNIQUE INDEX baselegales_libelle_idx ON baselegales (libelle);
--
-- Insertion de valeur dans la table baselegales
--
INSERT INTO baselegales (libelle, description, created, modified) VALUES
('Le consentement', 'Article 6 1. a) : La personne concernée a consenti au traitement de ses données à caractère personnel pour une ou plusieurs finalités spécifiques.', NOW(), NOW()),
('Le contrat', 'Article 6 1. b) : Le traitement est nécessaire à l''exécution d''un contrat auquel la personne concernée est partie ou à l''exécution de mesures précontractuelles prises à la demande de celle-ci.', NOW(), NOW()),
('L’obligation légale', 'Article 6 1. c) : Le traitement est nécessaire au respect d''une obligation légale à laquelle le responsable du traitement est soumis.', NOW(), NOW()),
('La sauvegarde des intérêts vitaux', 'Article 6 1. d) : Le traitement est nécessaire à la sauvegarde des intérêts vitaux de la personne concernée ou d''une autre personne physique.', NOW(), NOW()),
('L’intérêt public', 'Article 6 1. e) : Le traitement est nécessaire à l''exécution d''une mission d''intérêt public ou relevant de l''exercice de l''autorité publique dont est investi le responsable du traitement.', NOW(), NOW()),
('Les intérêts légitimes', 'Article 6 1. f) : Le traitement est nécessaire aux fins des intérêts légitimes poursuivis par le responsable du traitement ou par un tiers, à moins que ne prévalent les intérêts ou les libertés et droits fondamentaux de la personne concernée qui exigent une protection des données à caractère personnel, notamment lorsque la personne concernée est un enfant.<br /><br />Le point f) du premier alinéa ne s''applique pas au traitement effectué par les autorités publiques dans l''exécution de leurs missions.', NOW(), NOW());
--
-- ALTER TABLE fg_formulaires TO formulaires
--
ALTER TABLE fg_formulaires RENAME TO formulaires;
ALTER SEQUENCE fg_formulaires_id_seq RENAME TO formulaires_id_seq;
ALTER INDEX fg_formulaires_pkey RENAME TO formulaires_pkey;
ALTER TABLE formulaires
DROP CONSTRAINT fg_formulaires_organisations_id_fkey,
......@@ -104,6 +82,7 @@ ALTER TABLE formulaires ALTER COLUMN active SET DEFAULT FALSE;
--
ALTER TABLE fg_champs RENAME TO champs;
ALTER SEQUENCE fg_champs_id_seq RENAME TO champs_id_seq;
ALTER INDEX fg_champs_pkey RENAME TO champs_pkey;
ALTER TABLE champs RENAME COLUMN formulaires_id TO formulaire_id;
......
......@@ -57,8 +57,7 @@ class FichesController extends AppController
'TraitementRegistre',
'User',
'Valeur',
'WebdpoFiche',
'Baselegale'
'WebdpoFiche'
];
/**
......@@ -77,31 +76,32 @@ class FichesController extends AppController
}
public function saveFileTmp($formulaire_id)
// public function saveFileTmp()
{
if (!empty($this->request->params['form']['fichiers'])) {
$this->autoRender = false;
if (!empty($this->request->params['form']['fichiers']) && !empty($this->request->params['pass'])) {
if (empty($this->Session->read('Auth.User.uuid'))) {
$this->Session->write('Auth.User.uuid', CakeText::uuid());
}
$this->autoRender = false;
// On verifie si le dossier file existe. Si c'est pas le cas on le cree
create_arborescence_files($this->Session->read('Auth.User.id'));
// $allextentionFile = $this->Formulaire->find('first', [
// 'conditions' => [
// 'id' => $formulaire_id
// ],
// 'fields' => [
// 'useallextensionfiles'
// ]
// ]);
// if ($allextentionFile['Formulaire']['useallextensionfiles'] == true) {
// $accepted = Configure::read('allFileAnnexeAcceptedTypes');
// } else {
$allextentionFile = $this->Formulaire->find('first', [
'conditions' => [
'id' => $formulaire_id
],
'fields' => [
'useallextensionfiles'
]
]);
if ($allextentionFile['Formulaire']['useallextensionfiles'] == true) {
$accepted = Configure::read('allFileAnnexeAcceptedTypes');
} else {
$accepted = ['application/pdf', 'application/vnd.oasis.opendocument.text'];
// }
}
$json = [];
foreach ($this->request->params['form']['fichiers']['tmp_name'] as $key => $tmpFile) {
......@@ -291,7 +291,21 @@ class FichesController extends AppController
if (!empty($this->Session->read('Auth.User.uuid'))) {
if ($success == true) {
$success = $success && false !== $this->Fichier->transfereSave($last, $this->Session->read('Auth.User.uuid'), $this->Session->read('Auth.User.id'));
$useAllExtensionFiles = $this->Formulaire->find('first', [
'condititons' => [
'id' => $formulaire_id
],
'fields' => [
'useallextensionfiles'
]
]);
$success = $success && false !== $this->Fichier->transfereSave(
$last,
$useAllExtensionFiles['Formulaire']['useallextensionfiles'],
$this->Session->read('Auth.User.uuid'),
$this->Session->read('Auth.User.id')
);
}
}
}
......@@ -591,7 +605,21 @@ class FichesController extends AppController
if (!empty($this->Session->read('Auth.User.uuid'))) {
if ($success == true) {
$success = $success && false !== $this->Fichier->transfereSave($id, $this->Session->read('Auth.User.uuid'), $this->Session->read('Auth.User.id'));
$useAllExtensionFiles = $this->Formulaire->find('first', [
'condititons' => [
'id' => $form_id['Fiche']['form_id']
],
'fields' => [
'useallextensionfiles'
]
]);
$success = $success && false !== $this->Fichier->transfereSave(
$id,
$useAllExtensionFiles['Formulaire']['useallextensionfiles'],
$this->Session->read('Auth.User.uuid'),
$this->Session->read('Auth.User.id')
);
}
}
}
......@@ -638,6 +666,8 @@ class FichesController extends AppController
$this->request->data['Fiche']['coresponsable'] = $fiche['Fiche']['coresponsable'];
$this->request->data['Fiche']['soustraitance'] = $fiche['Fiche']['soustraitance'];
$this->set('formulaire_id', $fiche['Fiche']['form_id']);
$this->view = 'add';
}
......@@ -1621,25 +1651,6 @@ class FichesController extends AppController
}
}
private function getBaseLegales()
{
$baseLegales = $this->Baselegale->find('all');
$options_baseLegales = Hash::combine(
$baseLegales,
'{n}.Baselegale.id',
'{n}.Baselegale.libelle'
);
$descriptions_baseLegale = Hash::combine(
$baseLegales,
'{n}.Baselegale.id',
'{n}.Baselegale.description'
);
$this->set(compact('options_baseLegales', 'descriptions_baseLegale'));
}
/**
* Récupére en BDD les normes et les descriptions
*
......
......@@ -237,6 +237,6 @@ msgid "formulaire.alertInfoUseAllExtention"
msgstr "ATTENTION : si vous autorisez l'utilisation de tous les formats de fichiers en annexe, seuls les formats '.odt' et '.pdf' pourront être intégré lors de la génération documentaire du registre."
msgid "formulaire.infoExtentionUtilisable"
msgstr "Seuls les fichiers au format 'xls', '.doc', '.docx', '.ppt', '.pptx', '.gif', '.jpeg', '.jpg', '.png', '.odp', '.ods', '.odt', '.pdf' seront acceptés"
msgstr "Seuls les fichiers au format 'xls', '.doc', '.docx', '.ppt', '.pptx', '.gif', '.jpeg', '.jpg', '.png', '.odp', '.ods', '.odt', '.pdf' sont acceptés"
###############################################################################
\ No newline at end of file
......@@ -339,10 +339,6 @@ class Fiche extends AppModel {
'className' => 'Champ',
'foreignKey' => 'formulaire_id'
],
'Baselegale' => [
'className' => 'Baselegale',
'foreignKey' => 'id'
]
];
/**
......@@ -757,30 +753,30 @@ class Fiche extends AppModel {
}
}
if ($value['Valeur']['champ_name'] === 'baselegale') {
$baseLegales = $this->Baselegale->find('all', [
'conditions' => [
'id' => json_decode($value['Valeur']['valeur'])
],
'fields' => [
'id',
'libelle',
'description'
]
]);
foreach ($baseLegales as $key => $val) {
$donnees[$value['Valeur']['champ_name']][$key]['valeur_' . $value['Valeur']['champ_name']] = [
'value' => $val['Baselegale']['libelle'],
'type' => 'text'
];
$donnees[$value['Valeur']['champ_name'].'description'][$key]['valeur_' . $value['Valeur']['champ_name'].'description'] = [
'value' => $val['Baselegale']['description'],
'type' => 'text'
];
}
}
// if ($value['Valeur']['champ_name'] === 'baselegale') {
// $baseLegales = $this->Baselegale->find('all', [
// 'conditions' => [
// 'id' => json_decode($value['Valeur']['valeur'])
// ],
// 'fields' => [
// 'id',
// 'libelle',
// 'description'
// ]
// ]);
//
// foreach ($baseLegales as $key => $val) {
// $donnees[$value['Valeur']['champ_name']][$key]['valeur_' . $value['Valeur']['champ_name']] = [
// 'value' => $val['Baselegale']['libelle'],
// 'type' => 'text'
// ];
//
// $donnees[$value['Valeur']['champ_name'].'description'][$key]['valeur_' . $value['Valeur']['champ_name'].'description'] = [
// 'value' => $val['Baselegale']['description'],
// 'type' => 'text'
// ];
// }
// }
} else {
$donnees['valeur_' . $value['Valeur']['champ_name']] = [
'value' => $value['Valeur']['valeur'],
......
......@@ -136,37 +136,50 @@ class Fichier extends AppModel {
/**
*
* @param type $idFiche
* @param int $idFiche
* @param boolean $useAllExtensionFiles
* @param type $uuidDossier
* @param type $idUser
* @param int $idUser
* @param boolean $transaction La méthode doit-elle gérer elle-même une
* transaction (par défaut: false) ?
* @return boolean
*/
public function transfereSave($idFiche, $uuidDossier, $idUser, $transaction = false) {
public function transfereSave($idFiche, $useAllExtensionFiles, $uuidDossier, $idUser, $transaction = false) {
if (!empty($uuidDossier)){
$files = array_diff(scandir(CHEMIN_PIECE_JOINT_TMP . $idUser . DS . $uuidDossier), array('..', '.'));
if (isset($files) && !empty($files)) {
$success = true;
if($transaction == true) {
if ($transaction == true) {
$this->begin();
}
// On verifie si le dossier file existe. Si c'est pas le cas on le cree
create_arborescence_files();
if ($useAllExtensionFiles == true) {
$accepted = Configure::read('allFileAnnexeAcceptedTypes');
} else {
$accepted = ['application/pdf', 'application/vnd.oasis.opendocument.text'];
}
foreach ($files as $key => $file) {
$extension = pathinfo($file, PATHINFO_EXTENSION);
$pathFileTMP = CHEMIN_PIECE_JOINT_TMP . $idUser . DS . $uuidDossier . DS . $file;
if ($extension == 'odt' || $extension == 'pdf') {
$mime = mime_content_type($pathFileTMP);
if (in_array($mime, $accepted) === true) {
$url = time();
$success = $success && rename(CHEMIN_PIECE_JOINT_TMP . $idUser . DS . $uuidDossier . DS . $file, CHEMIN_PIECE_JOINT.$url . $key . '.' . $extension);
$newNameFile = $url . $key . '.' . $extension;
$newPathFile = CHEMIN_PIECE_JOINT . $newNameFile;
$success = $success && rename($pathFileTMP, $newPathFile);
if ($success) {
$this->create([
'nom' => $file,
'url' => $url . $key . '.' . $extension,
'url' => $newNameFile,
'fiche_id' => $idFiche
]);
$success = $success && $this->save(null, ['atomic' => false]);
......
......@@ -378,15 +378,19 @@ class WebdpoFiche extends AppModel {
$data[$alias]['emailstructure'] = null;
}
if ($data[$alias]['donneesSensible'] == 'Non') {
if (isset($data[$alias]['donneessensibles'])) {
unset($data[$alias]['donneessensibles']);
if (isset($data[$alias]['donneesSensible'])) {
if ($data[$alias]['donneesSensible'] == 'Non') {
if (isset($data[$alias]['donneessensibles'])) {
unset($data[$alias]['donneessensibles']);
}
}
}
if ($data[$alias]['transfertHorsUe'] == 'Non') {
if (isset($data[$alias]['horsue'])) {
unset($data[$alias]['horsue']);
if (isset($data[$alias]['transfertHorsUe'])) {
if ($data[$alias]['transfertHorsUe'] == 'Non') {
if (isset($data[$alias]['horsue'])) {
unset($data[$alias]['horsue']);
}
}
}
......
......@@ -5,7 +5,11 @@
<div class="modal-body">
<div class="row top17">
<div class="col-md-12">
<h3> <?php echo __d('fiche', 'fiche.textTypeFichierAccepter'); ?> </h3>
<h3>
<?php
echo $extentionsAccepter;
?>
</h3>
</div>
</div>
</div>
......@@ -22,9 +26,11 @@
</div>
<!--<script type="text/javascript">-->
<!---->
<!-- $(document).ready(function () {-->
<!-- verificationExtension();-->
<!-- });-->
<!---->
<!--</script>-->
\ No newline at end of file
......@@ -77,6 +77,10 @@
</tbody>
</table>
<?php
echo $this->element('Fiches/modal/modalErrorExtentionAnnexe', [
'extentionsAccepter' => $extentionsAccepter
]);
}
?>
......@@ -145,11 +149,6 @@
</div>
<!-- Fin onglet Annexe(s) -->
<?php
// @fixme
echo $this->element('Fiches/modal/modalErrorExtentionAnnexe');
?>
<script type="text/javascript">
$(document).ready(function () {
......@@ -196,10 +195,11 @@ echo $this->element('Fiches/modal/modalErrorExtentionAnnexe');
var idFormulaire = <?php echo json_encode($formulaire_id);?>;
// console.log("/fiches/saveFileTmp/"+idFormulaire);
// formData.append('fichiers[formulaire_id]', idFormulaire);
// formData.append('form["toto"][]', idFormulaire);
$.ajax({
url: '/fiches/saveFileTmp/'+idFormulaire,
// url: '/fiches/saveFileTmp/',
method: 'POST',
data: formData,
processData: false,
......@@ -215,12 +215,14 @@ echo $this->element('Fiches/modal/modalErrorExtentionAnnexe');
$('#render').find('tbody').append(tr);
}
} catch (e) {
alert("error");
// alert("error");
$('#errorExtentionAnnexe').modal('show');
return;
}
},
error: function () {
alert('error');
// $('#errorExtentionAnnexe').modal('show');
}
});
});
......
......@@ -163,7 +163,7 @@ if ($this->request->params['action'] === 'show' ) {
echo '<hr>';
echo '<div class="col-md-6">';
echo $this->element(
'Fiches/ongletComplementaireChampDynamique',
'Fiches/dynamicField',
[
'path' => "Fiche.horsue.{$i}.organismeDestinataireHorsUe",
'type' => 'text',
......@@ -179,7 +179,7 @@ if ($this->request->params['action'] === 'show' ) {
}
echo $this->element(
'Fiches/ongletComplementaireChampDynamique',
'Fiches/dynamicField',
[
'path' => "Fiche.horsue.{$i}.typeGarantieHorsUe",
'type' => 'select',
......@@ -193,7 +193,7 @@ if ($this->request->params['action'] === 'show' ) {
echo '<div class="col-md-6">';
echo $this->element(
'Fiches/ongletComplementaireChampDynamique',
'Fiches/dynamicField',
[
'path' => "Fiche.horsue.{$i}.paysDestinataireHorsUe",
'type' => 'select',
......@@ -245,7 +245,7 @@ if ($this->request->params['action'] === 'show' ) {
echo '<hr>';
echo '<div class="col-md-6">';
echo $this->element(
'Fiches/ongletComplementaireChampDynamique',
'Fiches/dynamicField',
[
'path' => "Fiche.donneessensibles.{$nb}.typeDonneeSensible",
'type' => 'select',
......@@ -262,7 +262,7 @@ if ($this->request->params['action'] === 'show' ) {
}
echo $this->element(
'Fiches/ongletComplementaireChampDynamique',
'Fiches/dynamicField',
[
'path' => "Fiche.donneessensibles.{$nb}.descriptionDonneeSensible",
'type' => 'textarea',
......@@ -275,7 +275,7 @@ if ($this->request->params['action'] === 'show' ) {
echo '<div class="col-md-6">';
echo $this->element(
'Fiches/ongletComplementaireChampDynamique',
'Fiches/dynamicField',
[
'path' => "Fiche.donneessensibles.{$nb}.dureeConservationDonneeSensible",
'type' => 'textarea',
......@@ -358,7 +358,7 @@ if ($this->request->params['action'] === 'show' ) {
<?php
$idElement = 9999;
$element = $this->element(
'Fiches/ongletComplementaireChampDynamique',
'Fiches/dynamicField',
[
'path' => "Fiche.horsue.{$idElement}.organismeDestinataireHorsUe",
'type' => 'text',
......@@ -371,7 +371,7 @@ if ($this->request->params['action'] === 'show' ) {
<?php
$idElement = 9999;
$element = $this->element(
'Fiches/ongletComplementaireChampDynamique',
'Fiches/dynamicField',
[
'path' => "Fiche.horsue.{$idElement}.typeGarantieHorsUe",
'type' => 'select',
......@@ -388,7 +388,7 @@ if ($this->request->params['action'] === 'show' ) {
<?php
$idElement = 9999;
$element = $this->element(
'Fiches/ongletComplementaireChampDynamique',
'Fiches/dynamicField',
[
'path' => "Fiche.horsue.{$idElement}.paysDestinataireHorsUe",
'type' => 'select',
......@@ -410,7 +410,7 @@ if ($this->request->params['action'] === 'show' ) {
<?php
$idElement = 9999;
$element = $this->element(
'Fiches/ongletComplementaireChampDynamique',
'Fiches/dynamicField',
[
'path' => "Fiche.donneessensibles.{$idElement}.typeDonneeSensible",
'type' => 'select',
......@@ -423,7 +423,7 @@ if ($this->request->params['action'] === 'show' ) {
<?php
$idElement = 9999;
$element = $this->element(
'Fiches/ongletComplementaireChampDynamique',
'Fiches/dynamicField',
[
'path' => "Fiche.donneessensibles.{$idElement}.descriptionDonneeSensible",
'type' => 'textarea',
......@@ -439,7 +439,7 @@ if ($this->request->params['action'] === 'show' ) {
<?php
$idElement = 9999;
$element = $this->element(
'Fiches/ongletComplementaireChampDynamique',
'Fiches/dynamicField',
[
'path' => "Fiche.donneessensibles.{$idElement}.dureeConservationDonneeSensible",
'type' => 'textarea',
......
......@@ -31,9 +31,9 @@
<div class="col-md-4"></div>
</div>
<hr>
<div id="infoUseAllExtension">
<hr>
<div class="alert alert-danger" role="alert">
<?php
echo __d('formulaire', 'formulaire.alertInfoUseAllExtention');
......
......@@ -130,12 +130,12 @@ echo $this->WebcilForm->create('Fiche', [
<div class="tab-content">
<?php
// Onglet Information Générale
echo $this->element('Fiches/ongletInformationGenerale');
echo $this->element('Fiches/tabs/informationGenerale');
// Fin onglet Information Générale
if (in_array(true, $useFieldsFormulaire['Formulaire'], true)) {
// Onglet Information complémentaire
echo $this->element("Fiches/ongletComplementaire");
echo $this->element("Fiches/tabs/informationComplementaire");
// Fin onglet Information complémentaire
}
?>
......@@ -145,7 +145,7 @@ echo $this->WebcilForm->create('Fiche', [
<br>
<div id="form-container-formulaire" class="form-container col-md-12">
<?php
echo $this->element('Fiches/ongletFormulaire', [
echo $this->element('Fiches/tabs/formulaire', [
'champs' => $fields['formulaire']
]);
?>
......@@ -161,7 +161,7 @@ echo $this->WebcilForm->create('Fiche', [
<br>
<div id="form-container-coresponsable" class="form-container col-md-12">
<?php
echo $this->element('Fiches/ongletFormulaire', [
echo $this->element('Fiches/tabs/formulaire', [
'champs' => $fields['coresponsable']
]);
?>
......@@ -180,7 +180,7 @@ echo $this->WebcilForm->create('Fiche', [
<br>
<div id="form-container-soustraitance" class="form-container col-md-12">
<?php
echo $this->element('Fiches/ongletFormulaire', [
echo $this->element('Fiches/tabs/formulaire', [
'champs' => $fields['soustraitant']
]);
?>
......@@ -191,7 +191,7 @@ echo $this->WebcilForm->create('Fiche', [
}
// Onglet Annexe(s)
echo $this->element('Fiches/ongletAnnexe');
echo $this->element('Fiches/tabs/annexe');
// Fin onglet Annexe(s)
?>
</div>
......
......@@ -317,7 +317,7 @@ echo $this->WebcilForm->create('Fiche', [
<?php
// Onglet information complémentaire
echo $this->element("Fiches/ongletComplementaire");
echo $this->element("Fiches/tabs/informationComplementaire");
// Onglet sous-traitant
echo $this->WebcilForm->input('soustraitantid', [
......@@ -340,7 +340,7 @@ echo $this->WebcilForm->create('Fiche', [