Modified: 
websites/production/tapestry/content/2022/01/26/tapestry-580-release.html
==============================================================================
--- websites/production/tapestry/content/2022/01/26/tapestry-580-release.html 
(original)
+++ websites/production/tapestry/content/2022/01/26/tapestry-580-release.html 
Fri Jan 24 12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->
@@ -99,7 +110,8 @@
                 <div class="dropdown-menu" 
aria-labelledby="developmentNavbarDropdown">
                   <a class="dropdown-item" 
href="https://gitbox.apache.org/repos/asf?p=tapestry-5.git";>Source Code</a>
                   <a class="dropdown-item" 
href="https://issues.apache.org/jira/browse/TAP5";>Issues</a>
-                </div>
+                  <a class="dropdown-item" href="/development-roadmap.html" 
title="Development Roadmap">Roadmap</a>
+</div>
               </li><li class="nav-item dropdown">
                 <a class="nav-link dropdown-toggle active" 
id="apacheNavbarDropdown" href="#" role="button" data-toggle="dropdown" 
aria-haspopup="true" aria-expanded="false">
                   Apache

Modified: 
websites/production/tapestry/content/2022/04/04/tapestry-581-release.html
==============================================================================
--- websites/production/tapestry/content/2022/04/04/tapestry-581-release.html 
(original)
+++ websites/production/tapestry/content/2022/04/04/tapestry-581-release.html 
Fri Jan 24 12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->
@@ -99,7 +110,8 @@
                 <div class="dropdown-menu" 
aria-labelledby="developmentNavbarDropdown">
                   <a class="dropdown-item" 
href="https://gitbox.apache.org/repos/asf?p=tapestry-5.git";>Source Code</a>
                   <a class="dropdown-item" 
href="https://issues.apache.org/jira/browse/TAP5";>Issues</a>
-                </div>
+                  <a class="dropdown-item" href="/development-roadmap.html" 
title="Development Roadmap">Roadmap</a>
+</div>
               </li><li class="nav-item dropdown">
                 <a class="nav-link dropdown-toggle active" 
id="apacheNavbarDropdown" href="#" role="button" data-toggle="dropdown" 
aria-haspopup="true" aria-expanded="false">
                   Apache

Modified: 
websites/production/tapestry/content/2022/06/20/tapestry-582-released.html
==============================================================================
--- websites/production/tapestry/content/2022/06/20/tapestry-582-released.html 
(original)
+++ websites/production/tapestry/content/2022/06/20/tapestry-582-released.html 
Fri Jan 24 12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->
@@ -99,7 +110,8 @@
                 <div class="dropdown-menu" 
aria-labelledby="developmentNavbarDropdown">
                   <a class="dropdown-item" 
href="https://gitbox.apache.org/repos/asf?p=tapestry-5.git";>Source Code</a>
                   <a class="dropdown-item" 
href="https://issues.apache.org/jira/browse/TAP5";>Issues</a>
-                </div>
+                  <a class="dropdown-item" href="/development-roadmap.html" 
title="Development Roadmap">Roadmap</a>
+</div>
               </li><li class="nav-item dropdown">
                 <a class="nav-link dropdown-toggle active" 
id="apacheNavbarDropdown" href="#" role="button" data-toggle="dropdown" 
aria-haspopup="true" aria-expanded="false">
                   Apache

Modified: websites/production/tapestry/content/about.html
==============================================================================
--- websites/production/tapestry/content/about.html (original)
+++ websites/production/tapestry/content/about.html Fri Jan 24 12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/ajax-and-zones.html
==============================================================================
--- websites/production/tapestry/content/ajax-and-zones.html (original)
+++ websites/production/tapestry/content/ajax-and-zones.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/ajax-components-faq.html
==============================================================================
--- websites/production/tapestry/content/ajax-components-faq.html (original)
+++ websites/production/tapestry/content/ajax-components-faq.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->
@@ -144,11 +155,11 @@
             <!-- /// Content Start -->
             <div id="content">
                             <div id="ConfluenceContent"><h1 
