From 888930b930aff8c22a31ccbb7c4dd3e4670d407d Mon Sep 17 00:00:00 2001
From: Jonas Leder <jonas@jonasled.de>
Date: Fri, 10 Sep 2021 19:22:24 +0000
Subject: [PATCH] load hcaptcha only if really needed

---
 js/customElements/newComment.js        | 42 +++++++++++++++-----------
 public/anleitungen/nextcloud.html      |  2 +-
 public/anleitungen/snowboy.html        |  2 +-
 public/projekte/blitzortung.html       |  2 +-
 public/projekte/gclogLink.html         |  2 +-
 public/projekte/insecam.html           |  2 +-
 public/projekte/ledtisch1.html         |  2 +-
 public/projekte/ledtisch2.html         |  2 +-
 public/projekte/mqttpush.html          |  2 +-
 public/projekte/privateNote.html       |  2 +-
 public/projekte/proxdroid.html         |  2 +-
 public/projekte/regensensor.html       |  2 +-
 public/projekte/smartmirror.html       |  2 +-
 public/projekte/urlkuerzer1.html       |  2 +-
 public/projekte/urlkuerzer2.html       |  2 +-
 public/projekte/websitecloner.html     |  1 -
 public/projekte/youtubedownloader.html |  2 +-
 public/systeme/backupServer.html       |  2 +-
 public/systeme/gameServer.html         |  2 +-
 public/systeme/hpServer.html           |  2 +-
 public/systeme/laptop.html             |  2 +-
 public/systeme/nas.html                |  2 +-
 public/systeme/pc.html                 |  2 +-
 23 files changed, 45 insertions(+), 40 deletions(-)

diff --git a/js/customElements/newComment.js b/js/customElements/newComment.js
index 30b301c..9c01967 100644
--- a/js/customElements/newComment.js
+++ b/js/customElements/newComment.js
@@ -7,26 +7,32 @@ class newComment extends HTMLElement {
         document.getElementById("showCommentButton").onclick = this.setupForm;
     }
 
-    async setupForm(){
+    async setupForm() {
         let sitekey = await (await fetch("/API/config.php?name=sitekey")).text();
 
-        this.parentElement.innerHTML = ` 
-            <form action="/API/newComment.php" method="post">
-                <label for="name">Name:</label><br>
-                <input type="text" id="name" name="name"><br><br>
-        
-                <label for="email">E-Mail: (wird nicht ver&ouml;ffentlicht)</label><br>
-                <input type="text" id="email" name="email"><br><br>
-        
-                <label for="comment">Kommentar:</label><br>
-                <textarea name="comment" id="comment"></textarea><br><br>
-                
-                <div class="h-captcha" data-theme="dark" data-sitekey="${sitekey}"></div><br>
-                
-                <input type="submit" value="Kommentar ver&ouml;ffentlichen"><br>
-                <p>Mit dem Klick auf den obigen Button erkl&auml;ren sie sich mit der <a href="/datenschutzerklaerung.html">Datenschutzerkl&auml;rung</a> einverstanden.</p>
-            </form>
-        `;
+        let script = document.createElement('script');
+        script.src = "https://hCaptcha.com/1/api.js";
+        script.type = 'text/javascript';
+        script.onload = () => {
+            this.parentElement.innerHTML = ` 
+                <form action="/API/newComment.php" method="post">
+                    <label for="name">Name:</label><br>
+                    <input type="text" id="name" name="name"><br><br>
+            
+                    <label for="email">E-Mail: (wird nicht ver&ouml;ffentlicht)</label><br>
+                    <input type="text" id="email" name="email"><br><br>
+            
+                    <label for="comment">Kommentar:</label><br>
+                    <textarea name="comment" id="comment"></textarea><br><br>
+                    
+                    <div class="h-captcha" data-theme="dark" data-sitekey="${sitekey}"></div><br>
+                    
+                    <input type="submit" value="Kommentar ver&ouml;ffentlichen"><br>
+                    <p>Mit dem Klick auf den obigen Button erkl&auml;ren sie sich mit der <a href="/datenschutzerklaerung.html">Datenschutzerkl&auml;rung</a> einverstanden.</p>
+                </form>
+            `;
+        }
+        document.body.append(script);
     }
 }
 
diff --git a/public/anleitungen/nextcloud.html b/public/anleitungen/nextcloud.html
index 61a4b81..85b7165 100644
--- a/public/anleitungen/nextcloud.html
+++ b/public/anleitungen/nextcloud.html
@@ -83,5 +83,5 @@ chown apache /var/www/localhost/htdocs/ -R</code>
     </div>
     <jl-footer></jl-footer>
 
-    <script async defer src='https://hCaptcha.com/1/api.js'></script>
+    
     <script src="/js/script.js"></script>
