Commit 754f3fa1 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Attachement de documents aux structures : aperçu dispo selon le type de...

Attachement de documents aux structures : aperçu dispo selon le type de fichier, ajout du lien de téléchargement, création de UrlFichierViewHelper.
parent 55eb4dea
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@ Journal des modifications
------
- Notifications par mail basées sur un template : le code du template est passé via le header References pour faciliter de debug.
- Pages 'Rôles et privilèges' et 'Profils et privilèges' : harmonisation + mention du code de chaque catégorie/privilège pour faciliter la recherche.
- Attachement de documents aux structures : aperçu dispo selon le type de fichier, ajout du lien de téléchargement, création de UrlFichierViewHelper.
- [FIX] Le menu Formations n'était pas généré pour le rôle Gestionnaire de formation.
- [FIX] Retour en arrière : un candidat peut de nouveau attester sur l'honneur même si le dossier n'a pas été jugé complet par la gestionnaire.
- [FIX] Admission : impossible de déclarer complète l'étape Document par les gestionnaires.
+14 −2
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@ use Fichier\Controller\ConsoleController;
use Fichier\Controller\Factory\FichierControllerFactory;
use Fichier\Controller\FichierController;
use Fichier\Controller\Plugin\UrlFichier;
use Fichier\Controller\Plugin\UrlFichierFactory;
use Fichier\Exporter\PageFichierIntrouvablePdfExporter;
use Fichier\Exporter\PageFichierIntrouvablePdfExporterFactory;
use Fichier\Form\FichierForm;
@@ -33,6 +34,8 @@ use Fichier\Service\Url\UrlServiceFactory;
use Fichier\Service\ValiditeFichier\ValiditeFichierService;
use Fichier\Service\VersionFichier\VersionFichierService;
use Fichier\View\Helper\Fichier\FichierViewHelper;
use Fichier\View\Helper\Fichier\UrlFichierViewHelper;
use Fichier\View\Helper\Fichier\UrlFichierViewHelperFactory;
use Laminas\ServiceManager\Factory\InvokableFactory;
use Unicaen\Console\Router\Simple;
use UnicaenPrivilege\Guard\PrivilegeController;
@@ -302,9 +305,12 @@ return [
        ],
    ] ,
    'controller_plugins' => [
        'invokables' => [
            'urlFichier' => UrlFichier::class,
        'factories' => [
            UrlFichier::class => UrlFichierFactory::class,
        ],
        'aliases' => [
            'urlFichier' => UrlFichier::class,
        ]
    ],
    'hydrators' => [
        'factories' => [
@@ -315,6 +321,12 @@ return [
        'invokables' => [
            'fichier' => FichierViewHelper::class,
        ],
        'factories' => [
            UrlFichierViewHelper::class => UrlFichierViewHelperFactory::class,
        ],
        'aliases' => [
            'urlFichier' => UrlFichierViewHelper::class,
        ]
    ],
    'search_services' => [
        'factories' => [
+25 −53
Original line number Diff line number Diff line
@@ -2,65 +2,37 @@

namespace Fichier\Controller\Plugin;

use Application\Filter\IdifyFilterAwareTrait;
use Fichier\Entity\Db\Fichier;
use Fichier\Service\Url\UrlServiceAwareTrait;
use Laminas\Mvc\Controller\Plugin\Url as UrlPlugin;

/**
 *  Plugin de contrôleur générant des URL d'actions pour un Fichier donné.
 *
 * @method telechargerFichier(Fichier $fichier): string
 * @method telechargerPermanentFichier(Fichier $fichier): string
 * @method telechargerPermanentId($idPermanent): string
 * @method afficherFichier(Fichier $fichier): string
 * @method modifierFichier(Fichier $fichier): string
 * @method supprimerFichier(Fichier $fichier): string
 * @method listerFichiersCommuns(): string
 * @method televerserFichiersCommuns(): string
 *
 * @see \Fichier\Service\Url\UrlService::telechargerFichier
 * @see \Fichier\Service\Url\UrlService::telechargerPermanentFichier
 * @see \Fichier\Service\Url\UrlService::telechargerPermanentId
 * @see \Fichier\Service\Url\UrlService::afficherFichier
 * @see \Fichier\Service\Url\UrlService::modifierFichier
 * @see \Fichier\Service\Url\UrlService::supprimerFichier
 * @see \Fichier\Service\Url\UrlService::listerFichiersCommuns()
 * @see \Fichier\Service\Url\UrlService::televerserFichiersCommuns()
 */
class UrlFichier extends UrlPlugin
{
    use IdifyFilterAwareTrait;
    use UrlServiceAwareTrait;

    public function telechargerFichier(Fichier $fichier): string
    public function __call(string $name, array $arguments)
    {
        return $this->fromRoute('fichier/telecharger', [
            'fichier' => $this->idify($fichier),
            'fichierNom' => $fichier->getNom(),
        ], [], true);
    }

    public function telechargerPermanentFichier(Fichier $fichier): string
    {
        return $this->fromRoute('fichier/telecharger-permanent', [
            'idPermanent' => $fichier->getIdPermanent(),
        ], [], true);
    }

    public function telechargerPermanentId($idPermanent): string
    {
        return $this->fromRoute('fichier/telecharger-permanent', [
            'idPermanent' => $idPermanent,
        ], [], true);
    }

    public function afficherFichier(Fichier $fichier): string
    {
        return $this->fromRoute('fichier/afficher', [
            'fichier' => $fichier->getUuid(),
        ], [], true);
    }

    public function modifierFichier(Fichier $fichier): string
    {
        return $this->fromRoute('fichier/modifier', [
            'fichier' => $fichier->getUuid(),
        ], [], true);
    }

    public function supprimerFichier(Fichier $fichier): string
    {
        return $this->fromRoute('fichier/supprimer', [
            'fichier' => $this->idify($fichier),
            'fichierNom' => $fichier->getNom(),
        ], [], true);
    }

    public function listerFichiersCommuns(): string
    {
        return $this->fromRoute('fichier/lister-fichiers-communs', [], [], true);
    }

    public function televerserFichiersCommuns(): string
    {
        return $this->fromRoute('fichier/televerser-fichiers-communs', [], [], true);
        return call_user_func([$this->urlFichierService, $name], $arguments);
    }
}
 No newline at end of file
+21 −0
Original line number Diff line number Diff line
<?php

namespace Fichier\Controller\Plugin;

use Fichier\Service\Url\UrlService;
use Laminas\ServiceManager\Factory\FactoryInterface;
use Psr\Container\ContainerInterface;

class UrlFichierFactory implements FactoryInterface
{
    public function __invoke(ContainerInterface $container, $requestedName, array $options = null): UrlFichier
    {
        $plugin = new UrlFichier();

        /** @var \Fichier\Service\Url\UrlService $urlFichierService */
        $urlFichierService = $container->get(UrlService::class);
        $plugin->setUrlFichierService($urlFichierService);

        return $plugin;
    }
}
 No newline at end of file
+59 −1
Original line number Diff line number Diff line
@@ -2,13 +2,14 @@

namespace Fichier\Service\Url;

use Fichier\Entity\Db\Fichier;
use Fichier\Service\Fichier\FichierStorageServiceAwareTrait;
use Fichier\Service\Storage\Adapter\Exception\StorageAdapterException;
use LogicException;
use RuntimeException;
use Structure\Service\Etablissement\EtablissementServiceAwareTrait;

class UrlService
class UrlService extends \Application\Service\Url\UrlService
{
    use FichierStorageServiceAwareTrait;
    use EtablissementServiceAwareTrait;
@@ -97,4 +98,61 @@ class UrlService

        return $this->parameters[$name];
    }


    /********************** Génération d'URL *****************************/

    public function telechargerFichier(Fichier $fichier): string
    {
        return $this->fromRoute('fichier/telecharger', [
            'fichier' => $this->idify($fichier),
            'fichierNom' => $fichier->getNom(),
        ], [], true);
    }

    public function telechargerPermanentFichier(Fichier $fichier): string
    {
        return $this->fromRoute('fichier/telecharger-permanent', [
            'idPermanent' => $fichier->getIdPermanent(),
        ], [], true);
    }

    public function telechargerPermanentId($idPermanent): string
    {
        return $this->fromRoute('fichier/telecharger-permanent', [
            'idPermanent' => $idPermanent,
        ], [], true);
    }

    public function afficherFichier(Fichier $fichier): string
    {
        return $this->fromRoute('fichier/afficher', [
            'fichier' => $fichier->getUuid(),
        ], [], true);
    }

    public function modifierFichier(Fichier $fichier): string
    {
        return $this->fromRoute('fichier/modifier', [
            'fichier' => $fichier->getUuid(),
        ], [], true);
    }

    public function supprimerFichier(Fichier $fichier): string
    {
        return $this->fromRoute('fichier/supprimer', [
            'fichier' => $this->idify($fichier),
            'fichierNom' => $fichier->getNom(),
        ], [], true);
    }

    public function listerFichiersCommuns(): string
    {
        return $this->fromRoute('fichier/lister-fichiers-communs', [], [], true);
    }

    public function televerserFichiersCommuns(): string
    {
        return $this->fromRoute('fichier/televerser-fichiers-communs', [], [], true);
    }
}
 No newline at end of file
Loading