You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by bu...@apache.org on 2022/11/26 13:17:30 UTC

svn commit: r1081635 [3/22] - in /websites/production/tapestry/content: ./ 2009/09/13/ 2009/10/27/ 2009/11/25/ 2010/07/18/ 2010/07/24/ 2010/10/11/ 2010/10/31/ 2010/11/18/ 2010/11/19/ 2010/12/16/ 2010/12/17/ 2011/01/10/ 2011/01/18/ 2011/03/23/ 2011/03/2...

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 Sat Nov 26 13:17:27 2022
@@ -32,10 +32,10 @@
   <link rel="apple-touch-icon-precomposed" href="/images/apache-tapestry-icon-57.png">
   <link rel="shortcut icon" href="/images/apache-tapestry-icon-32.png">
 
-  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Sarabun:ital,wght@0,400;0,700;1,400;1,700&display=swap"> 
-  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
+  <link rel="stylesheet" href="/resources/bootstrap/bootstrap.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/themes/prism.min.css">
+  <link rel="stylesheet" href="/resources/fonts/fonts.css">
   <link rel="stylesheet" href="/styles/main.css">
 
   <script type="text/javascript">
@@ -46,7 +46,7 @@
 
   <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous" defer></script>
   <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous" defer></script>
-  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous" defer></script>
+  <script src="stylesheet" href="/resources/bootstrap/bootstrap.min.js">
   <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>
 
@@ -143,11 +143,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.rbtoc1608762027619 {padding: 0px;}
-div.rbtoc1608762027619 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1608762027619 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1669468617940 {padding: 0px;}
+div.rbtoc1669468617940 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1669468617940 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1608762027619">
+/*]]>*/</style></p><div class="toc-macro rbtoc1669468617940">
 <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 Sat Nov 26 13:17:27 2022
@@ -32,10 +32,10 @@
   <link rel="apple-touch-icon-precomposed" href="/images/apache-tapestry-icon-57.png">
   <link rel="shortcut icon" href="/images/apache-tapestry-icon-32.png">
 
-  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Sarabun:ital,wght@0,400;0,700;1,400;1,700&display=swap"> 
-  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
+  <link rel="stylesheet" href="/resources/bootstrap/bootstrap.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/themes/prism.min.css">
+  <link rel="stylesheet" href="/resources/fonts/fonts.css">
   <link rel="stylesheet" href="/styles/main.css">
 
   <script type="text/javascript">
@@ -46,7 +46,7 @@
 
   <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous" defer></script>
   <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous" defer></script>
-  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous" defer></script>
+  <script src="stylesheet" href="/resources/bootstrap/bootstrap.min.js">
   <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>
 

Modified: websites/production/tapestry/content/ajax-javascript.html
==============================================================================
--- websites/production/tapestry/content/ajax-javascript.html (original)
+++ websites/production/tapestry/content/ajax-javascript.html Sat Nov 26 13:17:27 2022
@@ -32,10 +32,10 @@
   <link rel="apple-touch-icon-precomposed" href="/images/apache-tapestry-icon-57.png">
   <link rel="shortcut icon" href="/images/apache-tapestry-icon-32.png">
 
-  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Sarabun:ital,wght@0,400;0,700;1,400;1,700&display=swap"> 
-  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
+  <link rel="stylesheet" href="/resources/bootstrap/bootstrap.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/themes/prism.min.css">
+  <link rel="stylesheet" href="/resources/fonts/fonts.css">
   <link rel="stylesheet" href="/styles/main.css">
 
   <script type="text/javascript">
@@ -46,7 +46,7 @@
 
   <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous" defer></script>
   <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous" defer></script>
-  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous" defer></script>
+  <script src="stylesheet" href="/resources/bootstrap/bootstrap.min.js">
   <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>
 

Modified: websites/production/tapestry/content/aliases.html
==============================================================================
--- websites/production/tapestry/content/aliases.html (original)
+++ websites/production/tapestry/content/aliases.html Sat Nov 26 13:17:27 2022
@@ -32,10 +32,10 @@
   <link rel="apple-touch-icon-precomposed" href="/images/apache-tapestry-icon-57.png">
   <link rel="shortcut icon" href="/images/apache-tapestry-icon-32.png">
 
-  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Sarabun:ital,wght@0,400;0,700;1,400;1,700&display=swap"> 
-  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
+  <link rel="stylesheet" href="/resources/bootstrap/bootstrap.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/themes/prism.min.css">
+  <link rel="stylesheet" href="/resources/fonts/fonts.css">
   <link rel="stylesheet" href="/styles/main.css">
 
   <script type="text/javascript">
@@ -46,7 +46,7 @@
 
   <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous" defer></script>
   <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous" defer></script>
-  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous" defer></script>
+  <script src="stylesheet" href="/resources/bootstrap/bootstrap.min.js">
   <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>
 
@@ -189,6 +189,15 @@
                 
                         
                     </div>
+    </li><li>
+        <div>
+                <span class="icon aui-icon content-type-page" title="Page">Page:</span>        </div>
+
+        <div class="details">
+                        <a href="rest-support-580.html">REST Support (5.8.0+)</a>
+                
+                        
+                    </div>
     </li><li>
         <div>
                 <span class="icon aui-icon content-type-page" title="Page">Page:</span>        </div>

Modified: websites/production/tapestry/content/annotations.html
==============================================================================
--- websites/production/tapestry/content/annotations.html (original)
+++ websites/production/tapestry/content/annotations.html Sat Nov 26 13:17:27 2022
@@ -32,10 +32,10 @@
   <link rel="apple-touch-icon-precomposed" href="/images/apache-tapestry-icon-57.png">
   <link rel="shortcut icon" href="/images/apache-tapestry-icon-32.png">
 
-  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Sarabun:ital,wght@0,400;0,700;1,400;1,700&display=swap"> 
-  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
+  <link rel="stylesheet" href="/resources/bootstrap/bootstrap.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/themes/prism.min.css">
+  <link rel="stylesheet" href="/resources/fonts/fonts.css">
   <link rel="stylesheet" href="/styles/main.css">
 
   <script type="text/javascript">
@@ -46,7 +46,7 @@
 
   <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous" defer></script>
   <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous" defer></script>
-  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous" defer></script>
+  <script src="stylesheet" href="/resources/bootstrap/bootstrap.min.js">
   <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>
 

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 Sat Nov 26 13:17:27 2022
@@ -32,10 +32,10 @@
   <link rel="apple-touch-icon-precomposed" href="/images/apache-tapestry-icon-57.png">
   <link rel="shortcut icon" href="/images/apache-tapestry-icon-32.png">
 
-  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Sarabun:ital,wght@0,400;0,700;1,400;1,700&display=swap"> 
-  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
+  <link rel="stylesheet" href="/resources/bootstrap/bootstrap.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/themes/prism.min.css">
+  <link rel="stylesheet" href="/resources/fonts/fonts.css">
   <link rel="stylesheet" href="/styles/main.css">
 
   <script type="text/javascript">
@@ -46,7 +46,7 @@
 
   <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous" defer></script>
   <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous" defer></script>
-  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous" defer></script>
+  <script src="stylesheet" href="/resources/bootstrap/bootstrap.min.js">
   <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>
 
@@ -143,11 +143,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.rbtoc1588512060772 {padding: 0px;}
-div.rbtoc1588512060772 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1588512060772 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1669468448411 {padding: 0px;}
+div.rbtoc1669468448411 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1669468448411 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1588512060772">
+/*]]>*/</style></p><div class="toc-macro rbtoc1669468448411">
 <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>
