Loading config/module.config.php +12 −3 Original line number Diff line number Diff line Loading @@ -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' => [ Loading @@ -28,7 +35,7 @@ return [ ], 'bjyauthorize' => [ 'guards' => [ '\UnicaenAuth\Guard\PrivilegeController' => [ 'UnicaenAuth\Guard\PrivilegeController' => [ [ /** * @see IndexController::indexAction() Loading @@ -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, Loading config/unicaen-id-ref.global.php.dist +1 −1 Original line number Diff line number Diff line <?php return [ 'id_ref' => [ 'idref' => [ ] ]; No newline at end of file src/UnicaenIdref/View/Helper/IdrefLinkViewHelper.php 0 → 100644 +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 src/UnicaenIdref/View/Helper/IdrefLinkViewHelperFactory.php 0 → 100644 +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 Loading
config/module.config.php +12 −3 Original line number Diff line number Diff line Loading @@ -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' => [ Loading @@ -28,7 +35,7 @@ return [ ], 'bjyauthorize' => [ 'guards' => [ '\UnicaenAuth\Guard\PrivilegeController' => [ 'UnicaenAuth\Guard\PrivilegeController' => [ [ /** * @see IndexController::indexAction() Loading @@ -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, Loading
config/unicaen-id-ref.global.php.dist +1 −1 Original line number Diff line number Diff line <?php return [ 'id_ref' => [ 'idref' => [ ] ]; No newline at end of file
src/UnicaenIdref/View/Helper/IdrefLinkViewHelper.php 0 → 100644 +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
src/UnicaenIdref/View/Helper/IdrefLinkViewHelperFactory.php 0 → 100644 +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