Commit 7f1e0617 authored by tguillon's avatar tguillon
Browse files

Ajout: dans le formulaire la création de champ pour la co-responsabilité et la sous-traitance

parent 8414af92
......@@ -78,4 +78,13 @@ INSERT INTO baselegales (libelle, description, created, modified) VALUES
('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_champs ADD COLUMN champ_coresponsable BOOLEAN DEFAULT FALSE;
ALTER TABLE fg_champs ADD COLUMN champ_soustraitant BOOLEAN DEFAULT FALSE;
ALTER TABLE fg_formulaires ADD COLUMN useSousFinalite BOOLEAN DEFAULT FALSE;
ALTER TABLE fg_formulaires ADD COLUMN useBaseLegale BOOLEAN DEFAULT FALSE;
ALTER TABLE fg_formulaires ADD COLUMN useDecisionAutomatisee BOOLEAN DEFAULT FALSE;
ALTER TABLE fg_formulaires ADD COLUMN useTransfertHorsUe BOOLEAN DEFAULT FALSE;
ALTER TABLE fg_formulaires ADD COLUMN useDonneesSensible BOOLEAN DEFAULT FALSE;
COMMIT;
......@@ -24,6 +24,8 @@ App::uses('ListeDroit', 'Model');
class FormulairesController extends AppController {
//ATTENTION VOIR app/Plugin/FormGenerator/Model/Formulaire.php
public $uses = [
'FormGenerator.Formulaire',
'FormGenerator.Champ',
......@@ -330,6 +332,10 @@ class FormulairesController extends AppController {
}
if ($this->request->is('POST')) {
// unset($this->request->data['Fiche']);
debug($this->request->data);
die;
$success = true;
$this->Formulaire->begin();
......@@ -343,6 +349,19 @@ class FormulairesController extends AppController {
foreach ($value as $clef => $valeur) {
switch ($clef) {
case 'onglet':
$ongletChampCoresponsable = false;
$ongletChampSoustraitant = false;
if ($valeur === 'form-container-coresponsable') {
$ongletChampCoresponsable = true;
}
if ($valeur === 'form-container-soustraitant') {
$ongletChampSoustraitant = true;
}
break;
case 'type':
$type = $valeur;
break;
......@@ -392,9 +411,11 @@ class FormulairesController extends AppController {
'type' => $type,
'ligne' => $ligne,
'colonne' => $colonne,
'details' => json_encode($sortie)
'details' => json_encode($sortie),
'champ_coresponsable' => $ongletChampCoresponsable,
'champ_soustraitant' => $ongletChampSoustraitant,
]);
$success = $success && false !== $this->Champ->save();
$success = false !== $this->Champ->save() && $success;
}
if ($success == true) {
......
......@@ -138,7 +138,7 @@ msgid "fiche.champDonneesSensible"
msgstr "Données sensibles"
msgid "fiche.champFinaliteprincipale"
msgstr "Finalité"
msgstr "Finalité principale"
msgid "fiche.champRaisonsociale"
msgstr "Raison sociale"
......@@ -356,6 +356,15 @@ msgstr "Durée de conservation "
msgid "fiche.champDonneessensibles"
msgstr "Champ complémentaire concernant les données sensibles"
msgid "fiche.textInfoCoResponsableComplementaire"
msgstr "Information complémentaire concernant la co-responsabilité(s) :"
msgid "fiche.textInfoSousTraitance"
msgstr "Sous-traitance sur le traitement :"
msgid "fiche.textInfoSousTraitanceComplementaire"
msgstr "Information complémentaire concernant la sous-traitance(s) :"
###############################################################################
......
......@@ -200,4 +200,28 @@ msgstr "Fichier"
msgid "formulaire.btnEnregistreFormulaire"
msgstr " Enregistrer ce formulaire"
msgid "formulaire.champUseSousFinalite"
msgstr "Voulez-vous utiliser les champs concernant la sous-finalité ?"
msgid "formulaire.champUseDecisionAutomatisee"
msgstr "Voulez-vous utiliser les champs concernant la décision automatisée sur un traitement ?"
msgid "formulaire.champUseBaseLegale"
msgstr "Voulez-vous utiliser le champ base légale ?"
msgid "formulaire.champUseTransfertHorsUe"
msgstr "Voulez-vous utiliser les champs concernant le tranfert hors UE ?"
msgid "formulaire.champUseDonneesSensible"
msgstr "Voulez-vous utiliser les champs concernant les données sensibles ?"
msgid "formulaire.champTypeDonneeSensible"
msgstr "Type de donnée sensible 1"
msgid "formulaire.champDescriptionDonneSensible"
msgstr "Durée de conservation 1"
msgid "formulaire.champDureeConservation"
msgstr "Description 1"
###############################################################################
\ No newline at end of file
......@@ -33,6 +33,15 @@ class Fiche extends AppModel {
public $name = 'Fiche';
const LISTE_BASE_LEGALE = [
"Le consentement" => "Le consentement",
"Le contrat" => "Le contrat",
"L’obligation légale" => "L’obligation légale",
"La sauvegarde des intérêts vitaux" => "La sauvegarde des intérêts vitaux",
"L’intérêt public" => "L’intérêt public",
"Les intérêts légitimes" => "Les intérêts légitimes"
];
const LISTE_PAYS_HORS_UE = [
"AFGHANISTAN" => "AFGHANISTAN",
"AFRIQUE DU SUD" => "AFRIQUE DU SUD",
......
......@@ -261,6 +261,79 @@ if ($this->request->params['action'] === 'show') {
}
?>
</div>
<!-- Information concernant la co-responsabilité -->
<!-- <div id="infoSupCoResponsabilites">-->
<!-- <div class="col-md-12">-->
<!-- <span class='labelFormulaire'>-->
<!-- --><?php
// echo __d('fiche', 'fiche.textInfoCoResponsableComplementaire');
// ?>
<!-- </span>-->
<!-- <div class="row row35"></div>-->
<!-- </div>-->
<!---->
<!-- --><?php
// for ($nbCoResponsable = 1; $nbCoResponsable <= max(count((array)Hash::get($this->data, 'Fiche.coresponsabilites')), 1); $nbCoResponsable++) {
// echo '<div class="row" id="DonneeSensible_'.$nbCoResponsable.'">';
// echo '<hr>';
// echo '<div class="col-md-6">';
// echo $this->element(
// 'Fiches/ongletComplementaireChampDynamique',
// [
// 'path' => "Fiche.donneessensibles.{$nbCoResponsable}.typeDonneeSensible",
// 'type' => 'select',
// 'label' => __d('fiche', 'fiche.champTypeDonneeSensibleNombre') . $nbCoResponsable,
// 'options' => Fiche::LISTE_DONNEES_SENSIBLES,
// ]
// );
//
// $trash = false;
// $classTrash = '';
// if ($nbCoResponsable > 1 && $viewBtn === true) {
// $trash = true;
// $classTrash = 'removeDonneeSensible';
// }
//
// echo $this->element(
// 'Fiches/ongletComplementaireChampDynamique',
// [
// 'path' => "Fiche.donneessensibles.{$nbCoResponsable}.descriptionDonneeSensible",
// 'type' => 'textarea',
// 'label' => __d('fiche', 'fiche.champDescriptionDonneeSensibleNombre') . $nbCoResponsable,
// 'trash' => $trash,
// 'classTrash' => $classTrash
// ]
// );
// echo '</div>';
//
// echo '<div class="col-md-6">';
// echo $this->element(
// 'Fiches/ongletComplementaireChampDynamique',
// [
// 'path' => "Fiche.donneessensibles.{$nbCoResponsable}.dureeConservationDonneeSensible",
// 'type' => 'textarea',
// 'label' => __d('fiche', 'fiche.champDureeConservationDonneeSensibleNombre') . $nbCoResponsable
// ]
// );
// echo '</div>';
// echo '</div>';
// }
// ?>
<!---->
<!-- <div id="InputsCoResponsables"></div>-->
<!---->
<!-- --><?php
// if ($viewBtn === true) {
// ?>
<!-- <div id="AddCoResponsable">-->
<!-- <a id="AddCoResponsablesFileBox" class="btn btn-info">Ajouter un co-responsable</a>-->
<!-- <br><br>-->
<!-- </div>-->
<!-- --><?php
// }
// ?>
<!-- </div>-->
</div>
<script type="text/javascript">
......@@ -415,6 +488,13 @@ if ($this->request->params['action'] === 'show') {
idDonneesSensibles--;
});
// displayInfoSupCoResponsabilites($('#coresponsable').val());
// $('#coresponsable').change(function () {
// var select = $(this).val();
//
// displayInfoSupCoResponsabilites(select);
// });
});
function displayDescriptionDecisionAutomatisee(val){
......@@ -544,4 +624,12 @@ if ($this->request->params['action'] === 'show') {
'</div>');
}
// function displayInfoSupCoResponsabilites(val){
// if (val == true) {
// $('#infoSupCoResponsabilites').show();
// } else {
// $('#infoSupCoResponsabilites').hide();
// }
// }
</script>
<!-- Onglet Information sur l'entité -->
<div id="ongletComplementaireCoresponsable" class="tab-pane">
<!-- Information concernant la co-responsabilité -->
<div id="infoSupCoResponsabilites">
<div class="col-md-12">
<span class='labelFormulaire'>
<?php
echo __d('fiche', 'fiche.textInfoCoResponsableComplementaire');
?>
</span>
<div class="row row35"></div>
</div>
</div>
</div>
<script type="text/javascript">
$(document).ready(function() {
var coresponsable = $("#coresponsable").val();
displayTabCoresponsables(coresponsable);
$("#coresponsable").change(function () {
idCoresponsable = $(this).val();
displayTabCoresponsables(idCoresponsable);
});
});
function displayTabCoresponsables(val){
// @todo
if (val == false) {
$('#information_coresponsable').removeClass('disabled');
$('#aOngletComplementaireCoresponsable').attr('role', 'tab');
$('#aOngletComplementaireCoresponsable').attr('data-toggle', 'tab');
} else {
$('#information_coresponsable').addClass('disabled');
$('#aOngletComplementaireCoresponsable').attr('role', '');
$('#aOngletComplementaireCoresponsable').attr('data-toggle', '');
}
}
</script>
<!-- Onglet Information complémentaire concernant les sous-traitant -->
<div id="ongletComplementaireSousTraitance" class="tab-pane">
<!-- Information concernant la co-responsabilité -->
<div id="infoSupCoResponsabilites">
<div class="col-md-12">
<span class='labelFormulaire'>
<?php
echo __d('fiche', 'fiche.textInfoSousTraitanceComplementaire');
?>
</span>
<div class="row row35"></div>
</div>
</div>
</div>
<script type="text/javascript">
$(document).ready(function() {
var sousTraitance = $("#soustraitance").val();
displayTabSousTraitances(sousTraitance);
$("#soustraitance").change(function () {
var newValSousTraitance = $(this).val();
displayTabSousTraitances(newValSousTraitance);
});
});
function displayTabSousTraitances(val){
// @todo
if (val == false) {
$('#information_soustraitances').removeClass('disabled');
$('#aOngletComplementaireSousTraitance').attr('role', 'tab');
$('#aOngletComplementaireSousTraitance').attr('data-toggle', 'tab');
} else {
$('#information_soustraitances').addClass('disabled');
$('#aOngletComplementaireSousTraitance').attr('role', '');
$('#aOngletComplementaireSousTraitance').attr('data-toggle', '');
}
}
</script>
......@@ -165,39 +165,16 @@ if (!empty($responsables)) {
$(document).ready(function () {
var coresponsable = $("#coresponsable").val();
if (coresponsable == true) {
$('#liOngletCoresponsable').removeClass('disabled');
$('#aOngletCoresponsable').attr('role', 'tab');
$('#aOngletCoresponsable').attr('data-toggle', 'tab');
} else {
$('#liOngletCoresponsable').addClass('disabled');
$('#aOngletCoresponsable').attr('role', '');
$('#aOngletCoresponsable').attr('data-toggle', '');
}
displayOngletCoresponsable(coresponsable);
$("#coresponsable").change(function () {
idCoresponsable = $(this).val();
if (idCoresponsable == true) {
$('#liOngletCoresponsable').removeClass('disabled');
$('#aOngletCoresponsable').attr('role', 'tab');
$('#aOngletCoresponsable').attr('data-toggle', 'tab');
} else {
$('#liOngletCoresponsable').addClass('disabled');
$('#aOngletCoresponsable').attr('role', '');
$('#aOngletCoresponsable').attr('data-toggle', '');
}
var idCoresponsable = $(this).val();
displayOngletCoresponsable(idCoresponsable);
});
var infoCoresponsable = <?php echo json_encode(Hash::combine($responsables, '{n}.Responsable.id', '{n}.Responsable'))?>;
$("#coresponsableid").change(function () {
idcoresponsable = $(this).val();
var idcoresponsable = $(this).val();
if (idcoresponsable === '') {
str = null;
......@@ -232,4 +209,19 @@ if (!empty($responsables)) {
});
function displayOngletCoresponsable(val){
if (val == true) {
$('#liOngletCoresponsable').removeClass('disabled');
$('#aOngletCoresponsable').attr('role', 'tab');
$('#aOngletCoresponsable').attr('data-toggle', 'tab');
} else {
$('#liOngletCoresponsable').addClass('disabled');
$('#aOngletCoresponsable').attr('role', '');
$('#aOngletCoresponsable').attr('data-toggle', '');
}
}
</script>
\ No newline at end of file
<!-- Onglet Formulaire -->
<?php
echo $this->Html->script([
'smalot-bootstrap-datetimepicker/js/bootstrap-datetimepicker.min',
'smalot-bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.fr.js'
]);
echo $this->Html->css('/js/smalot-bootstrap-datetimepicker/css/bootstrap-datetimepicker.min');
$calendrier = [];
$col = 1;
$line = 1;
?>
<!-- Champs du formulaire -->
<div class="col-md-6">
<?php
foreach ($champs as $value) {
if ($value['Champ']['colonne'] > $col) {
?>
</div>
<div class="col-md-6">
<?php
$line = 1;
$col++;
}
if ($value['Champ']['ligne'] > $line) {
for ($i = $line; $i < $value['Champ']['ligne']; $i++) {
?>
<div class="row row35"></div>
<?php
}
$line = $value['Champ']['ligne'];
}
$options = json_decode($value['Champ']['details'], true);
?>
<div class="row row35">
<div class="col-md-12">
<?php
switch ($value['Champ']['type']) {
// Petit champ texte
case 'input':
echo $this->WebcilForm->input($options['name'], [
'id' => $options['name'],
'label' => [
'text' => $options['label'],
'class' => 'col-md-4'
],
'required' => $options['obligatoire'],
'placeholder' => $options['placeholder']
]);
break;
// Grand champ texte
case 'textarea':
echo $this->WebcilForm->input($options['name'], [
'id' => $options['name'],
'label' => [
'text' => $options['label'],
'class' => 'col-md-4'
],
'type' => 'textarea',
'required' => $options['obligatoire'],
'placeholder' => $options['placeholder']
]);
break;
// Champ date
case 'date':
echo $this->WebcilForm->input($options['name'], [
'id' => $options['name'],
'label' => [
'text' => $options['label'],
'class' => 'col-md-4'
],
'required' => $options['obligatoire'],
'placeholder' => $options['placeholder']
]);
$calendrier[] = $options['name'];
break;
// Titre de catégorie
case 'title':
?>
<div class="col-md-12 text-center">
<h1>
<?php echo $options['content']; ?>
</h1>
</div>
<?php
break;
// Label
case 'texte':
echo '<div class="form-group">'
. '<h5>' . $options['content'] . '</h5>'
. '</div>';
break;
// Champ d'information
case 'help':
?>
<div class="col-md-12 alert alert-info text-center">
<div class="col-md-12">
<i class="fa fa-fw fa-info-circle fa-2x"><!----></i>
</div>
<div class="col-md-12">
<?php echo $options['content']; ?>
</div>
</div>
<?php
break;
// Cases à cocher
case 'checkboxes':
echo $this->WebcilForm->input($options['name'], [
'id' => $options['name'],
'label' => [
'text' => $options['label'],
'class' => 'col-md-4'
],
'multiple' => 'checkbox',
'class' => 'checkbox',
'options' => $options['options'],
'div' => "input select"
]);
break;
// Menu déroulant
case 'deroulant':
echo $this->WebcilForm->input($options['name'], [
'id' => $options['name'],
'label' => [
'text' => $options['label'],
'class' => 'col-md-4'
],
'options' => $options['options'],
'required' => $options['obligatoire'],
'class' => 'usersDeroulant transformSelect form-control',
'empty' => true,
'placeholder' => false,
'data-placeholder' => ' '
]);
break;
// Menu multi-select
case 'multi-select':
echo $this->WebcilForm->input($options['name'], [
'id' => $options['name'],
'options' => $options['options'],
'class' => 'form-group multiSelect',
'label' => [
'text' => $options['label'],
'class' => 'col-md-4'
],
'required' => $options['obligatoire'],
'between' => '<div class="col-md-8">',
'after' => '</div>',
'multiple' => 'multiple'
]);
break;
// Choix unique
case 'radios':
$fieldName = $options['name'];
if (false === strpos($fieldName, '.')) {
$modelName = Inflector::classify($this->request->params['controller']);
} else {
list($modelName, $fieldName) = explode('.', $fieldName);
}
?>
<div class="form-group">
<div class="col-md-4">
<label>
<span class="labeler">
<?php echo $options['label'];?>
</span>
<?php if ($options['obligatoire']): echo '<span class="requis">*</span>'; endif;?>
</label>
</div>
<div class="col-md-8" <?php if ($options['obligatoire']): echo 'required="required"'; endif;?>>
<input type="hidden" id="<?php echo $options['name']; ?>" name="data[<?php echo $modelName;?>][<?php echo $fieldName;?>]" value="" />
<?php
foreach ($options['options'] as $key => $val) {
$checked = $val == $this->request->data("{$modelName}.{$fieldName}") ? ' checked="checked"' : '';
echo '<div class="radio">
<input type="radio" id="'.$options['name'].$key.'" name="data['.$modelName.']['.$fieldName.']" value="'.$val.'" '.$checked.'>
'.$val.'
</div>';