diff --git a/public/anleitungen/snowboy.html b/public/anleitungen/snowboy.html
index e0fb8aa..06c571f 100644
--- a/public/anleitungen/snowboy.html
+++ b/public/anleitungen/snowboy.html
@@ -65,5 +65,5 @@ make</code></pre>
 </div>
 <jl-footer></jl-footer>
 
-<script async defer src='https://hCaptcha.com/1/api.js'></script>
+
 <script src="/js/script.js"></script>
\ No newline at end of file
diff --git a/public/projekte/blitzortung.html b/public/projekte/blitzortung.html
index e83ae69..c72de63 100644
--- a/public/projekte/blitzortung.html
+++ b/public/projekte/blitzortung.html
@@ -27,7 +27,7 @@
 </div>
 <jl-footer></jl-footer>
 
-<script src='https://hCaptcha.com/1/api.js' async defer></script>
+
 <script src="/js/script.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/public/projekte/gclogLink.html b/public/projekte/gclogLink.html
index ae715db..ae00a92 100644
--- a/public/projekte/gclogLink.html
+++ b/public/projekte/gclogLink.html
@@ -24,5 +24,5 @@
 </div>
 <jl-footer></jl-footer>
 
-<script async defer src='https://hCaptcha.com/1/api.js'></script>
+
 <script src="/js/script.js"></script>
\ No newline at end of file
diff --git a/public/projekte/insecam.html b/public/projekte/insecam.html
index d044fa1..d5c5c30 100644
--- a/public/projekte/insecam.html
+++ b/public/projekte/insecam.html
@@ -45,5 +45,5 @@
 </div>
 <jl-footer></jl-footer>
 
-<script async defer src='https://hCaptcha.com/1/api.js'></script>
+
 <script src="/js/script.js"></script>
\ No newline at end of file
diff --git a/public/projekte/ledtisch1.html b/public/projekte/ledtisch1.html
index e978f1f..72c9bcf 100644
--- a/public/projekte/ledtisch1.html
+++ b/public/projekte/ledtisch1.html
@@ -141,5 +141,5 @@
 </div>
 <jl-footer></jl-footer>
 
-<script async defer src='https://hCaptcha.com/1/api.js'></script>
+
 <script src="/js/script.js"></script>
\ No newline at end of file
diff --git a/public/projekte/ledtisch2.html b/public/projekte/ledtisch2.html
index 12b62b3..67a778c 100644
--- a/public/projekte/ledtisch2.html
+++ b/public/projekte/ledtisch2.html
@@ -81,5 +81,5 @@
 </div>
 <jl-footer></jl-footer>
 
-<script async defer src='https://hCaptcha.com/1/api.js'></script>
+
 <script src="/js/script.js"></script>
diff --git a/public/projekte/mqttpush.html b/public/projekte/mqttpush.html
index f10c576..9907cf5 100644
--- a/public/projekte/mqttpush.html
+++ b/public/projekte/mqttpush.html
@@ -26,5 +26,5 @@
 </div>
 <jl-footer></jl-footer>
 
-<script async defer src='https://hCaptcha.com/1/api.js'></script>
+
 <script src="/js/script.js"></script>
\ No newline at end of file
diff --git a/public/projekte/privateNote.html b/public/projekte/privateNote.html
index 6f3327e..49e145c 100644
--- a/public/projekte/privateNote.html
+++ b/public/projekte/privateNote.html
@@ -39,7 +39,7 @@
     </div>
     <jl-footer></jl-footer>
 
-    <script src='https://hCaptcha.com/1/api.js' async defer></script>
+    
     <script src="/js/script.js"></script>
 </body>
 
diff --git a/public/projekte/proxdroid.html b/public/projekte/proxdroid.html
index ba65582..44d9e59 100644
--- a/public/projekte/proxdroid.html
+++ b/public/projekte/proxdroid.html
@@ -31,5 +31,5 @@
 </div>
 <jl-footer></jl-footer>
 
-<script async defer src='https://hCaptcha.com/1/api.js'></script>
+
 <script src="/js/script.js"></script>
\ No newline at end of file
diff --git a/public/projekte/regensensor.html b/public/projekte/regensensor.html
index 9d8613c..4730422 100644
--- a/public/projekte/regensensor.html
+++ b/public/projekte/regensensor.html
@@ -55,5 +55,5 @@
 </div>
 <jl-footer></jl-footer>
 
-<script async defer src='https://hCaptcha.com/1/api.js'></script>
+
 <script src="/js/script.js"></script>
\ No newline at end of file
diff --git a/public/projekte/smartmirror.html b/public/projekte/smartmirror.html
index 8eff679..2d655de 100644
--- a/public/projekte/smartmirror.html
+++ b/public/projekte/smartmirror.html
@@ -40,5 +40,5 @@
 </div>
 <jl-footer></jl-footer>
 