@@ -176,7 +176,7 @@ div.rbtoc1588512060772 li {margin-left:
                 <span class="icon aui-icon content-type-page" title="Page">Page:</span>        </div>
 
         <div class="details">
-                        <a href="response-compression.html">Response Compression</a>
+                        <a href="tapestry-ioc-configuration.html">Tapestry IoC Configuration</a>
                 
                         
                     </div>
@@ -185,7 +185,7 @@ div.rbtoc1588512060772 li {margin-left:
                 <span class="icon aui-icon content-type-page" title="Page">Page:</span>        </div>
 
         <div class="details">
-                        <a href="symbols.html">Symbols</a>
+                        <a href="response-compression.html">Response Compression</a>
                 
                         
                     </div>
@@ -194,7 +194,7 @@ div.rbtoc1588512060772 li {margin-left:
                 <span class="icon aui-icon content-type-page" title="Page">Page:</span>        </div>
 
         <div class="details">
-                        <a href="application-module-class-cheat-sheet.html">Application Module Class Cheat Sheet</a>
+                        <a href="symbols.html">Symbols</a>
                 
                         
                     </div>
@@ -203,7 +203,7 @@ div.rbtoc1588512060772 li {margin-left:
                 <span class="icon aui-icon content-type-page" title="Page">Page:</span>        </div>
 
         <div class="details">
-                        <a href="tapestry-ioc-configuration.html">Tapestry IoC Configuration</a>
+                        <a href="application-module-class-cheat-sheet.html">Application Module Class Cheat Sheet</a>
                 
                         
                     </div>

Modified: websites/production/tapestry/content/applications.html
==============================================================================
--- websites/production/tapestry/content/applications.html (original)
+++ websites/production/tapestry/content/applications.html Sat Nov 26 13:17:27 2022
@@ -32,10 +32,10 @@
   <link rel="apple-touch-icon-precomposed" href="/images/apache-tapestry-icon-57.png">
   <link rel="shortcut icon" href="/images/apache-tapestry-icon-32.png">
 
-  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Sarabun:ital,wght@0,400;0,700;1,400;1,700&display=swap"> 
-  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
+  <link rel="stylesheet" href="/resources/bootstrap/bootstrap.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/themes/prism.min.css">
+  <link rel="stylesheet" href="/resources/fonts/fonts.css">
   <link rel="stylesheet" href="/styles/main.css">
 
   <script type="text/javascript">
@@ -46,7 +46,7 @@
 
   <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous" defer></script>
   <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous" defer></script>
-  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous" defer></script>
+  <script src="stylesheet" href="/resources/bootstrap/bootstrap.min.js">
   <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>
 
@@ -146,11 +146,11 @@
 <div class="columnLayout two-equal" data-layout="two-equal">
 <div class="cell normal" data-type="normal">
 <div class="innerCell">
-<p><strong><a class="external-link" href="http://www.oed.com/" rel="nofollow">The </a><a class="external-link" href="http://www.oed.com/" rel="nofollow">Oxford English Dictionary</a></strong><a class="external-link" href="http://www.oed.com/" rel="nofollow"></a></p><p><a class="external-link" href="http://www.oed.com/" rel="nofollow"><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" alt="The definitive Oxford English Dictionary" src="applications.data/oed.png"></span></a></p><hr><p>&#160; <br clear="none" class="atl-forced-newline"> <strong><a class="external-link" href="http://www.mybet.com" rel="nofollow">myBet</a> : Sports Bets Casino Poker</strong></p><p><a class="external-link" href="http://www.mybet.com" rel="nofollow"><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" alt="myBet - Sports Bets Casino Poker" src="applications.data/mybet.png"></span></a></p><hr><p><strong><a class="external-link" href="http:/
 /www.yanomo.com" rel="nofollow">Yanomo time tracking</a>&#160;SaaS with Google sync</strong></p><p><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" alt="Yanomo time tracking - SaaS with google calendar sync" src="applications.data/yanomo_calendar.png"></span></p><hr><p><strong>&#160;<a class="external-link" href="http://www.smartimage.com/" rel="nofollow">Smartimage</a> : Image management made simple</strong></p><p><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" alt="Smartimage - Image management made simple" src="applications.data/smartimage.png"></span></p><hr></div>
+<p><strong><a class="external-link" href="http://www.oed.com/" rel="nofollow">The </a><a class="external-link" href="http://www.oed.com/" rel="nofollow">Oxford English Dictionary</a></strong><a class="external-link" href="http://www.oed.com/" rel="nofollow"></a></p><p><a class="external-link" href="http://www.oed.com/" rel="nofollow"><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" draggable="false" alt="The definitive Oxford English Dictionary" src="applications.data/oed.png"></span></a></p><hr><p>&#160; <br clear="none" class="atl-forced-newline"> <strong><a class="external-link" href="http://www.mybet.com" rel="nofollow">myBet</a> : Sports Bets Casino Poker</strong></p><p><a class="external-link" href="http://www.mybet.com" rel="nofollow"><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" draggable="false" alt="myBet - Sports Bets Casino Poker" src="applications.data/mybet.png"></span></a></p><hr><p><strong><
 a class="external-link" href="http://www.yanomo.com" rel="nofollow">Yanomo time tracking</a>&#160;SaaS with Google sync</strong></p><p><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" draggable="false" alt="Yanomo time tracking - SaaS with google calendar sync" src="applications.data/yanomo_calendar.png"></span></p><hr><p><strong>&#160;<a class="external-link" href="http://www.smartimage.com/" rel="nofollow">Smartimage</a> : Image management made simple</strong></p><p><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" draggable="false" alt="Smartimage - Image management made simple" src="applications.data/smartimage.png"></span></p><hr></div>
 </div>
 <div class="cell normal" data-type="normal">
 <div class="innerCell">
-<p><strong><a class="external-link" href="http://www.seesaw.com" rel="nofollow">Seesaw</a><a class="external-link" href="http://www.seesaw.com" rel="nofollow"> : Video streaming</a></strong></p><p><a class="external-link" href="http://www.seesaw.com" rel="nofollow"><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" alt="Seesaw - Video streaming" src="applications.data/seesaw.png"></span></a></p><hr><p><strong><a class="external-link" href="http://www.belladati.com" rel="nofollow">Business Intelligence </a><a class="external-link" href="http://www.belladati.com" rel="nofollow">BellaDati</a></strong><a class="external-link" href="http://www.belladati.com" rel="nofollow"></a></p><p><a class="external-link" href="http://www.belladati.com" rel="nofollow"><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" alt="BellaDati - Business Intelligence" src="applications.data/belladati.png"></span></a></p><hr><p><strong><a class
 ="external-link" href="http://www.cubiculus.com" rel="nofollow">Cubiculus</a> : Lego Building Instructions</strong></p><p><a class="external-link" href="http://www.cubiculus.com" rel="nofollow"><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" alt="Cubiculus - Lego Building Instructions" src="applications.data/cubiculus.png"></span></a> </p><hr><p><strong><a class="external-link" href="http://www.eofficeo.com/" rel="nofollow">eOfficeo</a><a class="external-link" href="http://www.eofficeo.com/" rel="nofollow"> : Easy - Mobile - Collaborative</a></strong></p><p><a class="external-link" href="http://www.eofficeo.com/" rel="nofollow"><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" src="applications.data/eofficeo.png"></span></a></p><hr><p><strong><a class="external-link" href="https://jexbox.com/" rel="nofollow">Jexbox</a> : Jexbox stores errors from tapestry applications &amp; helps developers resolve bugs</stron
 g></p><p><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" src="applications.data/jexbox.png"></span></p></div>
+<p><strong><a class="external-link" href="http://www.seesaw.com" rel="nofollow">Seesaw</a><a class="external-link" href="http://www.seesaw.com" rel="nofollow"> : Video streaming</a></strong></p><p><a class="external-link" href="http://www.seesaw.com" rel="nofollow"><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" draggable="false" alt="Seesaw - Video streaming" src="applications.data/seesaw.png"></span></a></p><hr><p><strong><a class="external-link" href="http://www.belladati.com" rel="nofollow">Business Intelligence </a><a class="external-link" href="http://www.belladati.com" rel="nofollow">BellaDati</a></strong><a class="external-link" href="http://www.belladati.com" rel="nofollow"></a></p><p><a class="external-link" href="http://www.belladati.com" rel="nofollow"><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" draggable="false" alt="BellaDati - Business Intelligence" src="applications.data/belladati.png"></
 span></a></p><hr><p><strong><a class="external-link" href="http://www.cubiculus.com" rel="nofollow">Cubiculus</a> : Lego Building Instructions</strong></p><p><a class="external-link" href="http://www.cubiculus.com" rel="nofollow"><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" draggable="false" alt="Cubiculus - Lego Building Instructions" src="applications.data/cubiculus.png"></span></a> </p><hr><p><strong><a class="external-link" href="http://www.eofficeo.com/" rel="nofollow">eOfficeo</a><a class="external-link" href="http://www.eofficeo.com/" rel="nofollow"> : Easy - Mobile - Collaborative</a></strong></p><p><a class="external-link" href="http://www.eofficeo.com/" rel="nofollow"><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" draggable="false" src="applications.data/eofficeo.png"></span></a></p><hr><p><strong><a class="external-link" href="https://jexbox.com/" rel="nofollow">Jexbox</a> : Jexbox stores erro
 rs from tapestry applications &amp; helps developers resolve bugs</strong></p><p><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" draggable="false" src="applications.data/jexbox.png"></span></p></div>
 </div>
 </div>
 </div></div>

Modified: websites/production/tapestry/content/assets.html
==============================================================================
--- websites/production/tapestry/content/assets.html (original)
+++ websites/production/tapestry/content/assets.html Sat Nov 26 13:17:27 2022
@@ -32,10 +32,10 @@
   <link rel="apple-touch-icon-precomposed" href="/images/apache-tapestry-icon-57.png">
   <link rel="shortcut icon" href="/images/apache-tapestry-icon-32.png">
 
-  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Sarabun:ital,wght@0,400;0,700;1,400;1,700&display=swap"> 
-  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
+  <link rel="stylesheet" href="/resources/bootstrap/bootstrap.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/themes/prism.min.css">
+  <link rel="stylesheet" href="/resources/fonts/fonts.css">
   <link rel="stylesheet" href="/styles/main.css">
 
   <script type="text/javascript">
@@ -46,7 +46,7 @@
 
   <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous" defer></script>
   <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous" defer></script>
-  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous" defer></script>
+  <script src="stylesheet" href="/resources/bootstrap/bootstrap.min.js">
   <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>
 
@@ -169,7 +169,7 @@
                 <span class="icon aui-icon content-type-page" title="Page">Page:</span>        </div>
 
         <div class="details">
-                        <a href="css.html">CSS</a>
+                        <a href="layout-component.html">Layout Component</a>
                 
                         
                     </div>
@@ -178,7 +178,7 @@
                 <span class="icon aui-icon content-type-page" title="Page">Page:</span>        </div>
 
         <div class="details">
-                        <a href="layout-component.html">Layout Component</a>
+                        <a href="css.html">CSS</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 Sat Nov 26 13:17:27 2022
@@ -32,10 +32,10 @@
   <link rel="apple-touch-icon-precomposed" href="/images/apache-tapestry-icon-57.png">
   <link rel="shortcut icon" href="/images/apache-tapestry-icon-32.png">
 
-  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Sarabun:ital,wght@0,400;0,700;1,400;1,700&display=swap"> 
-  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
+  <link rel="stylesheet" href="/resources/bootstrap/bootstrap.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/themes/prism.min.css">
+  <link rel="stylesheet" href="/resources/fonts/fonts.css">
   <link rel="stylesheet" href="/styles/main.css">
 
   <script type="text/javascript">
@@ -46,7 +46,7 @@
 
   <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous" defer></script>
   <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous" defer></script>
-  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous" defer></script>
+  <script src="stylesheet" href="/resources/bootstrap/bootstrap.min.js">
   <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>
 

Modified: websites/production/tapestry/content/banner.html
==============================================================================
--- websites/production/tapestry/content/banner.html (original)
+++ websites/production/tapestry/content/banner.html Sat Nov 26 13:17:27 2022
@@ -32,10 +32,10 @@
   <link rel="apple-touch-icon-precomposed" href="/images/apache-tapestry-icon-57.png">
   <link rel="shortcut icon" href="/images/apache-tapestry-icon-32.png">
 
-  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Sarabun:ital,wght@0,400;0,700;1,400;1,700&display=swap"> 
-  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
+  <link rel="stylesheet" href="/resources/bootstrap/bootstrap.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/themes/prism.min.css">
+  <link rel="stylesheet" href="/resources/fonts/fonts.css">
   <link rel="stylesheet" href="/styles/main.css">
 
   <script type="text/javascript">
@@ -46,7 +46,7 @@
 
   <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous" defer></script>
   <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous" defer></script>
-  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous" defer></script>
+  <script src="stylesheet" href="/resources/bootstrap/bootstrap.min.js">
   <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>
 
@@ -142,7 +142,7 @@
             
             <!-- /// Content Start -->
             <div id="content">
-                            <div id="ConfluenceContent"><div class="row" id="top"><div class="col-md-8 home-banner"><p><span class="confluence-embedded-file-wrapper confluence-embedded-manual-size"><img class="confluence-embedded-image" height="250" src="banner.data/apache-tapestry-icontext-600.png"></span></p></div>
+                            <div id="ConfluenceContent"><div class="row" id="top"><div class="col-md-8 home-banner"><p><span class="confluence-embedded-file-wrapper confluence-embedded-manual-size"><img class="confluence-embedded-image" draggable="false" height="250" src="banner.data/apache-tapestry-icontext-600.png"></span></p></div>
 
 
 <div class="col-md-4" style="padding: 0 2em 2em"><p>A component-oriented framework for creating highly scalable web applications in Java.</p></div>

Modified: websites/production/tapestry/content/bannerv2.html
==============================================================================
--- websites/production/tapestry/content/bannerv2.html (original)
+++ websites/production/tapestry/content/bannerv2.html Sat Nov 26 13:17:27 2022
@@ -32,10 +32,10 @@
   <link rel="apple-touch-icon-precomposed" href="/images/apache-tapestry-icon-57.png">
   <link rel="shortcut icon" href="/images/apache-tapestry-icon-32.png">
 
-  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Sarabun:ital,wght@0,400;0,700;1,400;1,700&display=swap"> 
-  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
+  <link rel="stylesheet" href="/resources/bootstrap/bootstrap.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/themes/prism.min.css">
+  <link rel="stylesheet" href="/resources/fonts/fonts.css">
   <link rel="stylesheet" href="/styles/main.css">
 
   <script type="text/javascript">
@@ -46,7 +46,7 @@
 
   <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous" defer></script>
   <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous" defer></script>
-  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous" defer></script>
+  <script src="stylesheet" href="/resources/bootstrap/bootstrap.min.js">
   <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>
 
@@ -142,7 +142,7 @@
             
             <!-- /// Content Start -->
             <div id="content">
-                            <div id="ConfluenceContent"><div class="row" id="top"><div class="col-md-8"><h1 id="BannerV2-"><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image confluence-external-resource" src="http://tapestry.apache.org/images/tapestry.png" data-image-src="http://tapestry.apache.org/images/tapestry.png"></span>&#160;</h1></div>
+                            <div id="ConfluenceContent"><div class="row" id="top"><div class="col-md-8"><h1 id="BannerV2-"><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image confluence-external-resource" draggable="false" src="http://tapestry.apache.org/images/tapestry.png" data-image-src="http://tapestry.apache.org/images/tapestry.png"></span>&#160;</h1></div>
 
 
 <div class="col-md-4" style="padding: 0 2em 2em"><div><form enctype="application/x-www-form-urlencoded" method="get" action="http://tapestry.apache.org/search.html">

Modified: websites/production/tapestry/content/bean-validation.html
==============================================================================
--- websites/production/tapestry/content/bean-validation.html (original)
+++ websites/production/tapestry/content/bean-validation.html Sat Nov 26 13:17:27 2022
@@ -32,10 +32,10 @@
   <link rel="apple-touch-icon-precomposed" href="/images/apache-tapestry-icon-57.png">
   <link rel="shortcut icon" href="/images/apache-tapestry-icon-32.png">
 
-  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Sarabun:ital,wght@0,400;0,700;1,400;1,700&display=swap"> 
-  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
+  <link rel="stylesheet" href="/resources/bootstrap/bootstrap.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/themes/prism.min.css">
+  <link rel="stylesheet" href="/resources/fonts/fonts.css">
   <link rel="stylesheet" href="/styles/main.css">
 
   <script type="text/javascript">
@@ -46,7 +46,7 @@
 
   <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous" defer></script>
   <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous" defer></script>
-  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous" defer></script>
+  <script src="stylesheet" href="/resources/bootstrap/bootstrap.min.js">
   <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>
 

Modified: websites/production/tapestry/content/beaneditform-faq.html
==============================================================================
--- websites/production/tapestry/content/beaneditform-faq.html (original)
+++ websites/production/tapestry/content/beaneditform-faq.html Sat Nov 26 13:17:27 2022
@@ -32,10 +32,10 @@
   <link rel="apple-touch-icon-precomposed" href="/images/apache-tapestry-icon-57.png">
   <link rel="shortcut icon" href="/images/apache-tapestry-icon-32.png">
 
-  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Sarabun:ital,wght@0,400;0,700;1,400;1,700&display=swap"> 
-  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
+  <link rel="stylesheet" href="/resources/bootstrap/bootstrap.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/themes/prism.min.css">
+  <link rel="stylesheet" href="/resources/fonts/fonts.css">
   <link rel="stylesheet" href="/styles/main.css">
 
   <script type="text/javascript">
@@ -46,7 +46,7 @@
 
   <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous" defer></script>
   <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous" defer></script>
-  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous" defer></script>
+  <script src="stylesheet" href="/resources/bootstrap/bootstrap.min.js">
   <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>
 
@@ -143,11 +143,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.rbtoc1608762051269 {padding: 0px;}
-div.rbtoc1608762051269 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1608762051269 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1669468455951 {padding: 0px;}
+div.rbtoc1669468455951 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1669468455951 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1608762051269">
+/*]]>*/</style></p><div class="toc-macro rbtoc1669468455951">
 <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 Sat Nov 26 13:17:27 2022
@@ -32,10 +32,10 @@
   <link rel="apple-touch-icon-precomposed" href="/images/apache-tapestry-icon-57.png">
   <link rel="shortcut icon" href="/images/apache-tapestry-icon-32.png">
 
-  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Sarabun:ital,wght@0,400;0,700;1,400;1,700&display=swap"> 
-  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
+  <link rel="stylesheet" href="/resources/bootstrap/bootstrap.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/themes/prism.min.css">
+  <link rel="stylesheet" href="/resources/fonts/fonts.css">
   <link rel="stylesheet" href="/styles/main.css">
 
   <script type="text/javascript">
@@ -46,7 +46,7 @@
 
   <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous" defer></script>
   <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous" defer></script>
-  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous" defer></script>
+  <script src="stylesheet" href="/resources/bootstrap/bootstrap.min.js">
   <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>
 

Modified: websites/production/tapestry/content/blogs.html
==============================================================================
--- websites/production/tapestry/content/blogs.html (original)
+++ websites/production/tapestry/content/blogs.html Sat Nov 26 13:17:27 2022
@@ -32,10 +32,10 @@
   <link rel="apple-touch-icon-precomposed" href="/images/apache-tapestry-icon-57.png">
   <link rel="shortcut icon" href="/images/apache-tapestry-icon-32.png">
 
-  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Sarabun:ital,wght@0,400;0,700;1,400;1,700&display=swap"> 
-  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
+  <link rel="stylesheet" href="/resources/bootstrap/bootstrap.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/themes/prism.min.css">
+  <link rel="stylesheet" href="/resources/fonts/fonts.css">
   <link rel="stylesheet" href="/styles/main.css">
 
   <script type="text/javascript">
@@ -46,7 +46,7 @@
 
   <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous" defer></script>
   <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous" defer></script>
-  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous" defer></script>
+  <script src="stylesheet" href="/resources/bootstrap/bootstrap.min.js">
   <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>
 

Modified: websites/production/tapestry/content/books.html
==============================================================================
--- websites/production/tapestry/content/books.html (original)
+++ websites/production/tapestry/content/books.html Sat Nov 26 13:17:27 2022
@@ -32,10 +32,10 @@
   <link rel="apple-touch-icon-precomposed" href="/images/apache-tapestry-icon-57.png">
   <link rel="shortcut icon" href="/images/apache-tapestry-icon-32.png">
 
-  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Sarabun:ital,wght@0,400;0,700;1,400;1,700&display=swap"> 
-  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
+  <link rel="stylesheet" href="/resources/bootstrap/bootstrap.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/themes/prism.min.css">
+  <link rel="stylesheet" href="/resources/fonts/fonts.css">
   <link rel="stylesheet" href="/styles/main.css">
 
   <script type="text/javascript">
@@ -46,7 +46,7 @@
 
   <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous" defer></script>
   <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous" defer></script>
-  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous" defer></script>
+  <script src="stylesheet" href="/resources/bootstrap/bootstrap.min.js">
   <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>
 
@@ -142,7 +142,7 @@
             
             <!-- /// Content Start -->
             <div id="content">
-                            <div id="ConfluenceContent"><p></p><div id="bar"><strong>We think you will love Tapestry!</strong> Give us 20 minutes and <strong><a href="tapestry-tutorial.html">follow our tutorial</a></strong>.</div><p></p><div class="big-col" id="content"><h2 id="Books-BooksonTapestry">Books on Tapestry</h2><h3 id="Books-PlugInTapestry">PlugIn Tapestry</h3><div class="sectionColumnWrapper"><div class="sectionMacro"><div class="sectionMacroRow"><div class="columnMacro" style="width:20%;min-width:20%;max-width:20%;"><p>&#160;<span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" src="books.data/portada-PugInTapestry-thumb.png"></span></p></div><div class="columnMacro"><ul><li><strong>Covers:</strong> Tapestry 5 (Version 5.4)</li><li><strong>Published:</strong> 2014</li><li><strong>Author:</strong> Picodotdev</li><li><strong>Language:</strong> Spanish</li><li><strong>Pages:</strong> 289</li><li><strong>More information: </strong><a class="e
 xternal-link" href="http://picodotdev.github.io/blog-bitix/2014/02/libro-sobre-desarrollo-de-aplicaciones-con-apache-tapestry/" rel="nofollow">http://picodotdev.github.io/blog-bitix/2014/02/libro-sobre-desarrollo-de-aplicaciones-con-apache-tapestry/</a></li></ul></div></div></div></div><p>As the first book to cover Tapestry 5.4 features, and the only up-to-date Tapestry book in Spanish, this book features material on the new JavaScript abstraction layer and the use of RequireJS and JavaScript modules, in addition to in-depth coverage of many other Tapestry topics. Available in several formats (PDF, epub, mobi HTML)</p><hr><p></p><h3 id="Books-Tapestry5-RapidwebapplicationdevelopmentinJava">Tapestry 5 - Rapid web application development in Java</h3><div class="sectionColumnWrapper"><div class="sectionMacro"><div class="sectionMacroRow"><div class="columnMacro" style="width:20%;min-width:20%;max-width:20%;"><p><a class="external-link" href="http://www.tapestry5book.com/" rel="nofollow
 "><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" src="books.data/tapestry5-rapid.jpg"></span></a></p></div><div class="columnMacro"><ul><li><strong>Covers:</strong> Tapestry 5 (Version 5.3)</li><li><strong>Published:</strong> 2012</li><li><strong>Author:</strong> Igor Drobiazko</li><li><strong>Language:</strong> English</li><li><strong>Pages:</strong> 482</li><li><strong>More information:</strong> <a class="external-link" href="https://web.archive.org/web/20180413075519/http://www.tapestry5book.com/" rel="nofollow">http://www.tapestry5book.com/</a></li></ul></div></div></div></div><p>Tapestry 5 - Rapid web application development in Java is a comprehensive guide, introducing Apache Tapestry and its innovative approach to building modern web applications. The book walks you through Tapestry 5, from a simple Hello World application to rich Ajax-enabled applications. Written by a core committer, this book provides deep insight into the architectur
 e of Tapestry 5. It not only shows you <em>how</em> to achieve specific goals but also teaches you the "why". You learn how to build modern, scalable Web 2.0 application with a component-oriented approach. This book also shows how Tapestry brings scripting language productivity within reach of Java developers without sacrificing any of Java's inherent speed and power.</p><p>Table of Contents</p><ol><li>Introducing Tapestry</li><li>Tapestry templates</li><li>Page navigation</li><li>Developing stateful applications</li><li>Localization</li><li>Creating Forms with Tapestry</li><li>Converting and validating user input</li><li>Generating UI for JavaBeans</li><li>Developing reusable components</li><li>Mixins</li><li>Creating Ajax-enabled applications</li><li>Persisting domain objects</li><li>Integrating Spring framework</li><li>Testing Tapestry applications</li><li>Tapestry IoC and Dependency Injection</li></ol><hr><h3 id="Books-Tapestry5:DieEntwicklungvonWebanwendungenmitLeichtigkeit">Ta
 pestry 5: Die Entwicklung von Webanwendungen mit Leichtigkeit</h3><div class="sectionColumnWrapper"><div class="sectionMacro"><div class="sectionMacroRow"><div class="columnMacro" style="width:20%;min-width:20%;max-width:20%;"><p><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image confluence-content-image-border" src="books.data/tapestry5-drobiazko.jpg"></span></p></div><div class="columnMacro"><ul><li><strong>Covers:</strong> Tapestry 5 (Version 5.1.0.5)</li><li><strong>Published:</strong> 2009</li><li><strong>Author:</strong> Igor Drobiazko</li><li><strong>Language:</strong> German</li></ul></div></div></div></div><p>This is the only Tapestry 5 book written in German. It is a definitive introduction to Tapestry 5 written by Igor Drobiazko, a committer of Tapestry. The book covers:</p><ul><li>Getting Started with Tapestry 5</li><li>Concepts of the framework</li><li>Localization/internationalization</li><li>Creating Forms</li><li>Generation of user i
 nterfaces for JavaBeans</li><li>Writing own components and mixins</li><li>Ajax</li><li>Writing tests for Tapestry applications</li><li>Hibernate and Spring integration</li><li>Dependency Injection and Tapestry IoC</li><li>AOP and bytecode manipuation</li></ul><hr><h3 id="Books-Tapestry5:BuildingWebApplications">Tapestry 5: Building Web Applications</h3><div class="sectionColumnWrapper"><div class="sectionMacro"><div class="sectionMacroRow"><div class="columnMacro" style="width:20%;min-width:20%;max-width:20%;"><p><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" src="books.data/packtpub_cover.png"></span></p></div><div class="columnMacro"><ul><li><strong>Covers:</strong> Tapestry 5</li><li><strong>Published:</strong> 2008</li><li><strong>Author:</strong> Alexander Kolesnikov</li><li><strong>Language:</strong> English</li></ul></div></div></div></div><p>Alexander follows up his long series of Tapestry 4 tutorials with the <em>first</em> book on Tap
 estry 5.</p><hr><h3 id="Books-TapestryCompleteReference">Tapestry Complete Reference</h3><div class="sectionColumnWrapper"><div class="sectionMacro"><div class="sectionMacroRow"><div class="columnMacro" style="width:20%;min-width:20%;max-width:20%;"><p><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" src="books.data/t4chinese.jpg"></span></p></div><div class="columnMacro"><ul><li><strong>Covers:</strong> Tapestry 4</li><li><strong>Published:</strong> 2007</li><li><strong>Author:</strong> A. Dong</li><li><strong>Language:</strong> Chinese</li></ul></div></div></div></div><p>The first Chinese-language book to cover Tapestry (though Tapestry in Action has been translated). as a non-Chinese speaker, it's a bit hard to know what's between the covers, but looks like it gets into the nitty-gritty of Tapestry, Spring and Hibernate.</p><hr><h3 id="Books-Tapestry101">Tapestry 101</h3><div class="sectionColumnWrapper"><div class="sectionMacro"><div class="s
 ectionMacroRow"><div class="columnMacro" style="width:20%;min-width:20%;max-width:20%;"><p><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" src="books.data/tapestry101.jpg"></span></p></div><div class="columnMacro"><ul><li><strong>Covers:</strong> Tapestry 4 (Spring/Hibernate/Hivemind/Tacos(ajax)</li><li><strong>Publisher:</strong> SourceBeat</li><li><strong>Published:</strong> 2006</li><li><strong>Authors:</strong> Warner Onstine</li></ul></div></div></div></div><p>Tapestry is an open-source web application framework written in Java. This framework is different from "standard" MVC frameworks <em>(like Struts or WebWork)</em> in that it is more of a component-oriented framework. A component-oriented framework <em>(like JavaServer Faces)</em> allows you to create re-usable components that you can then re-use on other projects with the ability to re-configure these components to suit a specific purpose.</p><p>Tapestry 101 will introduce readers to 
 this framework that is growing in popularity more and more. The focus of this book is to guide you through designing and implementing your application and providing information that you can improve on it with your own custom components.</p><p>Howard Lewis Ship <em>(creator of Tapestry)</em> provides the Foreword to the book and adds:</p><p><em>"Tapestry 101's focus is about getting things done, from a user's perspective not a Tapestry developer's. It covers the issues you'll face building real applications."</em></p><hr><h3 id="Books-BeginningPOJOs:LightweightJavaWebDevelopmentUsingPlainOldJavaObjectsinSpring,Hibernate,andTapestry">Beginning POJOs: Lightweight Java Web Development Using Plain Old Java Objects in Spring, Hibernate, and Tapestry</h3><div class="sectionColumnWrapper"><div class="sectionMacro"><div class="sectionMacroRow"><div class="columnMacro" style="width:20%;min-width:20%;max-width:20%;"><p><span class="confluence-embedded-file-wrapper"><img class="confluence-embed
 ded-image" src="books.data/beginning-pojos.gif"></span></p></div><div class="columnMacro"><ul><li><strong>Covers:</strong> Tapestry 4</li><li><strong>Publisher:</strong> Apress</li><li><strong>Published:</strong> 2006</li><li><strong>Authors:</strong> Brian Sam-Bodden</li></ul></div></div></div></div><p>This book guides you through the construction of complex but lightweight enterprise Java-based web applications. Such applications are centered around several major open source lightweight frameworks, including Spring, Hibernate, Tapestry, and JBoss. The Tapestry chapter (ch.7, p.239-304) covers:</p><ul><li>Installation and Configuration</li><li>Pages and Components</li><li>Forms and Form Components</li><li>Hivemind Services and Application State Objects</li><li>Annotations</li><li>Ajax-enabling applications with Tacos</li></ul><hr><h3 id="Books-EnjoyingWebDevelopmentwithTapestry">Enjoying Web Development with Tapestry</h3><div class="sectionColumnWrapper"><div class="sectionMacro"><
 div class="sectionMacroRow"><div class="columnMacro" style="width:20%;min-width:20%;max-width:20%;"><p><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" src="books.data/ewdt_tong_cover.jpg"></span></p></div><div class="columnMacro"><ul><li><strong>Covers:</strong> Tapestry 4.1/4/3</li><li><strong>Publisher:</strong> Agile Skills</li><li><strong>Published:</strong> 2006</li><li><strong>Authors:</strong> <a class="external-link" href="http://www.agileskills2.org/EWDT/" rel="nofollow">Kent Tong</a></li></ul></div></div></div></div><p>Enjoying Web Development with Tapestry by Kent Tong covers Tapestry 4.1 (with AJAX). Previous editions covered 4.0 and 3.0. Available in PDF and hard-copy formats.</p><ul><li>Getting Started with Tapestry</li><li>Using Forms</li><li>Validating Input</li><li>Creating an e-Shop</li><li>Creating Custom Components</li><li>Supporting Other Languages</li><li>Using the Table Component</li><li>Handling File Downloads and Uploads
 </li><li>Providing a Common Layout</li><li>Using Javascript</li><li>Building Interactive Forms with AJAX</li><li>Test Driven Development with HtmlUnit</li><li>Database and Concurrency Issues</li><li>Using Hibernate</li><li>Integrating with Struts</li></ul><hr><h3 id="Books-TapestryWebanwendungenmitdemApacheFramework">Tapestry Webanwendungen mit dem Apache Framework</h3><div class="sectionColumnWrapper"><div class="sectionMacro"><div class="sectionMacroRow"><div class="columnMacro" style="width:20%;min-width:20%;max-width:20%;"><p><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image confluence-content-image-border" src="books.data/tapestry-german-cover.gif"></span></p></div><div class="columnMacro"><ul><li><strong>Covers:</strong> Tapestry 3</li><li><strong>Publisher:</strong> S&amp;S</li><li><strong>Published:</strong> 2004</li><li><strong>Authors:</strong> Stefan Edlich,Patrick Kunert</li></ul></div></div></div></div><p>Tapestry Webanwendungen mit de
 m Apache Framework is a fast-paced guide to using Tapestry 3, focusing on combining Tapestry with other open-source frameworks, as well as developing Tapestry applications using <a class="external-link" href="http://spindle.sourceforge.net/" rel="nofollow">Spindle</a>. Covers:</p><ul><li>Web Frameworks, JavaServer Faces, .NET Web Forms und Tapestry</li><li>Installation und Einbindung in Tomcat und JBoss</li><li>Einstieg in Tapestry, HelloWorld</li><li>Aufbau und Anwendung von Komponenten</li><li>Formular-Validierung, JavaScript-Support, Internationalisierung</li><li>Tapestry-Scope-Objekte (Visit, Global), Engines</li><li>Inspector, Eclipse Plug-in Spindle</li><li>Persistenz f&#252;r Tapestry: JDO, Hibernate, Toplink und exotische Mapper</li></ul><hr><h3 id="Books-TapestryinAction">Tapestry in Action</h3><div class="sectionColumnWrapper"><div class="sectionMacro"><div class="sectionMacroRow"><div class="columnMacro" style="width:20%;min-width:20%;max-width:20%;"><p><span class="confl
 uence-embedded-file-wrapper"><img class="confluence-embedded-image confluence-content-image-border" src="books.data/tapestry-in-action.png"></span></p></div><div class="columnMacro"><ul><li><strong>Covers:</strong> Tapestry 3</li><li><strong>Publisher:</strong> Manning Publications</li><li><strong>Published:</strong> 2004</li><li><strong>Authors:</strong> <a class="external-link" href="http://howardlewisship.com/" rel="nofollow">Howard M. Lewis Ship</a></li></ul></div></div></div></div><p>Tapestry in Action is the definitive introduction to Tapestry 3 written by Howard Lewis Ship, the creator of Tapestry. It covers:</p><ul><li>Tapestry's Component Object Model</li><li>How to write new components</li><li>How to configure third party components</li><li>Dynamic JavaScript integration</li><li>Form validation</li><li>Tapestry/JSP integration</li><li>Localization/internationalization</li><li>J2EE integration</li></ul><p></p><div class="clearer"></div></div>
+                            <div id="ConfluenceContent"><p></p><div id="bar"><strong>We think you will love Tapestry!</strong> Give us 20 minutes and <strong><a href="tapestry-tutorial.html">follow our tutorial</a></strong>.</div><p></p><div class="big-col" id="content"><h2 id="Books-BooksonTapestry">Books on Tapestry</h2><h3 id="Books-PlugInTapestry">PlugIn Tapestry</h3><div class="sectionColumnWrapper"><div class="sectionMacro"><div class="sectionMacroRow"><div class="columnMacro" style="width:20%;min-width:20%;max-width:20%;"><p>&#160;<span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" draggable="false" src="books.data/portada-PugInTapestry-thumb.png"></span></p></div><div class="columnMacro"><ul><li><strong>Covers:</strong> Tapestry 5 (Version 5.4)</li><li><strong>Published:</strong> 2014</li><li><strong>Author:</strong> Picodotdev</li><li><strong>Language:</strong> Spanish</li><li><strong>Pages:</strong> 289</li><li><strong>More information: </
 strong><a class="external-link" href="http://picodotdev.github.io/blog-bitix/2014/02/libro-sobre-desarrollo-de-aplicaciones-con-apache-tapestry/" rel="nofollow">http://picodotdev.github.io/blog-bitix/2014/02/libro-sobre-desarrollo-de-aplicaciones-con-apache-tapestry/</a></li></ul></div></div></div></div><p>As the first book to cover Tapestry 5.4 features, and the only up-to-date Tapestry book in Spanish, this book features material on the new JavaScript abstraction layer and the use of RequireJS and JavaScript modules, in addition to in-depth coverage of many other Tapestry topics. Available in several formats (PDF, epub, mobi HTML)</p><hr><p></p><h3 id="Books-Tapestry5-RapidwebapplicationdevelopmentinJava">Tapestry 5 - Rapid web application development in Java</h3><div class="sectionColumnWrapper"><div class="sectionMacro"><div class="sectionMacroRow"><div class="columnMacro" style="width:20%;min-width:20%;max-width:20%;"><p><a class="external-link" href="http://www.tapestry5book.c
 om/" rel="nofollow"><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" draggable="false" src="books.data/tapestry5-rapid.jpg"></span></a></p></div><div class="columnMacro"><ul><li><strong>Covers:</strong> Tapestry 5 (Version 5.3)</li><li><strong>Published:</strong> 2012</li><li><strong>Author:</strong> Igor Drobiazko</li><li><strong>Language:</strong> English</li><li><strong>Pages:</strong> 482</li><li><strong>More information:</strong> <a class="external-link" href="https://web.archive.org/web/20180413075519/http://www.tapestry5book.com/" rel="nofollow">http://www.tapestry5book.com/</a></li></ul></div></div></div></div><p>Tapestry 5 - Rapid web application development in Java is a comprehensive guide, introducing Apache Tapestry and its innovative approach to building modern web applications. The book walks you through Tapestry 5, from a simple Hello World application to rich Ajax-enabled applications. Written by a core committer, this book provid
 es deep insight into the architecture of Tapestry 5. It not only shows you <em>how</em> to achieve specific goals but also teaches you the "why". You learn how to build modern, scalable Web 2.0 application with a component-oriented approach. This book also shows how Tapestry brings scripting language productivity within reach of Java developers without sacrificing any of Java's inherent speed and power.</p><p>Table of Contents</p><ol><li>Introducing Tapestry</li><li>Tapestry templates</li><li>Page navigation</li><li>Developing stateful applications</li><li>Localization</li><li>Creating Forms with Tapestry</li><li>Converting and validating user input</li><li>Generating UI for JavaBeans</li><li>Developing reusable components</li><li>Mixins</li><li>Creating Ajax-enabled applications</li><li>Persisting domain objects</li><li>Integrating Spring framework</li><li>Testing Tapestry applications</li><li>Tapestry IoC and Dependency Injection</li></ol><hr><h3 id="Books-Tapestry5:DieEntwicklung
 vonWebanwendungenmitLeichtigkeit">Tapestry 5: Die Entwicklung von Webanwendungen mit Leichtigkeit</h3><div class="sectionColumnWrapper"><div class="sectionMacro"><div class="sectionMacroRow"><div class="columnMacro" style="width:20%;min-width:20%;max-width:20%;"><p><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image confluence-content-image-border" draggable="false" src="books.data/tapestry5-drobiazko.jpg"></span></p></div><div class="columnMacro"><ul><li><strong>Covers:</strong> Tapestry 5 (Version 5.1.0.5)</li><li><strong>Published:</strong> 2009</li><li><strong>Author:</strong> Igor Drobiazko</li><li><strong>Language:</strong> German</li></ul></div></div></div></div><p>This is the only Tapestry 5 book written in German. It is a definitive introduction to Tapestry 5 written by Igor Drobiazko, a committer of Tapestry. The book covers:</p><ul><li>Getting Started with Tapestry 5</li><li>Concepts of the framework</li><li>Localization/internationalizati
 on</li><li>Creating Forms</li><li>Generation of user interfaces for JavaBeans</li><li>Writing own components and mixins</li><li>Ajax</li><li>Writing tests for Tapestry applications</li><li>Hibernate and Spring integration</li><li>Dependency Injection and Tapestry IoC</li><li>AOP and bytecode manipuation</li></ul><hr><h3 id="Books-Tapestry5:BuildingWebApplications">Tapestry 5: Building Web Applications</h3><div class="sectionColumnWrapper"><div class="sectionMacro"><div class="sectionMacroRow"><div class="columnMacro" style="width:20%;min-width:20%;max-width:20%;"><p><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" draggable="false" src="books.data/packtpub_cover.png"></span></p></div><div class="columnMacro"><ul><li><strong>Covers:</strong> Tapestry 5</li><li><strong>Published:</strong> 2008</li><li><strong>Author:</strong> Alexander Kolesnikov</li><li><strong>Language:</strong> English</li></ul></div></div></div></div><p>Alexander follows up his
  long series of Tapestry 4 tutorials with the <em>first</em> book on Tapestry 5.</p><hr><h3 id="Books-TapestryCompleteReference">Tapestry Complete Reference</h3><div class="sectionColumnWrapper"><div class="sectionMacro"><div class="sectionMacroRow"><div class="columnMacro" style="width:20%;min-width:20%;max-width:20%;"><p><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" draggable="false" src="books.data/t4chinese.jpg"></span></p></div><div class="columnMacro"><ul><li><strong>Covers:</strong> Tapestry 4</li><li><strong>Published:</strong> 2007</li><li><strong>Author:</strong> A. Dong</li><li><strong>Language:</strong> Chinese</li></ul></div></div></div></div><p>The first Chinese-language book to cover Tapestry (though Tapestry in Action has been translated). as a non-Chinese speaker, it's a bit hard to know what's between the covers, but looks like it gets into the nitty-gritty of Tapestry, Spring and Hibernate.</p><hr><h3 id="Books-Tapestry101">
 Tapestry 101</h3><div class="sectionColumnWrapper"><div class="sectionMacro"><div class="sectionMacroRow"><div class="columnMacro" style="width:20%;min-width:20%;max-width:20%;"><p><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" draggable="false" src="books.data/tapestry101.jpg"></span></p></div><div class="columnMacro"><ul><li><strong>Covers:</strong> Tapestry 4 (Spring/Hibernate/Hivemind/Tacos(ajax)</li><li><strong>Publisher:</strong> SourceBeat</li><li><strong>Published:</strong> 2006</li><li><strong>Authors:</strong> Warner Onstine</li></ul></div></div></div></div><p>Tapestry is an open-source web application framework written in Java. This framework is different from "standard" MVC frameworks <em>(like Struts or WebWork)</em> in that it is more of a component-oriented framework. A component-oriented framework <em>(like JavaServer Faces)</em> allows you to create re-usable components that you can then re-use on other projects with the abilit
 y to re-configure these components to suit a specific purpose.</p><p>Tapestry 101 will introduce readers to this framework that is growing in popularity more and more. The focus of this book is to guide you through designing and implementing your application and providing information that you can improve on it with your own custom components.</p><p>Howard Lewis Ship <em>(creator of Tapestry)</em> provides the Foreword to the book and adds:</p><p><em>"Tapestry 101's focus is about getting things done, from a user's perspective not a Tapestry developer's. It covers the issues you'll face building real applications."</em></p><hr><h3 id="Books-BeginningPOJOs:LightweightJavaWebDevelopmentUsingPlainOldJavaObjectsinSpring,Hibernate,andTapestry">Beginning POJOs: Lightweight Java Web Development Using Plain Old Java Objects in Spring, Hibernate, and Tapestry</h3><div class="sectionColumnWrapper"><div class="sectionMacro"><div class="sectionMacroRow"><div class="columnMacro" style="width:20%;
 min-width:20%;max-width:20%;"><p><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" draggable="false" src="books.data/beginning-pojos.gif"></span></p></div><div class="columnMacro"><ul><li><strong>Covers:</strong> Tapestry 4</li><li><strong>Publisher:</strong> Apress</li><li><strong>Published:</strong> 2006</li><li><strong>Authors:</strong> Brian Sam-Bodden</li></ul></div></div></div></div><p>This book guides you through the construction of complex but lightweight enterprise Java-based web applications. Such applications are centered around several major open source lightweight frameworks, including Spring, Hibernate, Tapestry, and JBoss. The Tapestry chapter (ch.7, p.239-304) covers:</p><ul><li>Installation and Configuration</li><li>Pages and Components</li><li>Forms and Form Components</li><li>Hivemind Services and Application State Objects</li><li>Annotations</li><li>Ajax-enabling applications with Tacos</li></ul><hr><h3 id="Books-EnjoyingWebDev
 elopmentwithTapestry">Enjoying Web Development with Tapestry</h3><div class="sectionColumnWrapper"><div class="sectionMacro"><div class="sectionMacroRow"><div class="columnMacro" style="width:20%;min-width:20%;max-width:20%;"><p><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" draggable="false" src="books.data/ewdt_tong_cover.jpg"></span></p></div><div class="columnMacro"><ul><li><strong>Covers:</strong> Tapestry 4.1/4/3</li><li><strong>Publisher:</strong> Agile Skills</li><li><strong>Published:</strong> 2006</li><li><strong>Authors:</strong> <a class="external-link" href="http://www.agileskills2.org/EWDT/" rel="nofollow">Kent Tong</a></li></ul></div></div></div></div><p>Enjoying Web Development with Tapestry by Kent Tong covers Tapestry 4.1 (with AJAX). Previous editions covered 4.0 and 3.0. Available in PDF and hard-copy formats.</p><ul><li>Getting Started with Tapestry</li><li>Using Forms</li><li>Validating Input</li><li>Creating an e-Shop</li
 ><li>Creating Custom Components</li><li>Supporting Other Languages</li><li>Using the Table Component</li><li>Handling File Downloads and Uploads</li><li>Providing a Common Layout</li><li>Using Javascript</li><li>Building Interactive Forms with AJAX</li><li>Test Driven Development with HtmlUnit</li><li>Database and Concurrency Issues</li><li>Using Hibernate</li><li>Integrating with Struts</li></ul><hr><h3 id="Books-TapestryWebanwendungenmitdemApacheFramework">Tapestry Webanwendungen mit dem Apache Framework</h3><div class="sectionColumnWrapper"><div class="sectionMacro"><div class="sectionMacroRow"><div class="columnMacro" style="width:20%;min-width:20%;max-width:20%;"><p><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image confluence-content-image-border" draggable="false" src="books.data/tapestry-german-cover.gif"></span></p></div><div class="columnMacro"><ul><li><strong>Covers:</strong> Tapestry 3</li><li><strong>Publisher:</strong> S&amp;S</li><li>
 <strong>Published:</strong> 2004</li><li><strong>Authors:</strong> Stefan Edlich,Patrick Kunert</li></ul></div></div></div></div><p>Tapestry Webanwendungen mit dem Apache Framework is a fast-paced guide to using Tapestry 3, focusing on combining Tapestry with other open-source frameworks, as well as developing Tapestry applications using <a class="external-link" href="http://spindle.sourceforge.net/" rel="nofollow">Spindle</a>. Covers:</p><ul><li>Web Frameworks, JavaServer Faces, .NET Web Forms und Tapestry</li><li>Installation und Einbindung in Tomcat und JBoss</li><li>Einstieg in Tapestry, HelloWorld</li><li>Aufbau und Anwendung von Komponenten</li><li>Formular-Validierung, JavaScript-Support, Internationalisierung</li><li>Tapestry-Scope-Objekte (Visit, Global), Engines</li><li>Inspector, Eclipse Plug-in Spindle</li><li>Persistenz f&#252;r Tapestry: JDO, Hibernate, Toplink und exotische Mapper</li></ul><hr><h3 id="Books-TapestryinAction">Tapestry in Action</h3><div class="sectionC
 olumnWrapper"><div class="sectionMacro"><div class="sectionMacroRow"><div class="columnMacro" style="width:20%;min-width:20%;max-width:20%;"><p><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image confluence-content-image-border" draggable="false" src="books.data/tapestry-in-action.png"></span></p></div><div class="columnMacro"><ul><li><strong>Covers:</strong> Tapestry 3</li><li><strong>Publisher:</strong> Manning Publications</li><li><strong>Published:</strong> 2004</li><li><strong>Authors:</strong> <a class="external-link" href="http://howardlewisship.com/" rel="nofollow">Howard M. Lewis Ship</a></li></ul></div></div></div></div><p>Tapestry in Action is the definitive introduction to Tapestry 3 written by Howard Lewis Ship, the creator of Tapestry. It covers:</p><ul><li>Tapestry's Component Object Model</li><li>How to write new components</li><li>How to configure third party components</li><li>Dynamic JavaScript integration</li><li>Form validation</
 li><li>Tapestry/JSP integration</li><li>Localization/internationalization</li><li>J2EE integration</li></ul><p></p><div class="clearer"></div></div>
 <div class="clearer"></div></div>
             </div>
             <!-- /// Content End -->

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 Sat Nov 26 13:17:27 2022
@@ -32,10 +32,10 @@
   <link rel="apple-touch-icon-precomposed" href="/images/apache-tapestry-icon-57.png">
   <link rel="shortcut icon" href="/images/apache-tapestry-icon-32.png">
 
-  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Sarabun:ital,wght@0,400;0,700;1,400;1,700&display=swap"> 
-  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
+  <link rel="stylesheet" href="/resources/bootstrap/bootstrap.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/themes/prism.min.css">
+  <link rel="stylesheet" href="/resources/fonts/fonts.css">
   <link rel="stylesheet" href="/styles/main.css">
 
   <script type="text/javascript">
@@ -46,7 +46,7 @@
 
   <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous" defer></script>
   <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous" defer></script>
-  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous" defer></script>
+  <script src="stylesheet" href="/resources/bootstrap/bootstrap.min.js">
   <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>
 

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 Sat Nov 26 13:17:27 2022
@@ -32,10 +32,10 @@
   <link rel="apple-touch-icon-precomposed" href="/images/apache-tapestry-icon-57.png">
   <link rel="shortcut icon" href="/images/apache-tapestry-icon-32.png">
 
-  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Sarabun:ital,wght@0,400;0,700;1,400;1,700&display=swap"> 
-  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
+  <link rel="stylesheet" href="/resources/bootstrap/bootstrap.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css">
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/themes/prism.min.css">
+  <link rel="stylesheet" href="/resources/fonts/fonts.css">
   <link rel="stylesheet" href="/styles/main.css">
 
   <script type="text/javascript">
@@ -46,7 +46,7 @@
 
   <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous" defer></script>
   <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous" defer></script>
-  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous" defer></script>
+  <script src="stylesheet" href="/resources/bootstrap/bootstrap.min.js">
   <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>