id="AjaxComponentsFAQ-AjaxComponents">Ajax Components</h1><p>Main article: <a 
href="ajax-and-zones.html">Ajax and Zones</a></p><h2 
id="AjaxComponentsFAQ-Contents">Contents</h2><p><style 
type="text/css">/*<![CDATA[*/
-div.rbtoc1712225793764 {padding: 0px;}
-div.rbtoc1712225793764 ul {margin-left: 0px;}
-div.rbtoc1712225793764 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1737721057742 {padding: 0px;}
+div.rbtoc1737721057742 ul {margin-left: 0px;}
+div.rbtoc1737721057742 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1712225793764">
+/*]]>*/</style></p><div class="toc-macro rbtoc1737721057742">
 <ul class="toc-indentation"><li><a 
href="#AjaxComponentsFAQ-DoIhavetospecifybothidandt:idforZonecomponents?">Do I 
have to specify both id and t:id for Zone components?</a></li><li><a 
href="#AjaxComponentsFAQ-HowdoIupdatethecontentofaZonefromaneventhandlermethod?">How
 do I update the content of a Zone from an event handler method?</a></li><li><a 
href="#AjaxComponentsFAQ-HowtoIupdatemultiplezonesinasingleeventhandler?">How 
to I update multiple zones in a single event handler?</a></li><li><a 
href="#AjaxComponentsFAQ-What'sthatweirdnumberinthemiddleoftheclientidsafteraZoneisupdated?">What's
 that weird number in the middle of the client ids after a Zone is 
updated?</a></li><li><a 
href="#AjaxComponentsFAQ-WhydoIsometimesgettheexception&quot;Therenderedcontentdidnotincludeanyelementsthatallowforthepositioningofthehiddenformfield'selement.&quot;whenrenderinganemptyZone?">Why
 do I sometimes get the exception "The rendered content did not include any 
elements that allow for the positioning of
  the hidden form field's element." when rendering an empty Zone?</a></li></ul>
 </div><h2 
id="AjaxComponentsFAQ-DoIhavetospecifybothidandt:idforZonecomponents?">Do I 
have to specify both <code>id</code> and <code>t:id</code> for Zone 
components?</h2><p>The examples for the Zone component (in the Component 
Reference) consistently specify both <code>id</code> and <code>t:id</code> and 
this is probably a good idea.</p><p>Generally speaking, if you don't specify 
the client-side id (the <code>id</code> attribute), it will be the same as the 
Tapestry component id (<code>t:id</code>).</p><p>However, there are any number 
of exceptions to this rule. The Zone may be rendering inside a Loop (in which 
case, each rendering will have a unique client side id). The Zone may be 
rendering as part of a partial page render, in which case, a random unique id 
is inserted into the id. There are other examples where Tapestry component ids 
in nested components may also clash.</p><p>The point is, to be sure, specify 
the exact client id. This will be the value for the <code>zone</code> p
 arameter of the triggering component (such as a Form, PageLink, ActionLink, 
etc.).</p><h2 
id="AjaxComponentsFAQ-HowdoIupdatethecontentofaZonefromaneventhandlermethod?">How
 do I update the content of a Zone from an event handler method?</h2><p>When a 
client-side link or form triggers an update, the return value from the event 
handler method is used to construct a partial page response; this partial page 
response includes markup content that is used to update the Zone's client-side 
<code>&lt;div&gt;</code> element.</p><p>Where does that content come from? You 
inject it into your page.</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
 <pre><code class="language-xml">&lt;t:zone id="search" t:id="searchZone"&gt;

Modified: websites/production/tapestry/content/ajax-components.html
==============================================================================
--- websites/production/tapestry/content/ajax-components.html (original)
+++ websites/production/tapestry/content/ajax-components.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/ajax-javascript.html
==============================================================================
--- websites/production/tapestry/content/ajax-javascript.html (original)
+++ websites/production/tapestry/content/ajax-javascript.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/aliases.html
==============================================================================
--- websites/production/tapestry/content/aliases.html (original)
+++ websites/production/tapestry/content/aliases.html Fri Jan 24 12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/annotations.html
==============================================================================
--- websites/production/tapestry/content/annotations.html (original)
+++ websites/production/tapestry/content/annotations.html Fri Jan 24 12:18:16 
2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: 
websites/production/tapestry/content/application-module-class-cheat-sheet.html
==============================================================================
--- 
websites/production/tapestry/content/application-module-class-cheat-sheet.html 
(original)
+++ 
websites/production/tapestry/content/application-module-class-cheat-sheet.html 
Fri Jan 24 12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->
@@ -144,11 +155,11 @@
             <!-- /// Content Start -->
             <div id="content">
                             <div id="ConfluenceContent"><p>The 