-<script async defer src='https://hCaptcha.com/1/api.js'></script>
+
 <script src="/js/script.js"></script>
\ No newline at end of file
diff --git a/public/projekte/urlkuerzer1.html b/public/projekte/urlkuerzer1.html
index d01d29f..7db43df 100644
--- a/public/projekte/urlkuerzer1.html
+++ b/public/projekte/urlkuerzer1.html
@@ -41,5 +41,5 @@
 </div>
 <jl-footer></jl-footer>
 
-<script async defer src='https://hCaptcha.com/1/api.js'></script>
+
 <script src="/js/script.js"></script>
\ No newline at end of file
diff --git a/public/projekte/urlkuerzer2.html b/public/projekte/urlkuerzer2.html
index 1d71893..bd910a7 100644
--- a/public/projekte/urlkuerzer2.html
+++ b/public/projekte/urlkuerzer2.html
@@ -48,5 +48,5 @@
 </div>
 <jl-footer></jl-footer>
 
-<script async defer src='https://hCaptcha.com/1/api.js'></script>
+
 <script src="/js/script.js"></script>
\ No newline at end of file
diff --git a/public/projekte/websitecloner.html b/public/projekte/websitecloner.html
index efe9b9e..0319995 100644
--- a/public/projekte/websitecloner.html
+++ b/public/projekte/websitecloner.html
@@ -19,5 +19,4 @@
 </div>
 <jl-footer></jl-footer>
 
-<script src='https://hCaptcha.com/1/api.js' async defer></script>
 <script src="/js/script.js"></script>
\ No newline at end of file
diff --git a/public/projekte/youtubedownloader.html b/public/projekte/youtubedownloader.html
index e00e6fa..5cbf9fe 100644
--- a/public/projekte/youtubedownloader.html
+++ b/public/projekte/youtubedownloader.html
@@ -25,5 +25,5 @@
 </div>
 <jl-footer></jl-footer>
 
-<script async defer src='https://hCaptcha.com/1/api.js'></script>
+
 <script src="/js/script.js"></script>
\ No newline at end of file
diff --git a/public/systeme/backupServer.html b/public/systeme/backupServer.html
index bfa8826..09c3aea 100644
--- a/public/systeme/backupServer.html
+++ b/public/systeme/backupServer.html
@@ -35,7 +35,7 @@
 </div>
 <jl-footer></jl-footer>
 
-<script src='https://hCaptcha.com/1/api.js' async defer></script>
+
 <script src="/js/script.js"></script>
 </body>
 </html>
diff --git a/public/systeme/gameServer.html b/public/systeme/gameServer.html
index d03e146..3526a14 100644
--- a/public/systeme/gameServer.html
+++ b/public/systeme/gameServer.html
@@ -43,7 +43,7 @@
 </div>
 <jl-footer></jl-footer>
 
-<script src='https://hCaptcha.com/1/api.js' async defer></script>
+
 <script src="/js/script.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/public/systeme/hpServer.html b/public/systeme/hpServer.html
index bf9f3fa..e27e7a9 100644
--- a/public/systeme/hpServer.html
+++ b/public/systeme/hpServer.html
@@ -40,7 +40,7 @@
 </div>
 <jl-footer></jl-footer>
 
-<script src='https://hCaptcha.com/1/api.js' async defer></script>
+
 <script src="/js/script.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/public/systeme/laptop.html b/public/systeme/laptop.html
index 70dbcfd..18ae896 100644
--- a/public/systeme/laptop.html
+++ b/public/systeme/laptop.html
@@ -30,7 +30,7 @@
 </div>
 <jl-footer></jl-footer>
 
-<script src='https://hCaptcha.com/1/api.js' async defer></script>
+
 <script src="/js/script.js"></script>
 </body>
 </html>
diff --git a/public/systeme/nas.html b/public/systeme/nas.html
index a6b499d..66d4abb 100644
--- a/public/systeme/nas.html
+++ b/public/systeme/nas.html
@@ -35,7 +35,7 @@
 </div>
 <jl-footer></jl-footer>
 
-<script src='https://hCaptcha.com/1/api.js' async defer></script>
+
 <script src="/js/script.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/public/systeme/pc.html b/public/systeme/pc.html
index d52d4f7..ab65aab 100644
--- a/public/systeme/pc.html
+++ b/public/systeme/pc.html
@@ -47,7 +47,7 @@
 </div>
 <jl-footer></jl-footer>
 
-<script src='https://hCaptcha.com/1/api.js' async defer></script>
+
 <script src="/js/script.js"></script>
 </body>
 </html>
-- 
GitLab