From 15728e115e4a1339d60f04e5917ebad3c2d8888e Mon Sep 17 00:00:00 2001
From: Thomas Mortagne <thomas.mortagne@gmail.com>
Date: Wed, 28 Aug 2024 15:05:57 +0200
Subject: [PATCH] XCOMMONS-3051: Introduce the Supported By concept in
 Extension Manager and Repository * better link

---
 .../src/main/resources/templates/extension.vm | 31 ++++++++++---------
 1 file changed, 17 insertions(+), 14 deletions(-)

diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/extension.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/extension.vm
index 45b96b4016e..16156674a36 100644
--- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/extension.vm
+++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/extension.vm
@@ -1016,6 +1016,21 @@ $namespace##
   </div>
 #end
 
+#macro(displayExtensionSupportPlanName $extensionSupporterPlan)
+  #set ($isURLSafe = $extensionSupporterPlan.uRL && $services.html.isAttributeSafe('a', 'href', $extensionSupporterPlan.uRL))
+  #if ($isURLSafe)
+  <a target="_blank" rel="noopener noreferrer" class="external wikiexternallink" href="$escapetool.xml($extensionSupporterPlan.uRL)">
+  #end
+    #if ($extensionSupporterPlan.isPaying())
+      $escapetool.xml($services.localization.render('extensions.info.support.supportPlanPaying', [$extensionSupporterPlan.name]))
+    #else
+      $escapetool.xml($extensionSupporterPlan.name)
+    #end
+  #if ($isURLSafe)
+  </a>
+  #end
+#end
+
 #macro (displayExtensionSupportPlans $extensionSupportPlans $supporterList)
   #set ($extensionSupporters = $extensionSupportPlans.supporters)
   #if (!$extensionSupporters.isEmpty())
@@ -1033,13 +1048,7 @@ $namespace##
               #set ($extensionSupporterPlan = $extensionSupporterPlans.get(0))
               <span class="supporter-name">$extensionSupporter.name: </span>
               <span class="plan-name infomessage">
-                <a target="_blank" class="external wikiexternallink" href="$escapetool.xml($extensionSupporterPlan.uRL)">
-                  #if ($extensionSupporterPlan.isPaying())
-                    $escapetool.xml($services.localization.render('extensions.info.support.supportPlanPaying', [$extensionSupporterPlan.name]))
-                  #else
-                    $escapetool.xml($extensionSupporterPlan.name)
-                  #end
-                </a>
+                #displayExtensionSupportPlanName($extensionSupporterPlan)
               </span>
             </$supporterElementName>
           #else
@@ -1054,13 +1063,7 @@ $namespace##
                 <div class="support-flex">
                   #foreach ($extensionSupporterPlan in $extensionSupporterPlans)
                     <span class="plan-name infomessage">
-                      <a target="_blank" class="external wikiexternallink" href="$escapetool.xml($extensionSupporterPlan.uRL)">
-                      #if ($extensionSupporterPlan.isPaying())
-                        $escapetool.xml($services.localization.render('extensions.info.support.supportPlanPaying', [$extensionSupporterPlan.name]))
-                      #else
-                        $escapetool.xml($extensionSupporterPlan.name)
-                      #end
-                      </a>
+                      #displayExtensionSupportPlanName($extensionSupporterPlan)
                     </span>
                   #end
                 </div>
-- 
GitLab