From 48cde2db3ced44aa84fbed10e3e0d62c73de7ffa Mon Sep 17 00:00:00 2001
From: Bertrand GAUTHIER <bertrand.gauthier@unicaen.fr>
Date: Fri, 4 Apr 2025 17:04:44 +0200
Subject: [PATCH] =?UTF-8?q?Les=20scripts=20js=20ne=20sont=20plus=20syst?=
 =?UTF-8?q?=C3=A9matiquement=20inclus=20dans=20<head>=20(trop=20de=20requ?=
 =?UTF-8?q?=C3=AAtes=20intempestives=20sur=20toutes=20les=20pages)=20mais?=
 =?UTF-8?q?=20en=20"inline"=20par=20l'aide=20de=20vue=20IdrefPopupTriggerV?=
 =?UTF-8?q?iewHelper=20si=20besoin.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 CHANGELOG.md                                  |  5 ++++
 config/module.config.php                      | 10 ++++----
 .../Helper/IdrefPopupTriggerViewHelper.php    | 24 +++++++++++++++++++
 3 files changed, 34 insertions(+), 5 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 793b9ba..0f1feaa 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,11 @@
 Journal des modifications
 =========================
 
+2.2.0
+-----
+- Les scripts js ne sont plus systématiquement inclus dans <head> (trop de requêtes intempestives sur toutes les pages) 
+  mais en "inline" par l'aide de vue IdrefPopupTriggerViewHelper si besoin.
+
 2.1.0
 -----
 - Suppression de la dépendance avec laminas/laminas-dependency-plugin.
diff --git a/config/module.config.php b/config/module.config.php
index d5f620a..199628f 100644
--- a/config/module.config.php
+++ b/config/module.config.php
@@ -89,11 +89,11 @@ return [
      * Les chemins ci-dessous sont donc relatifs au dossier racine de l'appli.
      */
     'public_files' => [
-        'head_scripts' => [
-            '099_unicaen-idref_js_1' => '/unicaen/idref/js/formulaire.js',
-            '099_unicaen-idref_js_2' => '/unicaen/idref/js/subModal.js',
-            '099_unicaen-idref_js_3' => '/unicaen/idref/js/trigger.js',
-        ],
+//        'head_scripts' => [
+//            '099_unicaen-idref_js_1' => '/unicaen/idref/js/formulaire.js',
+//            '099_unicaen-idref_js_2' => '/unicaen/idref/js/subModal.js',
+//            '099_unicaen-idref_js_3' => '/unicaen/idref/js/trigger.js',
+//        ],
         'stylesheets' => [
             '099_unicaen-idref_css_1' => '/unicaen/idref/css/subModal.css',
             '099_unicaen-idref_css_2' => '/unicaen/idref/css/trigger.css',
diff --git a/src/UnicaenIdref/View/Helper/IdrefPopupTriggerViewHelper.php b/src/UnicaenIdref/View/Helper/IdrefPopupTriggerViewHelper.php
index 643d5c1..0d9e39f 100644
--- a/src/UnicaenIdref/View/Helper/IdrefPopupTriggerViewHelper.php
+++ b/src/UnicaenIdref/View/Helper/IdrefPopupTriggerViewHelper.php
@@ -62,6 +62,8 @@ class IdrefPopupTriggerViewHelper extends AbstractHelper
         $this->sourceElements = $sourceElements;
         $this->destinationElement = $destinationElement;
 
+        $this->attachInlineScripts();
+
         return $this;
     }
 
@@ -81,4 +83,26 @@ class IdrefPopupTriggerViewHelper extends AbstractHelper
             'params' => $this->params,
         ]);
     }
+
+    /**
+     * Inscrit les scripts js "inline" nécessaires si ce n'est pas déjà fait.
+     */
+    protected function attachInlineScripts(): void
+    {
+        /** @var \Laminas\View\Helper\InlineScript $helper */
+        $helper = $this->view->plugin('inlineScript');
+
+        $prefix = __NAMESPACE__ . '\\';
+
+        $scripts = [
+            1 => 'unicaen/idref/js/formulaire.js',
+            2 => 'unicaen/idref/js/subModal.js',
+            3 => 'unicaen/idref/js/trigger.js',
+        ];
+        foreach ($scripts as $i => $script) {
+            if (!$helper->offsetExists($offset = $prefix . $i)) {
+                $helper->offsetSetFile($offset, $this->view->basePath($script));
+            }
+        }
+    }
 }
\ No newline at end of file
-- 
GitLab