<strong>Application Module</strong> class is a simple Java class used to 
configure Tapestry. A system of annotations and naming conventions allows 
Tapestry to determine what services are provided by the module to your 
application. This is the place where you bind your custom implementation of 
services, contribute to, decorate and override existing services.</p><p><style 
type="text/css">/*<![CDATA[*/
-div.rbtoc1712225603386 {padding: 0px;}
-div.rbtoc1712225603386 ul {margin-left: 0px;}
-div.rbtoc1712225603386 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1737720863541 {padding: 0px;}
+div.rbtoc1737720863541 ul {margin-left: 0px;}
+div.rbtoc1737720863541 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1712225603386">
+/*]]>*/</style></p><div class="toc-macro rbtoc1737720863541">
 <ul class="toc-indentation"><li>Related Articles</li></ul>
 <ul><li><a href="#ApplicationModuleClassCheatSheet-Namingconventions">Naming 
conventions</a>
 <ul class="toc-indentation"><li><a 
href="#ApplicationModuleClassCheatSheet-Thebindmethod">The bind 
method</a></li><li><a 
href="#ApplicationModuleClassCheatSheet-Servicebuildermethods">Service builder 
methods</a></li><li><a 
href="#ApplicationModuleClassCheatSheet-Contributemethods">Contribute 
methods</a>

Modified: websites/production/tapestry/content/applications.html
==============================================================================
--- websites/production/tapestry/content/applications.html (original)
+++ websites/production/tapestry/content/applications.html Fri Jan 24 12:18:16 
2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/assets.html
==============================================================================
--- websites/production/tapestry/content/assets.html (original)
+++ websites/production/tapestry/content/assets.html Fri Jan 24 12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->
@@ -188,7 +199,7 @@
                 <span class="icon aui-icon content-type-page" 
title="Page">Page:</span>        </div>
 
         <div class="details">
-                        <a href="request-processing.html">Request 
Processing</a>
+                        <a href="configuration.html">Configuration</a>
                 
                         
                     </div>
@@ -197,7 +208,7 @@
                 <span class="icon aui-icon content-type-page" 
title="Page">Page:</span>        </div>
 
         <div class="details">
-                        <a href="configuration.html">Configuration</a>
+                        <a href="request-processing.html">Request 
Processing</a>
                 
                         
                     </div>

Modified: websites/production/tapestry/content/autoloading-modules.html
==============================================================================
--- websites/production/tapestry/content/autoloading-modules.html (original)
+++ websites/production/tapestry/content/autoloading-modules.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/banner.html
==============================================================================
--- websites/production/tapestry/content/banner.html (original)
+++ websites/production/tapestry/content/banner.html Fri Jan 24 12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/bannerv2.html
==============================================================================
--- websites/production/tapestry/content/bannerv2.html (original)
+++ websites/production/tapestry/content/bannerv2.html Fri Jan 24 12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/bean-validation.html
==============================================================================
--- websites/production/tapestry/content/bean-validation.html (original)
+++ websites/production/tapestry/content/bean-validation.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/beaneditform-faq.html
==============================================================================
--- websites/production/tapestry/content/beaneditform-faq.html (original)
+++ websites/production/tapestry/content/beaneditform-faq.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->
@@ -144,11 +155,11 @@
             <!-- /// Content Start -->
             <div id="content">
                             <div id="ConfluenceContent"><h1 
