Loading config/merged/evenement.config.php +2 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ use UnicaenEvenement\Service\EvenementCollection\EvenementCollectionService; use UnicaenEvenement\Service\EvenementCollection\EvenementCollectionServiceFactory; use UnicaenEvenement\Service\EvenementGestion\EvenementGestionService; use UnicaenEvenement\Service\EvenementGestion\EvenementGestionServiceFactory; use UnicaenEvenement\View\Helper\EvenementsViewHelper; use UnicaenEvenement\View\Helper\EvenementViewHelper; use UnicaenEvenement\View\Helper\JournalViewHelper; use UnicaenPrivilege\Guard\PrivilegeController; Loading Loading @@ -178,6 +179,7 @@ return [ 'view_helpers' => [ 'invokables' => [ 'evenement' => EvenementViewHelper::class, 'evenements' => EvenementsViewHelper::class, 'journal' => JournalViewHelper::class, ], ], Loading src/UnicaenEvenement/Entity/HasEvenementsInterface.php +4 −2 Original line number Diff line number Diff line <?php namespace UnicaenEvenement\Entity\Db; namespace UnicaenEvenement\Entity; use Doctrine\Common\Collections\Collection; use UnicaenEvenement\Entity\Db\Evenement; interface HasEvenementsInterface { public function init() : void; public function initEvenements() : void; public function hasEvenement(Evenement $evenement): bool; public function addEvenement(Evenement $evenement): void; public function removeEvenement(Evenement $evenement): void; public function getEvenements(): Collection; } No newline at end of file src/UnicaenEvenement/Entity/HasEvenementsTrait.php +8 −2 Original line number Diff line number Diff line <?php namespace UnicaenEvenement\Entity\Db; namespace UnicaenEvenement\Entity; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use UnicaenEvenement\Entity\Db\Evenement; trait HasEvenementsTrait { public Collection $evenements; public function init() : void public function initEvenements() : void { $this->evenements = new ArrayCollection(); } Loading @@ -32,4 +33,9 @@ trait HasEvenementsTrait { $this->evenements->removeElement($evenement); } } public function getEvenements(): Collection { return $this->evenements; } } No newline at end of file src/UnicaenEvenement/View/Helper/EvenementsViewHelper.php 0 → 100644 +26 −0 Original line number Diff line number Diff line <?php namespace UnicaenEvenement\View\Helper; use Laminas\View\Helper\AbstractHelper; use Laminas\View\Helper\Partial; use Laminas\View\Renderer\PhpRenderer; use Laminas\View\Resolver\TemplatePathStack; use UnicaenEvenement\Entity\Db\Evenement; class EvenementsViewHelper extends AbstractHelper { /** * @param Evenement[] $evenements * @param array $options * @return string|Partial */ public function __invoke(array $evenements, array $options = []) { /** @var PhpRenderer $view */ $view = $this->getView(); $view->resolver()->attach(new TemplatePathStack(['script_paths' => [__DIR__ . "/partial"]])); return $view->partial('evenements', ['evenements' => $evenements, 'options' => $options]); } } No newline at end of file src/UnicaenEvenement/View/Helper/partial/evenements.phtml 0 → 100644 +96 −0 Original line number Diff line number Diff line <?php use UnicaenEvenement\Entity\Db\Evenement; use UnicaenEvenement\Provider\Privilege\EvenementinstancePrivileges; /** * @see \UnicaenEvenement\View\Helper\EvenementsViewHelper * @var Evenement[] $evenements * @var array $options */ usort($evenements, function (Evenement $a, Evenement $b) { return $a->getDatePlanification() <=> $b->getDatePlanification(); }); $types = []; foreach ($evenements as $evenement) { $types[$evenement->getType()->getId()] = $evenement->getType(); } $etats = []; foreach ($evenements as $evenement) { $etats[$evenement->getEtat()->getId()] = $evenement->getEtat(); } foreach($types as $t) { $listTypes[$t->getCode()] = $this->type($t)->renderIcon(); } foreach($etats as $e) { $listEtats[$e->getCode()] = $this->etat($e)->renderIcon(); } $canAfficher = $this->isAllowed(EvenementinstancePrivileges::getResourceId(EvenementinstancePrivileges::INSTANCE_CONSULTATION)); $canTraiter = $this->isAllowed(EvenementinstancePrivileges::getResourceId(EvenementinstancePrivileges::INSTANCE_TRAITEMENT)); $canModifier = $this->isAllowed(EvenementinstancePrivileges::getResourceId(EvenementinstancePrivileges::INSTANCE_EDITION)); $canSupprimer = $this->isAllowed(EvenementinstancePrivileges::getResourceId(EvenementinstancePrivileges::INSTANCE_SUPPRESSION)); ?> <table class="table table-condensed"> <thead> <tr> <th> Id </th> <th> Type </th> <th> État </th> <th> Créé le </th> <th> Planifié le </th> <th> Traité le </th> <th> Action </th> </tr> </thead> <tbody> <?php foreach ($evenements as $event) : ?> <tr> <td> <?php echo $event->getId(); ?> </td> <td data-order=" <?php echo $event->getNom(); ?>" data-filter=" <?php echo $event->getNom(); ?>"> <?php echo $this->type($event->getType())->render(); ?> <?php echo $event->getNom(); ?> <?php if ($event->getDescription()) : ?> <span class="icon icon-information" data-bs-toggle="tooltip" data-bs-html="true" title="<?php echo htmlentities($event->getDescription()); ?>"></span> <?php endif; ?> </td> <td data-order="<?php echo $event->getEtat()->getId() ?>"> <?php echo $this->etat($event->getEtat())->render(); ?> </td> <td data-order=" <?php echo ($event->getDateCreation()) ? $event->getDateCreation()->getTimestamp() : PHP_INT_MAX?>"> <?php echo ($event->getDateCreation())?$event->getDateCreation()->format('d/m/Y').' <br/> '.$event->getDateCreation()->format('H:i:s'):"---"; ?> </td> <td data-order=" <?php echo ($event->getDatePlanification()) ? $event->getDatePlanification()->getTimestamp() : PHP_INT_MAX ?>"> <?php echo ($event->getDatePlanification())?$event->getDatePlanification()->format('d/m/Y').' <br/> '.$event->getDatePlanification()->format('H:i:s'):"---"; ?> </td> <td data-order=" <?php echo ($event->getDateTraitement()) ? $event->getDateTraitement()->getTimestamp() : PHP_INT_MAX ?>"> <?php echo ($event->getDateTraitement())?$event->getDateTraitement()->format('d/m/Y').' <br/> '.$event->getDateTraitement()->format('H:i:s'):"---"; ?> </td> <td> <?php if ($canAfficher) : ?> <?php /** @see UnicaenEvenement\Controller\EvenementController::afficherAction() */ ?> <a href="<?php echo $this->url('unicaen-evenement/evenement/afficher', ['evenement' => $event->getId()], [], true); ?>" class="ajax-modal"> <span class="icon icon-voir" title="Afficher les information sur l'événement" ></span></a> <?php endif; ?> <?php if ($canTraiter) : ?> <?php /** @see UnicaenEvenement\Controller\EvenementController::traiterAction() */ ?> <a href="<?php echo $this->url('unicaen-evenement/evenement/traiter', ['ids' => $event->getId()], [], true); ?>" class="ajax-modal"> <span class="icon icon-play" title="Lancer le traitement de l'événement" ></span></a> <?php endif; ?> <?php if ($canModifier) : ?> <?php /** @see UnicaenEvenement\Controller\EvenementController::changerEtatAction() */ ?> <a href="<?php echo $this->url('unicaen-evenement/evenement/changer-etat', ['ids' => $event->getId()], [], true); ?>" class="ajax-modal"> <span class="icon icon-toggle-off" title="Modifier l'état de l'événement" ></span></a> <?php endif; ?> <?php if ($canSupprimer) : ?> <?php /** @see UnicaenEvenement\Controller\EvenementController::supprimerAction() */ ?> <a href="<?php echo $this->url('unicaen-evenement/evenement/supprimer', ['ids' => $event->getId()], [], true); ?>" class="ajax-modal"> <span class="icon icon-unchecked text-danger" title="Supprimer l'événement" ></span></a> <?php endif; ?> </td> </tr> <?php endforeach; ?> </table> Loading
config/merged/evenement.config.php +2 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ use UnicaenEvenement\Service\EvenementCollection\EvenementCollectionService; use UnicaenEvenement\Service\EvenementCollection\EvenementCollectionServiceFactory; use UnicaenEvenement\Service\EvenementGestion\EvenementGestionService; use UnicaenEvenement\Service\EvenementGestion\EvenementGestionServiceFactory; use UnicaenEvenement\View\Helper\EvenementsViewHelper; use UnicaenEvenement\View\Helper\EvenementViewHelper; use UnicaenEvenement\View\Helper\JournalViewHelper; use UnicaenPrivilege\Guard\PrivilegeController; Loading Loading @@ -178,6 +179,7 @@ return [ 'view_helpers' => [ 'invokables' => [ 'evenement' => EvenementViewHelper::class, 'evenements' => EvenementsViewHelper::class, 'journal' => JournalViewHelper::class, ], ], Loading
src/UnicaenEvenement/Entity/HasEvenementsInterface.php +4 −2 Original line number Diff line number Diff line <?php namespace UnicaenEvenement\Entity\Db; namespace UnicaenEvenement\Entity; use Doctrine\Common\Collections\Collection; use UnicaenEvenement\Entity\Db\Evenement; interface HasEvenementsInterface { public function init() : void; public function initEvenements() : void; public function hasEvenement(Evenement $evenement): bool; public function addEvenement(Evenement $evenement): void; public function removeEvenement(Evenement $evenement): void; public function getEvenements(): Collection; } No newline at end of file
src/UnicaenEvenement/Entity/HasEvenementsTrait.php +8 −2 Original line number Diff line number Diff line <?php namespace UnicaenEvenement\Entity\Db; namespace UnicaenEvenement\Entity; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use UnicaenEvenement\Entity\Db\Evenement; trait HasEvenementsTrait { public Collection $evenements; public function init() : void public function initEvenements() : void { $this->evenements = new ArrayCollection(); } Loading @@ -32,4 +33,9 @@ trait HasEvenementsTrait { $this->evenements->removeElement($evenement); } } public function getEvenements(): Collection { return $this->evenements; } } No newline at end of file
src/UnicaenEvenement/View/Helper/EvenementsViewHelper.php 0 → 100644 +26 −0 Original line number Diff line number Diff line <?php namespace UnicaenEvenement\View\Helper; use Laminas\View\Helper\AbstractHelper; use Laminas\View\Helper\Partial; use Laminas\View\Renderer\PhpRenderer; use Laminas\View\Resolver\TemplatePathStack; use UnicaenEvenement\Entity\Db\Evenement; class EvenementsViewHelper extends AbstractHelper { /** * @param Evenement[] $evenements * @param array $options * @return string|Partial */ public function __invoke(array $evenements, array $options = []) { /** @var PhpRenderer $view */ $view = $this->getView(); $view->resolver()->attach(new TemplatePathStack(['script_paths' => [__DIR__ . "/partial"]])); return $view->partial('evenements', ['evenements' => $evenements, 'options' => $options]); } } No newline at end of file
src/UnicaenEvenement/View/Helper/partial/evenements.phtml 0 → 100644 +96 −0 Original line number Diff line number Diff line <?php use UnicaenEvenement\Entity\Db\Evenement; use UnicaenEvenement\Provider\Privilege\EvenementinstancePrivileges; /** * @see \UnicaenEvenement\View\Helper\EvenementsViewHelper * @var Evenement[] $evenements * @var array $options */ usort($evenements, function (Evenement $a, Evenement $b) { return $a->getDatePlanification() <=> $b->getDatePlanification(); }); $types = []; foreach ($evenements as $evenement) { $types[$evenement->getType()->getId()] = $evenement->getType(); } $etats = []; foreach ($evenements as $evenement) { $etats[$evenement->getEtat()->getId()] = $evenement->getEtat(); } foreach($types as $t) { $listTypes[$t->getCode()] = $this->type($t)->renderIcon(); } foreach($etats as $e) { $listEtats[$e->getCode()] = $this->etat($e)->renderIcon(); } $canAfficher = $this->isAllowed(EvenementinstancePrivileges::getResourceId(EvenementinstancePrivileges::INSTANCE_CONSULTATION)); $canTraiter = $this->isAllowed(EvenementinstancePrivileges::getResourceId(EvenementinstancePrivileges::INSTANCE_TRAITEMENT)); $canModifier = $this->isAllowed(EvenementinstancePrivileges::getResourceId(EvenementinstancePrivileges::INSTANCE_EDITION)); $canSupprimer = $this->isAllowed(EvenementinstancePrivileges::getResourceId(EvenementinstancePrivileges::INSTANCE_SUPPRESSION)); ?> <table class="table table-condensed"> <thead> <tr> <th> Id </th> <th> Type </th> <th> État </th> <th> Créé le </th> <th> Planifié le </th> <th> Traité le </th> <th> Action </th> </tr> </thead> <tbody> <?php foreach ($evenements as $event) : ?> <tr> <td> <?php echo $event->getId(); ?> </td> <td data-order=" <?php echo $event->getNom(); ?>" data-filter=" <?php echo $event->getNom(); ?>"> <?php echo $this->type($event->getType())->render(); ?> <?php echo $event->getNom(); ?> <?php if ($event->getDescription()) : ?> <span class="icon icon-information" data-bs-toggle="tooltip" data-bs-html="true" title="<?php echo htmlentities($event->getDescription()); ?>"></span> <?php endif; ?> </td> <td data-order="<?php echo $event->getEtat()->getId() ?>"> <?php echo $this->etat($event->getEtat())->render(); ?> </td> <td data-order=" <?php echo ($event->getDateCreation()) ? $event->getDateCreation()->getTimestamp() : PHP_INT_MAX?>"> <?php echo ($event->getDateCreation())?$event->getDateCreation()->format('d/m/Y').' <br/> '.$event->getDateCreation()->format('H:i:s'):"---"; ?> </td> <td data-order=" <?php echo ($event->getDatePlanification()) ? $event->getDatePlanification()->getTimestamp() : PHP_INT_MAX ?>"> <?php echo ($event->getDatePlanification())?$event->getDatePlanification()->format('d/m/Y').' <br/> '.$event->getDatePlanification()->format('H:i:s'):"---"; ?> </td> <td data-order=" <?php echo ($event->getDateTraitement()) ? $event->getDateTraitement()->getTimestamp() : PHP_INT_MAX ?>"> <?php echo ($event->getDateTraitement())?$event->getDateTraitement()->format('d/m/Y').' <br/> '.$event->getDateTraitement()->format('H:i:s'):"---"; ?> </td> <td> <?php if ($canAfficher) : ?> <?php /** @see UnicaenEvenement\Controller\EvenementController::afficherAction() */ ?> <a href="<?php echo $this->url('unicaen-evenement/evenement/afficher', ['evenement' => $event->getId()], [], true); ?>" class="ajax-modal"> <span class="icon icon-voir" title="Afficher les information sur l'événement" ></span></a> <?php endif; ?> <?php if ($canTraiter) : ?> <?php /** @see UnicaenEvenement\Controller\EvenementController::traiterAction() */ ?> <a href="<?php echo $this->url('unicaen-evenement/evenement/traiter', ['ids' => $event->getId()], [], true); ?>" class="ajax-modal"> <span class="icon icon-play" title="Lancer le traitement de l'événement" ></span></a> <?php endif; ?> <?php if ($canModifier) : ?> <?php /** @see UnicaenEvenement\Controller\EvenementController::changerEtatAction() */ ?> <a href="<?php echo $this->url('unicaen-evenement/evenement/changer-etat', ['ids' => $event->getId()], [], true); ?>" class="ajax-modal"> <span class="icon icon-toggle-off" title="Modifier l'état de l'événement" ></span></a> <?php endif; ?> <?php if ($canSupprimer) : ?> <?php /** @see UnicaenEvenement\Controller\EvenementController::supprimerAction() */ ?> <a href="<?php echo $this->url('unicaen-evenement/evenement/supprimer', ['ids' => $event->getId()], [], true); ?>" class="ajax-modal"> <span class="icon icon-unchecked text-danger" title="Supprimer l'événement" ></span></a> <?php endif; ?> </td> </tr> <?php endforeach; ?> </table>