Commit 98b98817 authored by THEO GUILLON's avatar THEO GUILLON
Browse files

Merge branch...

Merge branch '639-perte-des-filtres-dans-la-visualisation-de-tous-les-traitements-lors-de-l-utilisation-de-la' into '2.1.3'

Resolve "Perte des filtres dans la visualisation de tous les traitements lors de l'utilisation de la pagination"

See merge request libriciel/pole-citoyens/web-DPO/web-DPO!673
parents 4925d1dd effd3bb5
Pipeline #22281 passed with stage
in 1 minute and 54 seconds
......@@ -23,6 +23,9 @@ Le format est basé sur le modèle [Keep a Changelog](http://keepachangelog.com/
- Correction de l'utilisation des filtres sur les référentiels lors de la visualisation de tous les traitements de l'entité
- [#673](https://gitlab.libriciel.fr/libriciel/pole-citoyens/web-DPO/web-DPO/-/issues/673)
Conservation des filtres lors du changement de page.
[2.1.2] - 23-11-2021
=====
......
......@@ -89,8 +89,14 @@ class ArticlesController extends AppController {
$this->set('title', __d('article', 'article.titreIndex'));
// "Transformation" des paramètres nommés en request params pour le filtre et la pagination
$search = Hash::expand((array)Hash::get($this->request->params, 'named'));
if (false === empty($search)) {
$this->request->data = $search;
}
$conditions = [];
if ($this->request->is('post')) {
if ($this->request->is('post') || false === empty($search)) {
// Affectation
if (!empty($this->request->data['ArticleOrganisation']['organisation_id'])) {
if (isset($this->request->data['ArticleOrganisation']) === true) {
......
......@@ -66,12 +66,13 @@ class FormulairesController extends AppController
'Formulaire.archive' => 'false'
];
$named = Hash::expand((array)Hash::get($this->request->params, 'named'));
if (false === empty($named)) {
$this->request->data = $named;
// "Transformation" des paramètres nommés en request params pour le filtre et la pagination
$search = Hash::expand((array)Hash::get($this->request->params, 'named'));
if (false === empty($search)) {
$this->request->data = $search;
}
if ($this->request->is('post') || false === empty($named)) {
if ($this->request->is('post') || false === empty($search)) {
$data = $this->request->data;
// Applications des filtres
......
......@@ -72,15 +72,15 @@ class NormesController extends AppController {
'order' => 'Norme.norme ASC',
'limit' => 20
];
// "Transformation" des paramètres nommés en request params pour le filtre et la pagination
$named = Hash::expand((array)Hash::get($this->request->params, 'named'));
if(false === empty($named)) {
$this->request->data = $named;
$search = Hash::expand((array)Hash::get($this->request->params, 'named'));
if (false === empty($search)) {
$this->request->data = $search;
}
// Conditions venant implicitement de l'action, de l'utilisateur connecté et des filtres
if ($this->request->is('post') || false === empty($named)) {
if ($this->request->is('post') || false === empty($search)) {
// Filtre par norme
$filtreNorme = (string)Hash::get($this->request->data, 'normes.norme');
if ('' !== $filtreNorme) {
......
......@@ -959,27 +959,34 @@ class PannelController extends AppController {
// Tous les traitements
$query = $this->Banettes->queryAllTraitements();
if ($this->request->is('post')) {
// "Transformation" des paramètres nommés en request params pour le filtre et la pagination
$search = Hash::expand((array)Hash::get($this->request->params, 'named'));
if (false === empty($search)) {
$this->request->data = $search;
}
if ($this->request->is('post') || false === empty($search)) {
$dataFiltre = $this->request->data['Filtre'];
$conditions = [];
// Filtre sur l'utilisateur à l'origine du traitement
if (!empty($this->request->data['Filtre']['filtreEtatTraitement'])) {
$conditions['EtatFiche.etat_id'] = $this->request->data['Filtre']['filtreEtatTraitement'];
if (!empty($dataFiltre['filtreEtatTraitement'])) {
$conditions['EtatFiche.etat_id'] = $dataFiltre['filtreEtatTraitement'];
}
// Filtre sur l'utilisateur à l'origine du traitement
if (!empty($this->request->data['Filtre']['user'])) {
$conditions['Fiche.user_id'] = $this->request->data['Filtre']['user'];
if (!empty($dataFiltre['user'])) {
$conditions['Fiche.user_id'] = $dataFiltre['user'];
}
// Filtre sur le nom du traitement
if (!empty($this->request->data['Filtre']['outil'])) {
if (!empty($dataFiltre['outil'])) {
$conditionValeur[] = [
'Valeur.champ_name' => 'outilnom',
'NOACCENTS_UPPER( Valeur.valeur ) LIKE' => '%'.str_replace(
'*',
'%',
trim(noaccents_upper($this->request->data['Filtre']['outil']))
trim(noaccents_upper($dataFiltre['outil']))
).'%'
];
......@@ -997,63 +1004,63 @@ class PannelController extends AppController {
}
// Filtre sur le service à l'origine du traitement
if (!empty($this->request->data['Filtre']['service'])) {
$conditions['Fiche.service_id'] = $this->request->data['Filtre']['service'];
if (!empty($dataFiltre['service'])) {
$conditions['Fiche.service_id'] = $dataFiltre['service'];
}
// Filtre sur une norme
if (!empty($this->request->data['Filtre']['norme'])) {
$conditions['Fiche.norme_id'] = $this->request->data['Filtre']['norme'];
if (!empty($dataFiltre['norme'])) {
$conditions['Fiche.norme_id'] = $dataFiltre['norme'];
}
// Filtre sur un référentiel
if (!empty($this->request->data['Filtre']['referentiel'])) {
$condition['Fiche.referentiel_id'] = $this->request->data['Filtre']['referentiel'];
if (!empty($dataFiltre['referentiel'])) {
$condition['Fiche.referentiel_id'] = $dataFiltre['referentiel'];
}
// Filtre sur les formulaires
if (!empty($this->request->data['Filtre']['formulaire'])) {
$conditions['Fiche.form_id'] = $this->request->data['Filtre']['formulaire'];
if (!empty($dataFiltre['formulaire'])) {
$conditions['Fiche.form_id'] = $dataFiltre['formulaire'];
}
// Filtre sur l'obligation d'un AIPD
if (!empty($this->request->data['Filtre']['obligation_pia'])) {
$conditions['Fiche.obligation_pia'] = $this->request->data['Filtre']['obligation_pia'];
if (!empty($dataFiltre['obligation_pia'])) {
$conditions['Fiche.obligation_pia'] = $dataFiltre['obligation_pia'];
}
// Filtre sur la réalisation d'un AIPD
if (!empty($this->request->data['Filtre']['realisation_pia'])) {
$conditions['Fiche.realisation_pia'] = $this->request->data['Filtre']['realisation_pia'];
if (!empty($dataFiltre['realisation_pia'])) {
$conditions['Fiche.realisation_pia'] = $dataFiltre['realisation_pia'];
}
// Filtre sur le dépot d'un AIPD
if (!empty($this->request->data['Filtre']['depot_pia'])) {
$conditions['Fiche.depot_pia'] = $this->request->data['Filtre']['depot_pia'];
if (!empty($dataFiltre['depot_pia'])) {
$conditions['Fiche.depot_pia'] = $dataFiltre['depot_pia'];
}
// Filtre sur le transfert hors ue
if (!empty($this->request->data['Filtre']['transfert_hors_ue'])) {
$conditions['Fiche.transfert_hors_ue'] = $this->request->data['Filtre']['transfert_hors_ue'];
if (!empty($dataFiltre['transfert_hors_ue'])) {
$conditions['Fiche.transfert_hors_ue'] = $dataFiltre['transfert_hors_ue'];
}
// Filtre sur les données sensibles
if (!empty($this->request->data['Filtre']['donnees_sensibles'])) {
$conditions['Fiche.donnees_sensibles'] = $this->request->data['Filtre']['donnees_sensibles'];
if (!empty($dataFiltre['donnees_sensibles'])) {
$conditions['Fiche.donnees_sensibles'] = $dataFiltre['donnees_sensibles'];
}
// Filtre sur la soustraitance
if (!empty($this->request->data['Filtre']['soustraitance'])) {
$conditions['Fiche.soustraitance'] = $this->request->data['Filtre']['soustraitance'];
if (!empty($dataFiltre['soustraitance'])) {
$conditions['Fiche.soustraitance'] = $dataFiltre['soustraitance'];
}
// Filtre par sous-traitant
if (!empty($this->request->data['Filtre']['soustraitant'])) {
if (!empty($dataFiltre['soustraitant'])) {
$subQuery = [
'alias' => 'soustraitances',
'fields' => ['soustraitances.fiche_id'],
'contain' => false,
'conditions' => [
'soustraitances.soustraitant_id' => $this->request->data['Filtre']['soustraitant']
'soustraitances.soustraitant_id' => $dataFiltre['soustraitant']
]
];
$sql = $this->Soustraitance->sql($subQuery);
......@@ -1061,18 +1068,18 @@ class PannelController extends AppController {
}
// Filtre sur la co-responsabilité
if (!empty($this->request->data['Filtre']['coresponsable'])) {
$conditions['Fiche.coresponsable'] = $this->request->data['Filtre']['coresponsable'];
if (!empty($dataFiltre['coresponsable'])) {
$conditions['Fiche.coresponsable'] = $dataFiltre['coresponsable'];
}
// Filtre par responsable
if (!empty($this->request->data['Filtre']['responsable'])) {
if (!empty($dataFiltre['responsable'])) {
$subQuery = [
'alias' => 'coresponsables',
'fields' => ['coresponsables.fiche_id'],
'contain' => false,
'conditions' => [
'coresponsables.responsable_id' => $this->request->data['Filtre']['responsable']
'coresponsables.responsable_id' => $dataFiltre['responsable']
]
];
$sql = $this->Coresponsable->sql($subQuery);
......@@ -1080,14 +1087,14 @@ class PannelController extends AppController {
}
// Filtre sur la decision automatisee
if (!empty($this->request->data['Filtre']['decisionAutomatisee'])) {
if (!empty($dataFiltre['decisionAutomatisee'])) {
$subQuery = [
'alias' => 'valeurs',
'fields' => ['valeurs.fiche_id'],
'contain' => false,
'conditions' => [
'valeurs.champ_name' => 'decisionAutomatisee',
'valeurs.valeur' => $this->request->data['Filtre']['decisionAutomatisee']
'valeurs.valeur' => $dataFiltre['decisionAutomatisee']
]
];
$sql = $this->Valeur->sql($subQuery);
......@@ -1095,13 +1102,13 @@ class PannelController extends AppController {
}
// Filtre sur le type d'annexe
if (!empty($this->request->data['Filtre']['type_annexe'])) {
if (!empty($dataFiltre['type_annexe'])) {
$subQuery = [
'alias' => 'fichiers',
'fields' => ['fichiers.fiche_id'],
'contain' => false,
'conditions' => [
'fichiers.typage_id' => $this->request->data['Filtre']['type_annexe']
'fichiers.typage_id' => $dataFiltre['type_annexe']
]
];
$sql = $this->Fichier->sql($subQuery);
......
......@@ -70,8 +70,14 @@ class ResponsablesController extends AppController {
]
];
// "Transformation" des paramètres nommés en request params pour le filtre et la pagination
$search = Hash::expand((array)Hash::get($this->request->params, 'named'));
if (false === empty($search)) {
$this->request->data = $search;
}
// Applications des filtres
if ($this->request->is('post')) {
if ($this->request->is('post') || false === empty($search)) {
if ($this->request->params['action'] === 'index') {
// Filtrer par entité associée
if (!empty($this->request->data['Filtre']['organisation'])) {
......
......@@ -87,7 +87,13 @@ class ServicesController extends AppController {
'order' => 'libelle ASC'
];
if ($this->request->is('post')) {
// "Transformation" des paramètres nommés en request params pour le filtre et la pagination
$search = Hash::expand((array)Hash::get($this->request->params, 'named'));
if (false === empty($search)) {
$this->request->data = $search;
}
if ($this->request->is('post') || false === empty($search)) {
$data = $this->request->data;
if (isset($data['Filtre'])) {
......
......@@ -69,8 +69,14 @@ class SoustraitantsController extends AppController {
]
];
// "Transformation" des paramètres nommés en request params pour le filtre et la pagination
$search = Hash::expand((array)Hash::get($this->request->params, 'named'));
if (false === empty($search)) {
$this->request->data = $search;
}
// Applications des filtres
if ($this->request->is('post')) {
if ($this->request->is('post') || false === empty($search)) {
if ($this->request->params['action'] === 'index') {
// Filtrer par entité associée
if (!empty($this->request->data['Filtre']['organisation'])) {
......
......@@ -59,8 +59,14 @@ class TypagesController extends AppController {
]
];
// "Transformation" des paramètres nommés en request params pour le filtre et la pagination
$search = Hash::expand((array)Hash::get($this->request->params, 'named'));
if (false === empty($search)) {
$this->request->data = $search;
}
// Applications des filtres
if ($this->request->is('post') && $this->request->params['action'] === 'index') {
if ($this->request->is('post') && $this->request->params['action'] === 'index' || false === empty($search)) {
// Filtrer par entité associée
if (!empty($this->request->data['Filtre']['organisation'])) {
$paginate['conditions'][] = $this->Typage->getConditionOrganisation($this->request->data['Filtre']['organisation']);
......
......@@ -136,13 +136,13 @@ class UsersController extends AppController {
];
// "Transformation" des paramètres nommés en request params pour le filtre et la pagination
$named = Hash::expand((array)Hash::get($this->request->params, 'named'));
if(false === empty($named)) {
$this->request->data = $named;
$search = Hash::expand((array)Hash::get($this->request->params, 'named'));
if (false === empty($search)) {
$this->request->data = $search;
}
// Conditions venant implicitement de l'action, de l'utilisateur connecté et des filtres
if ($this->request->is('post') || false === empty($named)) {
if ($this->request->is('post') || false === empty($search)) {
// Filtre par entité
$organisation_id = (string)Hash::get($this->request->data, 'users.organisation');
if ('' !== $organisation_id) {
......
......@@ -22,6 +22,10 @@ if (empty($filters['Filtre'])) {
<div id="divFiltrage" <?php if(true === empty($filters)) {echo 'style="display: none;"';}?>>
<?php
echo $this->Form->create('Filtre', [
'url' => [
'controller' => $this->request->params['controller'],
'action' => $this->request->params['action']
],
'class' => 'search-form'
]);
?>
......
......@@ -23,6 +23,10 @@ if (empty($filters['Filtre'])) {
<div id="divFiltrage" <?php if(true === empty($filters)) {echo 'style="display: none;"';}?>>
<?php
echo $this->Form->create('Filtre', [
'url' => [
'controller' => $this->request->params['controller'],
'action' => $this->request->params['action']
],
'class' => 'search-form'
]);
?>
......
......@@ -27,6 +27,10 @@ if (empty($filters['Filtre'])) {
<div id="divFiltrage" <?php if(true === empty($filters)) {echo 'style="display: none;"';}?>>
<?php
echo $this->Form->create('Filtre', [
'url' => [
'controller' => $this->request->params['controller'],
'action' => $this->request->params['action']
],
'class' => 'search-form'
]);
?>
......
......@@ -35,6 +35,10 @@ if (empty($filters['Filtre'])) {
<div id="divFiltrage" <?php if(true === empty($filters)) {echo 'style="display: none;"';}?>>
<?php
echo $this->Form->create('Filtre', [
'url' => [
'controller' => $this->request->params['controller'],
'action' => $this->request->params['action']
],
'class' => 'search-form'
]);
?>
......
......@@ -23,6 +23,10 @@ if (empty($filters['Filtre'])) {
<div id="divFiltrage" <?php if(true === empty($filters)) {echo 'style="display: none;"';}?>>
<?php
echo $this->Form->create('Filtre', [
'url' => [
'controller' => $this->request->params['controller'],
'action' => $this->request->params['action']
],
'class' => 'search-form'
]);
?>
......
......@@ -27,6 +27,10 @@ if (empty($filters['Filtre'])) {
<div id="divFiltrage" <?php if(true === empty($filters)) {echo 'style="display: none;"';}?>>
<?php
echo $this->Form->create('Filtre', [
'url' => [
'controller' => $this->request->params['controller'],
'action' => $this->request->params['action']
],
'class' => 'search-form'
]);
?>
......@@ -38,36 +42,31 @@ if (empty($filters['Filtre'])) {
echo $this->element('Filtres/Parametrages/organisation_associee', [
'options' => $options['organisations']
]);
?>
</div>
// Filtrer sur le siret
echo $this->element('Filtres/Parametrages/siret', [
'fieldname' => 'siretstructure',
'options' => $options['siretstructure']
<div class="col-md-6">
<?php
echo $this->element('Filtres/Parametrages/organisation_creatrice', [
'options' => $options['organisations']
]);
?>
</div>
<div class="row">
<?php
// Filtrer par entité associée
echo $this->element('Filtres/Parametrages/organisation_associee', ['options' => $options['organisations']]);
// Filtrer sur le siret
echo $this->element('Filtres/Parametrages/siret', ['fieldname' => 'siretstructure', 'options' => $options['siretstructure']]);
?>
</div>
<br>
<div class="col-md-6">
<?php
// Filtrer par raison sociale
echo $this->element('Filtres/Parametrages/raisonsociale', [
'options' => $options['raisonsocialestructure']
]);
// Filtrer sur le code APE
echo $this->element('Filtres/Parametrages/ape', [
'options' => $options['apestructure']
]);
// Filtrer par raison sociale
echo $this->element('Filtres/Parametrages/raisonsociale', [
'options' => $options['raisonsocialestructure']
]);
// Filtrer sur le siret
echo $this->element('Filtres/Parametrages/siret', [
'fieldname' => 'siretstructure',
'options' => $options['siretstructure']
]);
?>
</div>
......@@ -75,8 +74,9 @@ if (empty($filters['Filtre'])) {
<div class="col-md-6">
<?php
echo $this->element('Filtres/Parametrages/organisation_creatrice', [
'options' => $options['organisations']
// Filtrer sur le code APE
echo $this->element('Filtres/Parametrages/ape', [
'options' => $options['apestructure']
]);
?>
</div>
......
......@@ -21,7 +21,7 @@ echo $this->element('Buttons/filtre', [
$filters = $this->request->data;
unset($filters['sort'], $filters['direction'], $filters['page']);
if(empty($filters['Filtre'])) {
if (empty($filters['Filtre'])) {
unset($filters['Filtre']);
}
?>
......@@ -29,6 +29,10 @@ if(empty($filters['Filtre'])) {
<div id="divFiltrage" <?php if(true === empty($filters)) {echo 'style="display: none;"';}?>>
<?php
echo $this->Form->create('Filtre', [
'url' => [
'controller' => $this->request->params['controller'],
'action' => $this->request->params['action']
],
'class' => 'search-form'
]);
?>
......
......@@ -24,7 +24,11 @@ echo $this->element('Buttons/filtre', [
]);
$filters = $this->request->data;
unset($filters['sort'], $filters['direction'], $filters['page']);
if (empty($filters['Filtre'])) {
unset($filters['Filtre']);
}
?>
<div id="divFiltrage" <?php if(true === empty($filters)) {echo 'style="display: none;"';}?>>
......
Supports Markdown
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