id="BeanEditFormFAQ-BeanEditForm">BeanEditForm</h1><p>Main Article: <a 
href="beaneditform-guide.html">BeanEditForm Guide</a></p><h2 
id="BeanEditFormFAQ-Contents">Contents</h2><p><style 
type="text/css">/*<![CDATA[*/
-div.rbtoc1737227526224 {padding: 0px;}
-div.rbtoc1737227526224 ul {margin-left: 0px;}
-div.rbtoc1737227526224 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1737720872213 {padding: 0px;}
+div.rbtoc1737720872213 ul {margin-left: 0px;}
+div.rbtoc1737720872213 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1737227526224">
+/*]]>*/</style></p><div class="toc-macro rbtoc1737720872213">
 <ul class="toc-indentation"><li><a 
href="#BeanEditFormFAQ-WhydoIgetexceptionsaboutinstantiatingabeanwhenusingBeanEditForm?">Why
 do I get exceptions about instantiating a bean when using 
BeanEditForm?</a></li><li><a 
href="#BeanEditFormFAQ-What'sthedifferencebetweenBeanEditorandBeanEditForm?">What's
 the difference between BeanEditor and BeanEditForm?</a></li><li><a 
href="#BeanEditFormFAQ-HowdoIcustomizethelayoutoftheBeanEditForm?">How do I 
customize the layout of the BeanEditForm?</a></li></ul>
 </div><h2 
id="BeanEditFormFAQ-WhydoIgetexceptionsaboutinstantiatingabeanwhenusingBeanEditForm?">Why
 do I get exceptions about instantiating a bean when using 
BeanEditForm?</h2><p>When you render a BeanEditForm, or when the rendered form 
is submitted, Tapestry must instantiate an instance of the object to be edited. 
This occurs when the BeanEditForm's <code>object</code> parameter is bound to 
null: Tapestry instantiates an instance of the property type so that the 
BeanEditForm has an object to read default values from, or to push submitted 
values into.</p><p>By default, this uses the standard <a 
href="injection-in-detail.html">injection mechanism</a>, which means that 
Tapestry will identify the public constructor with the most parameters, and 
attempt to find objects and other objects for each constructor 
parameter.</p><p>There's two ways to fine tune this so you don't get 
errors:</p><ul><li>Place an @<a class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache
 /tapestry5/ioc/annotations/Inject.html">Inject</a> annotation on the correct 
constructor to use (often, the constructor with no parameters).</li></ul><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
 <pre><code class="language-java">public class MyBean {

Modified: websites/production/tapestry/content/beaneditform-guide.html
==============================================================================
--- websites/production/tapestry/content/beaneditform-guide.html (original)
+++ websites/production/tapestry/content/beaneditform-guide.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/blogs.html
==============================================================================
--- websites/production/tapestry/content/blogs.html (original)
+++ websites/production/tapestry/content/blogs.html Fri Jan 24 12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/books.html
==============================================================================
--- websites/production/tapestry/content/books.html (original)
+++ websites/production/tapestry/content/books.html Fri Jan 24 12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: 
websites/production/tapestry/content/building-tapestry-from-source.html
==============================================================================
--- websites/production/tapestry/content/building-tapestry-from-source.html 
(original)
+++ websites/production/tapestry/content/building-tapestry-from-source.html Fri 
Jan 24 12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/built-in-mixins.html
==============================================================================
--- websites/production/tapestry/content/built-in-mixins.html (original)
+++ websites/production/tapestry/content/built-in-mixins.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/built-in-modules.html
==============================================================================
--- websites/production/tapestry/content/built-in-modules.html (original)
+++ websites/production/tapestry/content/built-in-modules.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/case-insensitivity.html
==============================================================================
--- websites/production/tapestry/content/case-insensitivity.html (original)
+++ websites/production/tapestry/content/case-insensitivity.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/chainbuilder-service.html
==============================================================================
--- websites/production/tapestry/content/chainbuilder-service.html (original)
+++ websites/production/tapestry/content/chainbuilder-service.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/cheat-sheets.html
==============================================================================
--- websites/production/tapestry/content/cheat-sheets.html (original)
+++ websites/production/tapestry/content/cheat-sheets.html Fri Jan 24 12:18:16 
2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/class-reloading.html
==============================================================================
--- websites/production/tapestry/content/class-reloading.html (original)
+++ websites/production/tapestry/content/class-reloading.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->
@@ -179,11 +190,11 @@
 
 
 <p>One of the best features of Tapestry is automatic reloading of changed 
classes and templates. <em>Page and component</em> classes will automatically 
reload when changed. Likewise, changes to component templates and other related 
resources will also be picked up immediately. In addition, starting in version 
5.2, your service classes will also be reloaded automatically after changes (if 
you're using <a href="ioc.html">Tapestry IoC</a>). Starting in version 5.8.3, 
you enable multiple classloader mode, which allows smarter page class 
invalidation.</p><div class="confluence-information-macro 
confluence-information-macro-information"><p class="title 
conf-macro-render">Not necessarily throwing away all cached page 
instances</p><span class="aui-icon aui-icon-small aui-iconfont-info 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>Since Tapestry 5.8.3, Tapestry can 
be run in multiple classloaders mode. When it's on, only the affected cached 
page 
 instances are discarded and rebuilt instead of all of 
them.&#160;</p></div></div><h2 
id="ClassReloading-Contents">Contents</h2><p><style 
type="text/css">/*<![CDATA[*/
-div.rbtoc1712225620397 {padding: 0px;}
-div.rbtoc1712225620397 ul {margin-left: 0px;}
-div.rbtoc1712225620397 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1737720880453 {padding: 0px;}
+div.rbtoc1737720880453 ul {margin-left: 0px;}
+div.rbtoc1737720880453 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1712225620397">
+/*]]>*/</style></p><div class="toc-macro rbtoc1737720880453">
 <ul class="toc-indentation"><li><a 
href="#ClassReloading-TemplateReloading">Template Reloading</a></li><li><a 
href="#ClassReloading-ClassReloading">Class Reloading</a></li><li><a 
href="#ClassReloading-PackagesScanned">Packages Scanned</a></li><li><a 
href="#ClassReloading-FileSystemOnly">File System Only</a></li><li><a 
href="#ClassReloading-ClassLoaderIssues">Class Loader Issues</a></li><li><a 
href="#ClassReloading-ClassCastExceptions">ClassCastExceptions</a></li><li><a 
href="#ClassReloading-HandlingReloadsinyourCode">Handling Reloads in your 
Code</a></li><li><a href="#ClassReloading-CheckingForUpdates">Checking For 
Updates</a></li><li><a 
href="#ClassReloading-TroubleshootingLiveClassReloading">Troubleshooting Live 
Class Reloading</a>
 <ul class="toc-indentation"><li><a href="#ClassReloading-QuickChecklist">Quick 
Checklist</a></li><li><a 
href="#ClassReloading-IfLiveClassReloadingdoesn'twork">If Live Class Reloading 
doesn't work</a>
 <ul class="toc-indentation"><li><a 
href="#ClassReloading-ProductionMode">Production Mode</a></li><li><a 
href="#ClassReloading-BuildPathIssues">Build Path Issues</a></li><li><a 
href="#ClassReloading-BuildingAutomatically">Building 
Automatically</a></li><li><a 
href="#ClassReloading-TurnoffJVMhotcodeswapping&amp;automaticrestarts">Turn off 
JVM hot code swapping &amp; automatic restarts</a></li></ul>

Modified: websites/production/tapestry/content/client-side-javascript.html
==============================================================================
--- websites/production/tapestry/content/client-side-javascript.html (original)
+++ websites/production/tapestry/content/client-side-javascript.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/clustering-issues.html
==============================================================================
--- websites/production/tapestry/content/clustering-issues.html (original)
+++ websites/production/tapestry/content/clustering-issues.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/coffeescript.html
==============================================================================
--- websites/production/tapestry/content/coffeescript.html (original)
+++ websites/production/tapestry/content/coffeescript.html Fri Jan 24 12:18:16 
2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/committers.html
==============================================================================
--- websites/production/tapestry/content/committers.html (original)
+++ websites/production/tapestry/content/committers.html Fri Jan 24 12:18:16 
2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/community.html
==============================================================================
--- websites/production/tapestry/content/community.html (original)
+++ websites/production/tapestry/content/community.html Fri Jan 24 12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->
@@ -144,11 +155,11 @@
             <!-- /// Content Start -->
             <div id="content">
                             <div id="ConfluenceContent"><p>Tapestry has an 
active community of users and developers. This is an overview of how to 
participate, along with a list of some of the great contributions of the 
community members.</p><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1712225645158 {padding: 0px;}
-div.rbtoc1712225645158 ul {margin-left: 0px;}
-div.rbtoc1712225645158 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1737720905448 {padding: 0px;}
+div.rbtoc1737720905448 ul {margin-left: 0px;}
+div.rbtoc1737720905448 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1712225645158">
+/*]]>*/</style></p><div class="toc-macro rbtoc1737720905448">
 <ul class="toc-indentation"><li><a href="#Community-GettingInvolved">Getting 
Involved</a>
 <ul class="toc-indentation"><li><a 
href="#Community-ReportingProblems/GettingSupport">Reporting Problems / Getting 
Support</a></li><li><a 
href="#Community-ContributingtranslationsforTapestrybuilt-inmessages">Contributing
 translations for Tapestry built-in messages</a></li><li><a 
href="#Community-SourceCodeAccess">Source Code Access</a></li><li><a 
href="#Community-BecomingaContributor">Becoming a Contributor</a></li><li><a 
href="#Community-BecomingaCommitter">Becoming a Committer</a></li></ul>
 </li><li><a href="#Community-CommunityContributions">Community 
Contributions</a>

Modified: websites/production/tapestry/content/component-cheat-sheet.html
==============================================================================
--- websites/production/tapestry/content/component-cheat-sheet.html (original)
+++ websites/production/tapestry/content/component-cheat-sheet.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->
@@ -179,7 +190,7 @@
                 <span class="icon aui-icon content-type-page" 
title="Page">Page:</span>        </div>
 
         <div class="details">
-                        <a href="component-reference.html">Component 
Reference</a>
+                        <a href="page-and-component-classes-faq.html">Page And 
Component Classes FAQ</a>
                 
                         
                     </div>
@@ -188,7 +199,7 @@
                 <span class="icon aui-icon content-type-page" 
title="Page">Page:</span>        </div>
 
         <div class="details">
-                        <a href="page-and-component-classes-faq.html">Page And 
Component Classes FAQ</a>
+                        <a href="component-reference.html">Component 
Reference</a>
                 
                         
                     </div>

Modified: websites/production/tapestry/content/component-classes.html
==============================================================================
--- websites/production/tapestry/content/component-classes.html (original)
+++ websites/production/tapestry/content/component-classes.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->
@@ -170,7 +181,7 @@
                 <span class="icon aui-icon content-type-page" 
title="Page">Page:</span>        </div>
 
         <div class="details">
-                        <a href="component-reference.html">Component 
Reference</a>
+                        <a href="page-and-component-classes-faq.html">Page And 
Component Classes FAQ</a>
                 
                         
                     </div>
@@ -179,7 +190,7 @@
                 <span class="icon aui-icon content-type-page" 
title="Page">Page:</span>        </div>
 
         <div class="details">
-                        <a href="page-and-component-classes-faq.html">Page And 
Component Classes FAQ</a>
+                        <a href="component-reference.html">Component 
Reference</a>
                 
                         
                     </div>

Modified: websites/production/tapestry/content/component-events-faq.html
==============================================================================
--- websites/production/tapestry/content/component-events-faq.html (original)
+++ websites/production/tapestry/content/component-events-faq.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->
@@ -144,11 +155,11 @@
             <!-- /// Content Start -->
             <div id="content">
                             <div id="ConfluenceContent"><h1 
id="ComponentEventsFAQ-ComponentEvents">Component Events</h1><p>Main Article: 
<a href="component-events.html">Component Events</a></p><h2 
id="ComponentEventsFAQ-Contents">Contents</h2><p><style 
type="text/css">/*<![CDATA[*/
-div.rbtoc1737227525347 {padding: 0px;}
-div.rbtoc1737227525347 ul {margin-left: 0px;}
-div.rbtoc1737227525347 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1737721002837 {padding: 0px;}
+div.rbtoc1737721002837 ul {margin-left: 0px;}
+div.rbtoc1737721002837 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1737227525347">
+/*]]>*/</style></p><div class="toc-macro rbtoc1737721002837">
 <ul class="toc-indentation"><li><a 
href="#ComponentEventsFAQ-WhydoesTapestrysendaredirectafteraformissubmitted?">Why
 does Tapestry send a redirect after a form is submitted?</a></li><li><a 
href="#ComponentEventsFAQ-IspecifiedazoneinmyActionLink/EventLink,sowhydoesn'tmyeventfireviaajax(request.isXHR()isfalse)?">I
 specified a zone in my ActionLink/EventLink, so why doesn't my event fire via 
ajax (request.isXHR() is false)?</a></li></ul>
 </div><h2 
id="ComponentEventsFAQ-WhydoesTapestrysendaredirectafteraformissubmitted?">Why 
does Tapestry send a redirect after a form is submitted?</h2><p>This is an 
extension of the <a class="external-link" 
href="http://en.wikipedia.org/wiki/Post/Redirect/Get"; 
rel="nofollow">Post/Redirect/Get</a> approach. It ensures that after an 
operation that updates server-side state, such as a form submission, if the 
user resubmits the resulting page, the operation is <strong>not</strong> 
performed a second time; instead just the results of the operation, reflecting 
the changed server-side state, is re-rendered.</p><p>This has the unwanted 
requirement that any data needed to render the response must persist between 
the event request (the form submission) and the render request; this often 
means that fields must be annotated with @<a class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/Persist.html";>Persist</a>.
 

Modified: websites/production/tapestry/content/component-events.html
==============================================================================
--- websites/production/tapestry/content/component-events.html (original)
+++ websites/production/tapestry/content/component-events.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/component-libraries.html
==============================================================================
--- websites/production/tapestry/content/component-libraries.html (original)
+++ websites/production/tapestry/content/component-libraries.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/component-mixins.html
==============================================================================
--- websites/production/tapestry/content/component-mixins.html (original)
+++ websites/production/tapestry/content/component-mixins.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/component-parameters.html
==============================================================================
--- websites/production/tapestry/content/component-parameters.html (original)
+++ websites/production/tapestry/content/component-parameters.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->
@@ -248,11 +259,11 @@
 </div></div><p>A component may have any number of parameters. Each parameter 
has a specific name, a specific Java type (which may be a primitive value), and 
may be <em>optional</em> or <em>required</em>.</p><p>Within a component class, 
parameters are declared by using the @<a class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/Parameter.html";>Parameter</a>
 annotation on a private field, as we'll see below.</p><p><span 
class="confluence-anchor-link" 
id="ComponentParameters-bindingparameters"></span></p><h1 
id="ComponentParameters-ParameterBindings">Parameter Bindings</h1><p>In 
Tapestry, a parameter is not a slot into which data is pushed: it is a 
<em>connection</em> between a field of the component (marked with the 
@Parameter annotation) and a property or resource of the component's container. 
(Components can be nested, so the container can be either the page or another 
component.)</p><div class="navmenu" style="float:right; backgro
 und:white; margin:3px; padding:3px">
 <div class="panel" style="border-width: 1px;"><div class="panelHeader" 
style="border-bottom-width: 1px;"><b>Contents</b></div><div 
class="panelContent">
 <style type="text/css">/*<![CDATA[*/
-div.rbtoc1737227503546 {padding: 0px;}
-div.rbtoc1737227503546 ul {margin-left: 0px;}
-div.rbtoc1737227503546 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1737720833868 {padding: 0px;}
+div.rbtoc1737720833868 ul {margin-left: 0px;}
+div.rbtoc1737720833868 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style><div class="toc-macro rbtoc1737227503546">
+/*]]>*/</style><div class="toc-macro rbtoc1737720833868">
 <ul class="toc-indentation"><li><a 
href="#ComponentParameters-ParameterBindings">Parameter Bindings</a></li><li><a 
href="#ComponentParameters-BindingExpressions">Binding 
Expressions</a></li><li><a 
href="#ComponentParameters-@Parameterannotation">@Parameter 
annotation</a></li><li><a 
href="#ComponentParameters-Don'tusethe${...}syntax!">Don't use the ${...} 
syntax!</a></li><li><a href="#ComponentParameters-InformalParameters">Informal 
Parameters</a></li><li><a 
href="#ComponentParameters-ParametersAreBi-Directional">Parameters Are 
Bi-Directional</a></li><li><a 
href="#ComponentParameters-InheritedParameterBindings">Inherited Parameter 
Bindings</a></li><li><a 
href="#ComponentParameters-ComputedParameterBindingDefaults">Computed Parameter 
Binding Defaults</a></li><li><a 
href="#ComponentParameters-UnboundParameters">Unbound Parameters</a></li><li><a 
href="#ComponentParameters-ParameterTypeCoercion">Parameter Type 
Coercion</a></li><li><a href="#ComponentParameters-ParameterNames">Parameter N
 ames</a></li><li><a href="#ComponentParameters-DeterminingifBound">Determining 
if Bound</a></li><li><a 
href="#ComponentParameters-PublishingParameters">Publishing 
Parameters</a></li></ul>
 </div>
 </div></div></div>&#160;<p>The connection between a component and a property 
(or resource) of its container is called a <em>binding</em>. The binding is 
two-way: the component can read the bound property by reading its parameter 
field. Likewise, a component that updates its parameter field will update the 
bound property.</p><p>This is important in a lot of cases; for example a 
TextField component can read <em>and update</em> the property bound to its 
value parameter. It reads the value when rendering, but updates the value when 
the form is submitted.</p><p>The component listed below is a looping component; 
it renders its body a number of times, defined by its <code>start</code> and 
<code>end</code> parameters (which set the boundaries of the loop). The 
component can update a <code>result</code> parameter bound to a property of its 
container; it will automatically count up or down depending on whether 
<code>start</code> or <code>end</code> is larger.</p><div class="code panel 
pdl" st
 yle="border-width: 1px;"><div class="codeContent panelContent pdl">

Modified: websites/production/tapestry/content/component-reference.html
==============================================================================
--- websites/production/tapestry/content/component-reference.html (original)
+++ websites/production/tapestry/content/component-reference.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->
@@ -188,11 +199,11 @@
 
 
 <p></p><p><strong>Contents</strong></p><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1712225622253 {padding: 0px;}
-div.rbtoc1712225622253 ul {margin-left: 0px;}
-div.rbtoc1712225622253 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1737720882353 {padding: 0px;}
+div.rbtoc1737720882353 ul {margin-left: 0px;}
+div.rbtoc1737720882353 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1712225622253">
+/*]]>*/</style></p><div class="toc-macro rbtoc1737720882353">
 <ul class="toc-indentation"><li><a 
href="#ComponentReference-Tapestry-providedComponents">Tapestry-provided 
Components</a>
 <ul class="toc-indentation"><li><a 
href="#ComponentReference-AJAX-specificComponents">AJAX-specific 
Components</a></li><li><a 
href="#ComponentReference-BeanDisplaying&amp;Editing">Bean Displaying &amp; 
Editing</a></li><li><a 
href="#ComponentReference-ConditionalandLoopingComponents">Conditional and 
Looping Components</a></li><li><a 
href="#ComponentReference-FormComponents">Form Components</a></li><li><a 
href="#ComponentReference-Grids,TablesandTrees">Grids, Tables and 
Trees</a></li><li><a href="#ComponentReference-LinksandButtons">Links and 
Buttons</a></li><li><a href="#ComponentReference-OutputandMessages">Output and 
Messages</a></li><li><a 
href="#ComponentReference-Miscellaneous">Miscellaneous</a></li></ul>
 </li><li><a href="#ComponentReference-TapestryMixins">Tapestry 
Mixins</a></li><li><a href="#ComponentReference-TapestryPages">Tapestry 
Pages</a></li><li><a href="#ComponentReference-BaseComponents">Base 
Components</a></li><li><a 
href="#ComponentReference-OtherComponentLibraries">Other Component 
Libraries</a></li></ul>



Reply via email to