Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions layouts/partials/breadcrumb.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{{- $topnavKey := .Param "topnav" | default "topnav" -}}
{{- $topnav := index hugo.Data $topnavKey | default hugo.Data.topnav -}}
{{- $sectionTitle := "" -}}
{{- $sectionURL := "" -}}
{{- range $entry := $topnav.topnav -}}
{{- range $item := $entry.items -}}
{{- $sectionSidebar := printf "%s_sidebar" ($item.section | default "") -}}
{{- if or (and $item.url (in $.RelPermalink $item.url)) (eq ($.Param "sidebar") $sectionSidebar) -}}
{{- $sectionTitle = $item.title -}}
{{- $sectionURL = $item.url -}}
{{- end -}}
{{- end -}}
{{- end -}}
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{{- if $sectionTitle -}}
{
"@type": "ListItem",
"position": 1,
"name": {{ $sectionTitle | jsonify }},
"item": {{ $sectionURL | absURL | jsonify }}
},
{{- end }}
{
"@type": "ListItem",
"position": {{ if $sectionTitle }}2{{ else }}1{{ end }},
"name": {{ .Title | jsonify }},
"item": {{ .Permalink | jsonify }}
}
]
}
</script>
50 changes: 50 additions & 0 deletions layouts/partials/footer.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
<footer class="background-dark">
<div class="container">
{{ if not .IsHome }}
<div class="row">
<div class="col-12 col-sm-10 col-md-6 col-lg-5 col-xl-4 bg-white rounded-4 p-4 mx-auto mb-5">
<h2 class="text-center fs-5 fw-medium mt-1 mb-3 text-dark" style="font-family: 'Fira Sans', Roboto, sans-serif;">The preCICE newsletter</h2>
{{ partial "newsletter.html" . }}
</div>
</div>
{{ end }}

<div class="row text-center">
<div class="col-md-4">
<nav aria-label="Footer left">
<ul class="list-unstyled">
<li><a href="{{ "fundamentals-literature-guide.html" | relURL }}">Cite preCICE</a></li>
<li><a href="{{ "community-contribute-to-precice.html" | relURL }}">Contribute</a></li>
<li><a href="{{ "community-support-precice.html" | relURL }}">Get support</a></li>
<li><a href="{{ "community-training.html" | relURL }}">Get training</a></li>
</ul>
</nav>
</div>

<div class="col-md-4">
<nav aria-label="Footer right">
<ul class="list-unstyled">
<li><a class="no-icon" href="https://precice.discourse.group">Forum on Discourse</a></li>
<li><a class="no-icon" href="https://github.com/precice">preCICE on GitHub</a></li>
<li><a href="{{ "fundamentals-license.html" | relURL }}">License</a></li>
<li><a href="{{ "about.html" | relURL }}">Impressum / Legal</a></li>
</ul>
</nav>
</div>

