Commit 8b5f5a89 authored by tguillon's avatar tguillon
Browse files

Ajout : gestion des erreures sur les champs sup des données sensible et transfere hors ue

Ajout : factorisation de la création des champs
parent 8918241f
......@@ -91,7 +91,7 @@ define('FORMAT_DATE_HEURE', '%e-%m-%Y à %H:%M');
define('REGEXP_ALPHA_FR', '/^[a-zA-Z\-ÂÀâàÇçÉÊÈËéêèëÎÏîïÔÖôöÛÙûù ]*$/i');
//Validation champs email
define('REGEXP_EMAIL_FR', '/^[a-zA-Z1-9\-@.]*$/i');
define('REGEXP_EMAIL_FR', '/^[a-zA-Z1-9\-@._]*$/i');
Configure::write('logoAcceptedTypes', [
'image/png', // .png
......
......@@ -243,7 +243,7 @@ class FichesController extends AppController
$this->redirect($this->Referers->get());
}
// debug($this->request->data);die;
// debug($this->request->data);//die;
$success = true;
$this->Fiche->begin();
......
......@@ -329,26 +329,32 @@ msgstr "Décrivez la prise de décision automatisée"
msgid "fiche.textInfoTransfereHorsUEComplementaire"
msgstr "Information complémentaire concernant le transfert hors UE :"
msgid "fiche.champOrganismeDestinataireHorsUe"
msgstr "Organisme destinataire 1"
msgid "fiche.champOrganismeDestinataireHorsUeNombre"
msgstr "Organisme destinataire "
msgid "fiche.champPaysDestinataireHorsUe"
msgstr "Pays destinataire 1"
msgid "fiche.champTypeGarantieHorsUeNombre"
msgstr "Type de garantie "
msgid "fiche.champTypeGarantieHorsUe"
msgstr "Type de garanties 1"
msgid "fiche.champPaysDestinataireHorsUeNombre"
msgstr "Pays destinataire "
msgid "fiche.champHorsue"
msgstr "Champ complémentaire concernant le transfert hors UE"
msgid "fiche.textInfoDonneesSensiblesComplementaire"
msgstr "Information complémentaire concernant les données sensibles :"
msgid "fiche.champTypeDonneeSensible"
msgstr "Type de donnée sensible 1"
msgid "fiche.champTypeDonneeSensibleNombre"
msgstr "Type de donnée sensible "
msgid "fiche.champDescriptionDonneeSensibleNombre"
msgstr "Description "
msgid "fiche.champDureeConservationDonneeSensible"
msgstr "Durée de conservation 1"
msgid "fiche.champDureeConservationDonneeSensibleNombre"
msgstr "Durée de conservation "
msgid "fiche.champDescriptionDonneeSensible"
msgstr "Description 1"
msgid "fiche.champDonneessensibles"
msgstr "Champ complémentaire concernant les données sensibles"
###############################################################################
......
......@@ -149,6 +149,22 @@ class WebdpoFiche extends AppModel {
]
],
// ---------------------------------------------------------------------
'typeDonneeSensible' => [
'checkNotBlankIf' => [
'rule' => ['checkNotBlankIf', 'donneesSensible', true, ['Oui']]
]
],
'descriptionDonneeSensible' => [
'checkNotBlankIf' => [
'rule' => ['checkNotBlankIf', 'donneesSensible', true, ['Oui']]
]
],
'dureeConservationDonneeSensible' => [
'checkNotBlankIf' => [
'rule' => ['checkNotBlankIf', 'donneesSensible', true, ['Oui']]
]
],
// ---------------------------------------------------------------------
'soustraitantid' => [
'checkNotBlankIf' => [
'rule' => ['checkNotBlankIf', 'soustraitant', true, ['1']]
......@@ -243,10 +259,38 @@ class WebdpoFiche extends AppModel {
}
}
$dynamicValidationErrors = [];
$originalData = $this->data;
$originalValidationErrors = $this->validationErrors;
// @todo: vérifier dans les règles de validation dynamiquement quels sont les champs dont on dépend pour les insérer dans les données lors de la validation
foreach (['horsue' => 'transfertHorsUe', 'donneessensibles' => 'donneesSensible'] as $fieldIndex => $fieldName) {
if (isset($originalData[$this->alias][$fieldIndex]) === true && empty($originalData[$this->alias][$fieldIndex]) === false) {
foreach ($originalData[$this->alias][$fieldIndex] as $key => $organisme) {
$dynamicData = [
$this->alias => $organisme +
[
$fieldName => $originalData[$this->alias][$fieldName],
'coresponsable' => $originalData[$this->alias]['coresponsable']
]
];
$this->create($dynamicData);
if ($this->validates() !== true) {
foreach ($this->validationErrors as $idx => $errors) {
$dynamicValidationErrors[$fieldIndex][$key][$idx] = $errors;
}
}
}
}
}
$this->data = $originalData;
$this->validationErrors = $originalValidationErrors;
$this->create([$this->alias => $this->data[$this->alias]]);
$success = $this->validates() && $success;
$Fiche->validationErrors = $Fiche->validationErrors + $this->validationErrors;
$Fiche->validationErrors = Hash::merge($Fiche->validationErrors, $dynamicValidationErrors);
if ($success == true) {
if ($data['Fiche']['coresponsable'] == '0') {
......
<?php
$required = isset($required) === true ? $required : false; // @fixme: ne change rien pour l'instant
$label = isset($label) === true ? $label : null;
$trash = isset($trash) === true ? $trash : false;
$classTrash = isset($classTrash) === true ? $classTrash : '';
$options = isset($options) === true ? $options : [];
$id = $this->Html->domId($path);
if (!empty($label)) {
$label = $label . ' <span class="requis">*</span>';
}
//----------------------------------------------------------------------------------------------------------------------
echo '<div class="form-group">';
echo $this->WebcilForm->label($label, null, ['class' => 'col-md-4 control-label', 'for' => $id]);
$attributes = [
'id' => $id,
'required' => $required,
'placeholder' => false
];
if ($type === 'select') {
$attributes += [
'class' => 'usersDeroulant transformSelect form-control',
'empty' => true,
'placeholder' => false,
'data-placeholder' => ' '
];
$field = $this->WebcilForm->{$type}($path, $options, $attributes);
} else {
$attributes += [
'class' => 'form-control',
];
$field = $this->WebcilForm->{$type}($path, $attributes);
}
echo $this->Html->tag('div', $field, ['class' => 'col-md-8']);
$errors = Hash::get($this->validationErrors, $path);
if (empty($errors) === false) {
if (count($errors) === 1) {
$errors = $errors[0];
} else {
$errors = '<ul><li>'.implode('</li><li>', $errors).'</li></ul>';
}
echo $this->Html->tag('div', $errors, ['class' => 'error-message']);
}
echo '</div>';
if ($trash === true) {
echo '<a href="#" class="'.$classTrash.'">';
echo $this->Html->tag('span', '', ['class' => 'fa fa-trash fa-lg fa-danger']);
echo '</a>';
}
?>
<ls-lib-login
logo="/img/web-dpo.svg"
logo="/img/web-dpo-login_2020.svg"
visual-configuration='<?php echo ($configLoginExistante); ?>'
login-username-input-name="data[User][username]"
login-password-input-name="data[User][password]"
......
var makeUsersDeroulant = function() {
try {
$('.chosen-select, .usersDeroulant').chosen({
no_results_text: 'Aucun résultat trouvé pour',
allow_single_deselect: true,
width: '100%',
search_contains: true
});
} catch(exception) {
console.log(exception);
}
};
$(document).ready(function () {
try {
$('#modalNotif').modal();
......@@ -5,16 +18,7 @@ $(document).ready(function () {
console.log(exception);
}
try {
$('.chosen-select, .usersDeroulant').chosen({
no_results_text: 'Aucun résultat trouvé pour',
allow_single_deselect: true,
width: '100%',
search_contains: true
});
} catch(exception) {
console.log(exception);
}
makeUsersDeroulant();
try {
$('.my-tooltip').tooltip({
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment