From 42dc7faf86845fbfe55855833a55410a392fac29 Mon Sep 17 00:00:00 2001 From: Ludger Sicking <sicking@comenius.de> Date: Wed, 22 Jan 2025 08:25:42 +0100 Subject: [PATCH] Alternative: (c) durch eigenes Footer-Partial --- sb/hugo.yaml | 1 - sb/layouts/partials/footer.html | 145 ++++++++++++++++++++++++++++++++ 2 files changed, 145 insertions(+), 1 deletion(-) create mode 100644 sb/layouts/partials/footer.html diff --git a/sb/hugo.yaml b/sb/hugo.yaml index cd2c0c3..4d530e1 100644 --- a/sb/hugo.yaml +++ b/sb/hugo.yaml @@ -3,7 +3,6 @@ defaultContentLanguage: de languageCode: de title: oer.community theme: PaperMod -copyright: "[CC BY](https://creativecommons.org/licenses/by/4.0/) 2025 [Comenius-Institut](https://comenius.de) Förderkennzeichen BMBF: [01PO23012A](https://www.oer-strategie.de/projects/foerbico-projektsteckbrief/)" menus: main: diff --git a/sb/layouts/partials/footer.html b/sb/layouts/partials/footer.html new file mode 100644 index 0000000..ceb05a4 --- /dev/null +++ b/sb/layouts/partials/footer.html @@ -0,0 +1,145 @@ +<footer class="footer"> + <p> + <span> + <a href="https://creativecommons.org/licenses/by/4.0/" rel="noopener noreferrer" target="_blank">CC BY</a> + 2024 - {{ now.Year }} <a href="https://oer.community/">FOERBICO</a> - soweit nicht anders angegeben + </span> + <span> + · + <a href="https://oer.community/impressum/">Impressum</a> & <a href="https://oer.community/datenschutz/">Datenschutz</a> + </span> + </p> + <p> + <span> + Das Projekt FOERBICO wird vom + <a href="https://www.bmbf.de" rel="noopener noreferrer" target="_blank">BMBF</a> gefördert: + Förderkennzeichen <a href="https://www.oer-strategie.de/projects/foerbico-projektsteckbrief/" rel="noopener noreferrer" target="_blank">01PO23012</a> </a> + </span> + · + <span> + Powered by + <a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> & + <a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a> + </span> + </p> +</footer> + +{{- if (not site.Params.disableScrollToTop) }} +<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor"> + <path d="M12 6H0l6-6z" /> + </svg> +</a> +{{- end }} + + +<script> + let menu = document.getElementById('menu') + if (menu) { + menu.scrollLeft = localStorage.getItem("menu-scroll-position"); + menu.onscroll = function () { + localStorage.setItem("menu-scroll-position", menu.scrollLeft); + } + } + + document.querySelectorAll('a[href^="#"]').forEach(anchor => { + anchor.addEventListener("click", function (e) { + e.preventDefault(); + var id = this.getAttribute("href").substr(1); + if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) { + document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({ + behavior: "smooth" + }); + } else { + document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView(); + } + if (id === "top") { + history.replaceState(null, null, " "); + } else { + history.pushState(null, null, `#${id}`); + } + }); + }); + +</script> + +{{- if (not site.Params.disableScrollToTop) }} +<script> + var mybutton = document.getElementById("top-link"); + window.onscroll = function () { + if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) { + mybutton.style.visibility = "visible"; + mybutton.style.opacity = "1"; + } else { + mybutton.style.visibility = "hidden"; + mybutton.style.opacity = "0"; + } + }; + +</script> +{{- end }} + +{{- if (not site.Params.disableThemeToggle) }} +<script> + document.getElementById("theme-toggle").addEventListener("click", () => { + if (document.body.className.includes("dark")) { + document.body.classList.remove('dark'); + localStorage.setItem("pref-theme", 'light'); + } else { + document.body.classList.add('dark'); + localStorage.setItem("pref-theme", 'dark'); + } + }) + +</script> +{{- end }} + +{{- if (and (eq .Kind "page") (ne .Layout "archives") (ne .Layout "search") (.Param "ShowCodeCopyButtons")) }} +<script> + document.querySelectorAll('pre > code').forEach((codeblock) => { + const container = codeblock.parentNode.parentNode; + + const copybutton = document.createElement('button'); + copybutton.classList.add('copy-code'); + copybutton.innerHTML = '{{- i18n "code_copy" | default "copy" }}'; + + function copyingDone() { + copybutton.innerHTML = '{{- i18n "code_copied" | default "copied!" }}'; + setTimeout(() => { + copybutton.innerHTML = '{{- i18n "code_copy" | default "copy" }}'; + }, 2000); + } + + copybutton.addEventListener('click', (cb) => { + if ('clipboard' in navigator) { + navigator.clipboard.writeText(codeblock.textContent); + copyingDone(); + return; + } + + const range = document.createRange(); + range.selectNodeContents(codeblock); + const selection = window.getSelection(); + selection.removeAllRanges(); + selection.addRange(range); + try { + document.execCommand('copy'); + copyingDone(); + } catch (e) { }; + selection.removeRange(range); + }); + + if (container.classList.contains("highlight")) { + container.appendChild(copybutton); + } else if (container.parentNode.firstChild == container) { + // td containing LineNos + } else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") { + // table containing LineNos and code + codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton); + } else { + // code blocks not having highlight as parent class + codeblock.parentNode.appendChild(copybutton); + } + }); +</script> +{{- end }}