<div class="col-md-4">
<p>
<a class="no-icon" rel="license" href="https://creativecommons.org/licenses/by/4.0/">
<img alt="This work is licensed under a Creative Commons Attribution 4.0 International License." src="{{ "/images/licensebutton-by-40_88x31.png" | relURL }}">
</a>
</p>
<p>
Page last updated: {{ .Lastmod.Format "Jan 2, 2006" }}<br>
Site last updated: {{ now.Format "Jan 2, 2006" }}
</p>
<p><i class="fas fa-shield-halved" aria-hidden="true"></i> This website does not use cookies</p>
</div>
</div>
</div>
<script src="{{ "js/copy-code.js" | relURL }}"></script>
</footer>
89 changes: 89 additions & 0 deletions layouts/partials/head.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
{{- $siteTitle := site.Title -}}
{{- with site.Params.site_title }}{{ $siteTitle = . }}{{ end -}}
{{- $title := $siteTitle -}}
{{- if and .Title (not .IsHome) }}{{ $title = printf "%s | %s" .Title $siteTitle }}{{ end -}}
{{- $description := "" -}}
{{- with .Params.summary }}{{ $description = plainify . }}{{ else }}{{ with site.Params.description }}{{ $description = plainify . }}{{ end }}{{ end -}}
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
{{ with $description }}<meta name="description" content="{{ . }}">{{ end }}
{{ with .Params.tags }}<meta name="keywords" content="{{ delimit . ", " }}">{{ end }}
<meta name="theme-color" content="#0A76BB">
<title>{{ $title }}</title>
<link rel="canonical" href="{{ .Permalink }}">
<link rel="shortcut icon" href="{{ "/images/favicon.ico" | relURL }}">
<link rel="icon" sizes="192x192" href="{{ "/images/icon.png" | relURL }}">
<link rel="apple-touch-icon" sizes="310x310" href="{{ "/images/icon-310x310.png" | relURL }}">
<meta property="og:title" content="{{ .Title }}">
<meta property="og:site_name" content="preCICE.org">
<meta property="og:type" content="website">
<meta property="og:url" content="{{ .Permalink }}">
<meta property="og:image" content="{{ "/images/icon-310x310.png" | absURL }}">
{{ with $description }}<meta property="og:description" content="{{ . }}">{{ end }}
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="{{ .Title }}">
{{ with $description }}<meta name="twitter:description" content="{{ . }}">{{ end }}
<meta name="twitter:image" content="{{ "/images/icon-310x310.png" | absURL }}">
<link rel="alternate" type="application/rss+xml" title="{{ site.Title }}" href="{{ "feed.xml" | absURL }}">
<link rel="stylesheet" href="{{ "css/fontawesome.6.7.2.all.min.css" | relURL }}">
<link rel="stylesheet" href="{{ "css/bootstrap.min.css" | relURL }}">
<link rel="stylesheet" href="{{ "css/syntax.css" | relURL }}">
<link rel="stylesheet" href="{{ "css/customstyles.css" | relURL }}">
<link rel="stylesheet" href="{{ "css/customstyles-precice.css" | relURL }}">
<link rel="stylesheet" href="{{ "css/boxshadowproperties.css" | relURL }}">
<link rel="stylesheet" href="{{ "css/bookcover.css" | relURL }}">
<link rel="stylesheet" href="{{ "css/theme-precice.css" | relURL }}">
{{ if .IsHome }}<link rel="stylesheet" href="{{ "css/landing-page.css" | relURL }}">{{ end }}
<link rel="stylesheet" href="{{ "css/katex.min.css" | relURL }}">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/instantsearch.js@2.6.0/dist/instantsearch.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/instantsearch.js@2.6.0/dist/instantsearch-theme-algolia.min.css">
{{ block "head_extra" . }}{{ end }}
<script src="https://cdn.jsdelivr.net/npm/anchor-js@4.2.0/anchor.min.js" integrity="sha256-m1eTvwEHwmsw4+XKF7BshClVJEPwTVycveNl0CS0Mkk=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/instantsearch.js@2.6.0/dist/instantsearch.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/moment@2.20.1/moment.min.js"></script>
<script defer src="{{ "js/katex.min.js" | relURL }}"></script>
<script defer src="{{ "js/auto-render.min.js" | relURL }}"></script>
{{ with site.Params.mermaid.src }}<script type="module">import mermaid from "{{ . }}"; mermaid.initialize({ startOnLoad: true });</script>{{ end }}
<script>
document.addEventListener("DOMContentLoaded", function() {
renderMathInElement(document.body, {
delimiters: [
{left: "$$", right: "$$", display: true},
{left: "$", right: "$", display: false},
{left: "\\(", right: "\\)", display: false},
{left: "\\[", right: "\\]", display: true}
],
throwOnError: false
});
});
</script>

<!-- QR code for printed pages -->
<script defer src="https://cdn.jsdelivr.net/npm/qrcode-generator@1.4.4/qrcode.min.js"></script>
<script>
document.addEventListener("DOMContentLoaded", function() {
if (typeof qrcode === "undefined") return;
var qrDiv = document.createElement("div");
qrDiv.id = "print-qr-code";
var qr = qrcode(0, "M");
qr.addData("{{ .Permalink }}");
qr.make();
qrDiv.innerHTML = qr.createImgTag(3, 0);
document.body.appendChild(qrDiv);
});
</script>
<style>
#print-qr-code { display: none; }
@media print {
#print-qr-code {
display: block;
position: absolute;
top: 0;
right: 0;
}
}
</style>

<!-- Plausible Analytics -->
<script async defer data-domain="precice.org" src="https://plausible.io/js/plausible.js"></script>

50 changes: 50 additions & 0 deletions layouts/partials/head_print.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
{{- $siteTitle := site.Title -}}
{{- with site.Params.site_title }}{{ $siteTitle = . }}{{ end -}}
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
{{ with .Params.summary }}<meta name="description" content="{{ plainify . }}">{{ end }}
<title>{{ with .Title }}{{ . }} | {{ end }}{{ $siteTitle }}</title>
<link rel="shortcut icon" href="{{ "/images/favicon.ico" | relURL }}">
<link rel="stylesheet" href="{{ "css/syntax.css" | relURL }}">
<link rel="stylesheet" href="{{ "css/fontawesome.6.7.2.all.min.css" | relURL }}">
<link rel="stylesheet" href="{{ "css/bootstrap.min.css" | relURL }}">
<link rel="stylesheet" href="{{ "css/customstyles.css" | relURL }}">
<link rel="stylesheet" href="{{ "css/customstyles-precice.css" | relURL }}">
<link rel="stylesheet" href="{{ "css/boxshadowproperties.css" | relURL }}">
<link rel="stylesheet" href="{{ "css/bookcover.css" | relURL }}">
<link rel="stylesheet" href="{{ "css/theme-precice.css" | relURL }}">
<link rel="stylesheet" href="{{ "css/printstyles.css" | relURL }}">
<link rel="stylesheet" href="{{ "css/katex.min.css" | relURL }}">
<script src="{{ "js/prince.es6.polyfill.min.js" | relURL }}"></script>
<script src="{{ "js/prince.mathjax.compat.js" | relURL }}"></script>
<script src="{{ "js/katex.min.js" | relURL }}"></script>
<script defer src="{{ "js/auto-render.min.js" | relURL }}"></script>
<script>
document.addEventListener("DOMContentLoaded", function() {
renderMathInElement(document.body, {
delimiters: [
{left: "$$", right: "$$", display: true},
{left: "$", right: "$", display: false},
{left: "\\(", right: "\\)", display: false},
{left: "\\[", right: "\\]", display: true}
],
throwOnError: false
});
});
</script>

<!-- scripts for Prince functionality -->
<script>
if (typeof Prince !== "undefined") {
Prince.addScriptFunc("datestamp", function() {
return "{{ now.Format "January 2, 2006" }}";
});
Prince.addScriptFunc("guideName", function() {
return "{{ site.Params.print_title | default "preCICE" }} Documentation";
});
Prince.addScriptFunc("versionNumber", function() {
return "{{ site.Params.precice_version }}";
});
}
</script>

45 changes: 45 additions & 0 deletions layouts/partials/scroll_to_top.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<button id="scroll-to-top" class="scroll-to-top" aria-label="Scroll to top">
<i class="fa fa-chevron-up"></i>
</button>

<style>
.scroll-to-top {
position: fixed;
bottom: 30px;
right: 30px;
width: 45px;
height: 45px;
border-radius: 50%;
background-color: #0066cc;
color: white;
border: none;
cursor: pointer;
opacity: 0;
visibility: hidden;
transition: opacity 0.3s ease, visibility 0.3s ease, background-color 0.3s ease;
z-index: 1000;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
}
.scroll-to-top:hover { background-color: #0052a3; }
.scroll-to-top.visible { opacity: 1; visibility: visible; }
@media (max-width: 768px) {
.scroll-to-top { bottom: 20px; right: 20px; width: 40px; height: 40px; }
}
@media (max-width: 480px) {
.scroll-to-top { bottom: 15px; right: 15px; width: 35px; height: 35px; font-size: 14px; }
}
</style>

<script>
(function() {
var scrollBtn = document.getElementById("scroll-to-top");
if (!scrollBtn) return;
var scrollThreshold = 300;
window.addEventListener("scroll", function() {
scrollBtn.classList.toggle("visible", window.pageYOffset > scrollThreshold);
});
scrollBtn.addEventListener("click", function() {
window.scrollTo({ top: 0, behavior: "smooth" });
});
})();
</script>
5 changes: 5 additions & 0 deletions layouts/partials/toc.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{{- $toc := printf "%s" .TableOfContents -}}
{{- if and (ne (.Param "toc") false) (in $toc "<li") -}}
{{- $toc = replace $toc `id="TableOfContents"` `id="toc" aria-label="Table of contents" class="mb-4"` -}}
{{- $toc | safeHTML -}}
{{- end -}}
77 changes: 77 additions & 0 deletions layouts/partials/topnav.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
{{- $page := . -}}
{{- $topnavKey := .Param "topnav" | default "topnav" -}}
{{- $topnav := index hugo.Data $topnavKey | default hugo.Data.topnav -}}
{{- $topnavDropdowns := $topnav.topnav_dropdowns -}}
<nav class="navbar navbar-expand-xl fixed-top" data-bs-theme="light" aria-label="Main">
<div class="container topnavlinks">
<div class="navbar-header navbar-header-group">
<a class="navbar-brand no-icon" href="{{ site.Home.RelPermalink }}">
<span class="navbar-brand-icon">
<img class="navbar-brand-text" src="{{ "/images/preCICE_text_28px.svg" | relURL }}" alt="preCICE">
</span>
</a>
<button class="navbar-toggler collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#bs-example-navbar-collapse-1" aria-controls="bs-example-navbar-collapse-1" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav ms-auto">
{{ range $entry := $topnav.topnav }}
{{ range $item := $entry.items }}
{{ $sectionSidebar := printf "%s_sidebar" ($item.section | default "") }}
{{ $isActive := false }}
{{ with $item.url }}
{{ $isActive = partial "sidebar_page_matches_url.html" (dict "page" $page "url" .) }}
{{ end }}
{{ if and (not $isActive) $item.section }}
{{ $isActive = eq ($page.Param "sidebar") $sectionSidebar }}
{{ end }}
<li class="nav-item{{ if $isActive }} active{{ end }}">
{{ if $item.external_url }}
<a class="nav-link" href="{{ $item.external_url }}" target="_blank" rel="noopener">{{ $item.title }}</a>
{{ else }}
<a class="nav-link" href="{{ $item.url | relURL }}">{{ $item.title }}</a>
{{ end }}
</li>
{{ end }}
{{ end }}

{{ with $topnavDropdowns }}
{{ range $entry := . }}
{{ range $folder := $entry.folders }}
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">{{ $folder.title }}</a>
<ul class="dropdown-menu">
{{ range $folderitem := $folder.folderitems }}
{{ $isActive := false }}
{{ with $folderitem.url }}{{ $isActive = partial "sidebar_page_matches_url.html" (dict "page" $page "url" .) }}{{ end }}
<li{{ if $isActive }} class="dropdownActive"{{ end }}>
{{ if $folderitem.external_url }}
<a class="dropdown-item" href="{{ $folderitem.external_url }}" target="_blank" rel="noopener">{{ $folderitem.title }}</a>
{{ else }}
<a class="dropdown-item" href="{{ $folderitem.url | relURL }}">{{ $folderitem.title }}</a>
{{ end }}
</li>
{{ end }}
</ul>
</li>
{{ end }}
{{ end }}
{{ end }}

<li class="navbar-search-li">
<div id="search-demo-container">
<div id="search-input"></div>
<div id="search-results"></div>
{{ partial "algolia.html" . }}
</div>
</li>
<li><a class="no-icon nav-external" href="https://precice.discourse.group" target="_blank" rel="noopener noreferrer" aria-label="Join the discourse community"><i class="fab fa-discourse"></i></a></li>
<li><a class="no-icon nav-external" href="https://github.com/precice" target="_blank" rel="noopener noreferrer" aria-label="Star precice/precice on GitHub"><i class="fab fa-github"></i></a></li>
<li><a class="no-icon nav-external" href="https://www.linkedin.com/company/precice" target="_blank" rel="noopener noreferrer" aria-label="Follow us on LinkedIn"><i class="fab fa-linkedin"></i></a></li>
<li><a rel="me noopener noreferrer" class="no-icon nav-external" href="https://fosstodon.org/@precice" target="_blank" aria-label="Follow us on Mastodon"><i class="fab fa-mastodon"></i></a></li>
<li><a class="no-icon nav-external" href="https://www.youtube.com/c/preCICECoupling/" target="_blank" rel="noopener noreferrer" aria-label="Subscribe on Youtube"><i class="fab fa-youtube"></i></a></li>
</ul>
</div>
</div>
</nav>
Loading