Commit 5c579fac authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Nouvelle aide de vue IdrefLink pour générer un lien pérenne vers la notice IdRef

parent 3aada6c2
Loading
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -4,12 +4,19 @@ namespace UnicaenIdref;

use UnicaenIdref\Controller\IndexController;
use UnicaenIdref\Controller\IndexControllerFactory;
use UnicaenIdref\View\Helper\IdrefLinkViewHelper;
use UnicaenIdref\View\Helper\IdrefLinkViewHelperFactory;
use UnicaenIdref\View\Helper\IdrefPopupTriggerViewHelper;
use UnicaenIdref\View\Helper\IdrefPopupTriggerViewHelperFactory;

return [
    'id_ref' => [

    'idref' => [
        /**
         * URL de l'interface publique IdRef permettant la consultation des notices d'autorités produites par les
         * établissements membres des réseaux documentaires de l'ESR (Sudoc, Calames, Star).
         * On peut construire l'URL d'accès pérenne à une notice en ajoutant le PPN, ex : "https://www.idref.fr/123456789".
         */
        'idref_url' => 'https://www.idref.fr'
    ],
    'router' => [
        'routes' => [
@@ -28,7 +35,7 @@ return [
    ],
    'bjyauthorize' => [
        'guards' => [
            '\UnicaenAuth\Guard\PrivilegeController' => [
            'UnicaenAuth\Guard\PrivilegeController' => [
                [
                    /**
                     * @see IndexController::indexAction()
@@ -54,9 +61,11 @@ return [
    'view_helpers' => [
        'factories' => [
            IdrefPopupTriggerViewHelper::class => IdrefPopupTriggerViewHelperFactory::class,
            IdrefLinkViewHelper::class => IdrefLinkViewHelperFactory::class,
        ],
        'aliases' => [
            'idrefPopupTrigger' => IdrefPopupTriggerViewHelper::class,
            'idrefLink' => IdrefLinkViewHelper::class,
        ],
        'shared' => [
            IdrefPopupTriggerViewHelper::class => false,
+1 −1
Original line number Diff line number Diff line
<?php
return [
    'id_ref' => [
    'idref' => [

    ]
];
 No newline at end of file
+44 −0
Original line number Diff line number Diff line
<?php

namespace UnicaenIdref\View\Helper;

use Laminas\View\Helper\AbstractHelper;

/**
 * Aide de vue dessinant un lien pointant vers l'URL d'accès pérenne à une notice IDRef.
 *
 * @property \Laminas\View\Renderer\PhpRenderer $view
 */
class IdrefLinkViewHelper extends AbstractHelper
{
    private ?string $idrefUrl = null;
    private string $ppn;

    public function setIdrefUrl(string $idrefUrl): self
    {
        $this->idrefUrl = rtrim($idrefUrl, '/');

        return $this;
    }

    /**
     * Point d'entrée.
     *
     * @param string $ppn PPN de la notice
     */
    public function __invoke(string $ppn): self
    {
        $this->ppn = $ppn;

        return $this;
    }

    public function __toString(): string
    {
        if (!$this->idrefUrl) {
            return sprintf('<a href="#" onclick="return false" title="Erreur : URL d\'accès pérenne aux notices IdRef non fournie">%s</a>', $this->ppn);
        }

        return sprintf('<a href="%s">%s</a>', $this->idrefUrl . '/' . $this->ppn, $this->ppn);
    }
}
 No newline at end of file
+25 −0
Original line number Diff line number Diff line
<?php

namespace UnicaenIdref\View\Helper;

use Psr\Container\ContainerInterface;

class IdrefLinkViewHelperFactory
{
    /**
     * @throws \Psr\Container\ContainerExceptionInterface
     * @throws \Psr\Container\NotFoundExceptionInterface
     */
    public function __invoke(ContainerInterface $container): IdrefLinkViewHelper
    {
        $helper = new IdrefLinkViewHelper();

        $config = $container->get('Config');
        $url = $config['idref']['idref_url'] ?? null;
        if ($url) {
            $helper->setIdrefUrl($url);
        }
        
        return $helper;
    }
}
 No newline at end of file