Skip to content
Snippets Groups Projects
Commit b48d2c3b authored by Antony Le Courtes's avatar Antony Le Courtes
Browse files

Gestion admin des voiries (Tickets #27935)

parent d60fe630
No related branches found
No related tags found
1 merge request!55Ll bug report services
Showing
with 474 additions and 42 deletions
......@@ -392,10 +392,13 @@ return [
'tests' => 'Tests',
],
],
'employeur' => [
'libelle' => 'Employeurs',
'referentiel-commun' => [
'libelle' => 'Référentiels communs',
'privileges' => [
'gestion' => 'Gestion des employeurs',
'voirie-visualisation' => 'Visualisation voiries',
'voirie-edition' => 'Édition voiries',
'employeur-visualisation' => 'Visualisation employeurs',
'employeur-edition' => 'Édition employeurs',
],
],
......
......@@ -30,6 +30,17 @@ return [
],
'may_terminate' => true,
],
'administration-referentiel-commun' => [
'type' => 'Literal',
'options' => [
'route' => '/administration-referentiel-commun',
'defaults' => [
'controller' => 'Application\Controller\Administration',
'action' => 'administration-referentiel-commun',
],
],
'may_terminate' => true,
],
'administration-financiere' => [
'type' => 'Literal',
'options' => [
......@@ -65,6 +76,33 @@ return [
'resource' => PrivilegeController::getResourceId('Application\Controller\Administration', 'index'),
'order' => 7,
'pages' => [
'gestion-referentiel-commun' => [
'label' => 'Gestion référentiels communs',
'icon' => 'glyphicon glyphicon - list-alt',
'route' => 'administration-referentiel-commun',
'resource' => PrivilegeController::getResourceId('Application\Controller\Administration', 'administration-referentiel-commun'),
'order' => 80,
'border - color' => '#111',
'pages' => [
'voirie' => [
'label' => 'Gestion des voiries',
'icon' => 'fa fa-graduation-cap',
'route' => 'voirie',
'resource' => PrivilegeController::getResourceId('Application\Controller\Voirie', 'index'),
'order' => 800,
'border-color' => '#BBCF55',
],
'Employeurs' => [
'border-color' => '#9F491F',
'icon' => 'glyphicon glyphicon-list-alt',
'label' => "Gestion des employeurs",
'title' => "Gestion des employeurs",
'route' => 'employeur',
'resource' => PrivilegeController::getResourceId('Application\Controller\Employeur', 'index'),
'order' => 70,
],
],
],
'gestion-intervenant' => [
'label' => 'Gestion intervenants (Statuts, PJ, etc...)',
'icon' => 'glyphicon glyphicon - list-alt',
......@@ -130,12 +168,13 @@ return [
],
],
],
'bjyauthorize' => [
'guards' => [
PrivilegeController::class => [
[
'controller' => 'Application\Controller\Administration',
'action' => ['index', 'administration-types', 'administration-financiere', 'administration-intervenant'],
'action' => ['index', 'administration-types', 'administration-financiere', 'administration-intervenant', 'administration-referentiel-commun'],
'privileges' => [
Privileges::IMPORT_ECARTS,
Privileges::IMPORT_MAJ,
......@@ -150,6 +189,8 @@ return [
Privileges::DROIT_AFFECTATION_VISUALISATION,
Privileges::PARAMETRES_GENERAL_VISUALISATION,
Privileges::REFERENTIEL_ADMIN_VISUALISATION,
Privileges::REFERENTIEL_COMMUN_VOIRIE_VISUALISATION,
Privileges::REFERENTIEL_COMMUN_EMPLOYEUR_VISUALISATION,
Privileges::TYPE_INTERVENTION_VISUALISATION,
Privileges::TYPE_RESSOURCE_VISUALISATION,
Privileges::PIECE_JUSTIFICATIVE_GESTION_VISUALISATION,
......
......@@ -35,27 +35,7 @@ return [
],
],
'navigation' => [
'default' => [
'home' => [
'pages' => [
'administration' => [
'pages' => [
'Employeurs' => [
'border-color' => '#9F491F',
'icon' => 'glyphicon glyphicon-list-alt',
'label' => "Employeurs",
'title' => "Gestion des employeurs",
'route' => 'employeur',
'resource' => PrivilegeController::getResourceId('Application\Controller\Discipline', 'index'),//creer un priviege employeur
'order' => 70,
],
],
],
],
],
],
],
'console' => [
'router' => [
......@@ -75,7 +55,7 @@ return [
'controllers' => [
'factories' => [
'Application\Controller\Employeur' => Controller\Factory\EmployeurControllerFactory::class
'Application\Controller\Employeur' => Controller\Factory\EmployeurControllerFactory::class,
],
'invokables' => [
'Application\Controller\Employeur' => Controller\EmployeurController::class,
......@@ -88,7 +68,7 @@ return [
[
'controller' => 'Application\Controller\Employeur',
'action' => ['index', 'recherche-json'],
'privileges' => Privileges::EMPLOYEUR_GESTION,
'privileges' => Privileges::REFERENTIEL_COMMUN_EMPLOYEUR_VISUALISATION,
],
],
],
......@@ -102,7 +82,7 @@ return [
'allow' => [
[
'privileges' => [
Privileges::EMPLOYEUR_GESTION,
Privileges::REFERENTIEL_COMMUN_EMPLOYEUR_VISUALISATION,
],
'resources' => 'Contrat',
],
......
<?php
namespace Application;
use Application\Provider\Privilege\Privileges;
use UnicaenAuth\Guard\PrivilegeController;
return [
'router' => [
'routes' => [
'voirie' => [
'type' => 'Literal',
'options' => [
'route' => '/voirie',
'defaults' => [
'controller' => 'Application\Controller\Voirie',
'action' => 'index',
],
],
'may_terminate' => true,
'child_routes' => [
'saisie' => [
'type' => 'Segment',
'options' => [
'route' => '/saisie[/:voirie]',
'constraints' => [
'voirie' => '[0-9]*',
],
'defaults' => [
'action' => 'saisie',
],
],
'may_terminate' => true,
],
'delete' => [
'type' => 'Segment',
'options' => [
'route' => '/delete/:voirie',
'constraints' => [
'voirie' => '[0-9]*',
],
'defaults' => [
'action' => 'delete',
],
],
'may_terminate' => true,
],
],
],
],
],
'bjyauthorize' => [
'guards' => [
PrivilegeController::class => [
[
'controller' => 'Application\Controller\Voirie',
'action' => ['index'],
'privileges' => [Privileges::REFERENTIEL_COMMUN_VOIRIE_VISUALISATION],
],
[
'controller' => 'Application\Controller\Voirie',
'action' => ['saisie', 'delete'],
'privileges' => [Privileges::REFERENTIEL_COMMUN_VOIRIE_EDITION],
],
],
],
],
'controllers' => [
'invokables' => [
'Application\Controller\Voirie' => Controller\VoirieController::class,
],
],
'form_elements' => [
'invokables' => [
Form\Voirie\VoirieSaisieForm::class => Form\Voirie\VoirieSaisieForm::class,
],
],
];
......@@ -38,4 +38,11 @@ class AdministrationController extends AbstractController
return [];
}
public function administrationReferentielCommunAction()
{
return [];
}
}
\ No newline at end of file
<?php
namespace Application\Controller;
use Application\Entity\Db\Voirie;
use Application\Form\Voirie\Traits\VoirieSaisieFormAwareTrait;
use Application\Service\Traits\VoirieServiceAwareTrait;
use UnicaenApp\View\Model\MessengerViewModel;
class VoirieController extends AbstractController
{
use VoirieServiceAwareTrait;
use VoirieSaisieFormAwareTrait;
public function indexAction()
{
$this->em()->getFilters()->enable('historique')->init([
Voirie::class,
]);
$voiries = $this->getServiceVoirie()->getList();
return compact('voiries');
}
public function saisieAction()
{
$voirie = $this->getEvent()->getParam('voirie');
$form = $this->getFormVoirieSaisie();
if (empty($voirie)) {
$title = "Création d'une nouvelle voirie";
$voirie = $this->getServiceVoirie()->newEntity();
} else {
$title = "Edition d'une voirie";
}
$form->bindRequestSave($voirie, $this->getRequest(), function (Voirie $v) {
try {
$this->getServiceVoirie()->save($v);
$this->flashMessenger()->addSuccessMessage('Enregistrement effectué');
} catch (Exception $e) {
$this->flashMessenger()->addErrorMessage($this->translate($e));
}
});
return compact('form', 'title');
}
public function deleteAction()
{
$voirie = $this->getEvent()->getParam('voirie');
try {
$this->getServiceVoirie()->delete($voirie);
$this->flashMessenger()->addSuccessMessage("Voirie supprimée avec succés");
} catch (\Exception $e) {
$this->flasheMessenger()->addErrorMessage($this->translate($e));
}
return new MessengerViewModel(compact('voirie'));
}
}
\ No newline at end of file
<?php
namespace Application\Form\Voirie\Traits;
use Application\Form\Voirie\VoirieSaisieForm;
/**
* Description of VoirieSaisieFormAwareTrait
*/
trait VoirieSaisieFormAwareTrait
{
/**
* @var VoirieSaisieForm
*/
private $formVoirieSaisie;
/**
* @param VoirieSaisieForm $formVoirieSaisie
*
* @return self
*/
public function setFormVoirieSaisie(VoirieSaisieForm $formVoirieSaisie)
{
$this->formVoirieSaisie = $formVoirieSaisie;
return $this;
}
public function getFormVoirieSaisie()
{
if (!empty($this->formVoirieSaisie)) {
return $this->formVoirieSaisie;
}
return \Application::$container->get('FormElementManager')->get(VoirieSaisieForm::class);
}
}
<?php
namespace Application\Form\Voirie;
use Application\Form\AbstractForm;
use Application\Hydrator\GenericHydrator;
use Application\Service\Traits\SourceServiceAwareTrait;
use UnicaenApp\Util;
use UnicaenImport\Entity\Db\Source;
use Zend\Form\Element\Csrf;
/**
* Description of VoirieForm
*/
class VoirieSaisieForm extends AbstractForm
{
use SourceServiceAwareTrait;
protected $hydratorElements = [
'id' => ['type' => 'int'],
'libelle' => ['type' => 'string'],
'code' => ['type' => 'string'],
'source' => ['type' => Source::class],
'sourceCode' => ['type' => 'string'],
];
public function init()
{
$hydrator = new GenericHydrator($this->getServiceSource()->getEntityManager(), $this->hydratorElements);
$this->setHydrator($hydrator);
$this->setAttribute('action', $this->getCurrentUrl());
$this->add([
'name' => 'libelle',
'options' => [
'label' => 'Libellé',
],
'attributes' => [
],
'type' => 'Text',
]);
$this->add([
'name' => 'code',
'options' => [
'label' => "Code",
],
'attributes' => [
'id' => uniqid('code'),
],
'type' => 'Text',
]);
$this->add([
'name' => 'source',
'type' => 'Select',
'options' => [
'label' => 'Source des données',
'value_options' => Util::collectionAsOptions($this->getServiceSource()->getList()),
],
]);
$this->add([
'name' => 'sourceCode',
'type' => 'Text',
'options' => [
'label' => 'Code source',
],
]);
$this->add(new Csrf('security'));
$this->add([
'name' => 'submit',
'type' => 'Submit',
'attributes' => [
'value' => "Enregistrer",
'class' => 'btn btn-primary',
],
]);
$this->add([
'name' => 'id',
'type' => 'Hidden',
]);
return $this;
}
/**
* Should return an array specification compatible with
* {@link Zend\InputFilter\Factory::createInputFilter()}.
*
* @return array
*/
public function getInputFilterSpecification()
{
return [
'libelle' => [
'required' => false,
],
'code' => [
'required' => false,
],
];
}
}
......@@ -102,7 +102,6 @@ class Privileges extends \UnicaenAuth\Provider\Privilege\Privileges
const DOSSIER_VISUALISATION = 'dossier-visualisation';
const DROIT_AFFECTATION_EDITION = 'droit-affectation-edition';
const DROIT_AFFECTATION_VISUALISATION = 'droit-affectation-visualisation';
const EMPLOYEUR_GESTION = 'employeur-gestion';
const ENSEIGNEMENT_DEVALIDATION = 'enseignement-devalidation';
const ENSEIGNEMENT_EDITION = 'enseignement-edition';
const ENSEIGNEMENT_EXPORT_CSV = 'enseignement-export-csv';
......@@ -195,6 +194,10 @@ class Privileges extends \UnicaenAuth\Provider\Privilege\Privileges
const PLAFONDS_GESTION_VISUALISATION = 'plafonds-gestion-visualisation';
const REFERENTIEL_ADMIN_EDITION = 'referentiel-admin-edition';
const REFERENTIEL_ADMIN_VISUALISATION = 'referentiel-admin-visualisation';
const REFERENTIEL_COMMUN_VOIRIE_EDITION = 'referentiel-commun-voirie-edition';
const REFERENTIEL_COMMUN_VOIRIE_VISUALISATION = 'referentiel-commun-voirie-visualisation';
const REFERENTIEL_COMMUN_EMPLOYEUR_EDITION = 'referentiel-commun-employeur-edition';
const REFERENTIEL_COMMUN_EMPLOYEUR_VISUALISATION = 'referentiel-commun-employeur-visualisation';
const REFERENTIEL_DEVALIDATION = 'referentiel-devalidation';
const REFERENTIEL_EDITION = 'referentiel-edition';
const REFERENTIEL_VALIDATION = 'referentiel-validation';
......
<?php
/**
* @var $this \Application\View\Renderer\PhpRenderer
*/
use Application\Provider\Privilege\Privileges;
$this->headTitle()->append("Gestion des voiries");
$canEdit = $this->isAllowed(Privileges::getResourceId(Privileges::REFERENTIEL_COMMUN_VOIRIE_EDITION));
?>
<h1 class="page-header">Gestion des voiries</h1>
<table class="table table-bordered table-sort">
<thead>
<th>Code</th>
<th>Libelle</th>
<th>Source</th>
<?php if ($canEdit) echo '<th>Actions</th>' ?>
</thead>
<tbody>
<?php
/**
* @var \Application\Entity\Db\Voirie $voirie
*/
?>
<?php foreach ($voiries as $voirie): ?>
<tr>
<td><?= $voirie->getCode() ?></td>
<td data-order="<?= $voirie->getLibelle() ?>">
<?= $voirie->getLibelle() ?>
</td>
<td><?= $voirie->getSource()->getLibelle() ?></td>
<?php if ($canEdit): ?>
<td style="text-align:center;width:1px;white-space: nowrap">
<?php if (!$voirie->getSource()->getImportable()): ?>
<a class="disabled ajax-modal" data-event="voirie-saisie"
href="<?= $this->url('voirie/saisie', ['voirie' => $voirie->getId()]) ?>"
title="Modifier la voirie">
<span class="glyphicon glyphicon-edit"></span></a>
<a class="pop-ajax"
href="<?= $this->url('voirie/delete', ['voirie' => $voirie->getId()]) ?>"
title="Supprimer la voirie"
data-content="<p class='lead text-danger'><strong>Attention!</strong> Confirmez-vous cette suppression ?</p>"
data-confirm="true"
data-confirm-button="Oui"
data-cancel-button="Non"
data-submit-reload="true"
>
<span class="glyphicon glyphicon-remove"></span>
</a>
<?php else: ?>
Non modifiable
<?php endif; ?>
</td>
<?php endif; ?>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<?php if ($canEdit): ?>
<a class="btn btn-primary ajax-modal" data-event="voirie-saisie"
href="<?= $this->url('voirie/saisie') ?>"
title="Ajouter une voirie">
<span class="glyphicon glyphicon-edit"></span>
Ajouter une voirie</a>
<script type="text/javascript">
$(function () {
$("body").on("voirie-saisie", function (event, data) {
window.location.reload();
});
});
</script>
<?php endif ?>
<?php
/**
* @var $this \Application\View\Renderer\PhpRenderer
*/
echo $this->messenger()->addCurrentMessagesFromFlashMessenger();
echo $this->form($form);
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment