summaryrefslogtreecommitdiff
path: root/layouts
diff options
context:
space:
mode:
Diffstat (limited to 'layouts')
-rw-r--r--layouts/_default/rss.xml82
-rw-r--r--layouts/partials/footer.html139
2 files changed, 221 insertions, 0 deletions
diff --git a/layouts/_default/rss.xml b/layouts/_default/rss.xml
new file mode 100644
index 0000000..df3173b
--- /dev/null
+++ b/layouts/_default/rss.xml
@@ -0,0 +1,82 @@
+{{- /* Same as https://github.com/adityatelange/hugo-PaperMod/blob/master/layouts/_default/rss.xml but without Hugo branding */}}
+{{- $authorEmail := "" }}
+{{- with site.Params.author }}
+ {{- if reflect.IsMap . }}
+ {{- with .email }}
+ {{- $authorEmail = . }}
+ {{- end }}
+ {{- end }}
+{{- else }}
+ {{- with site.Author.email }}
+ {{- $authorEmail = . }}
+ {{- warnf "The author key in site configuration is deprecated. Use params.author.email instead." }}
+ {{- end }}
+{{- end }}
+
+{{- /* Deprecate site.Author.name in favor of site.Params.author.name */}}
+{{- $authorName := "" }}
+{{- with site.Params.author }}
+ {{- if reflect.IsMap . }}
+ {{- with .name }}
+ {{- $authorName = . }}
+ {{- end }}
+ {{- else }}
+ {{- $authorName = . }}
+ {{- end }}
+{{- else }}
+ {{- with site.Author.name }}
+ {{- $authorName = . }}
+ {{- warnf "The author key in site configuration is deprecated. Use params.author.name instead." }}
+ {{- end }}
+{{- end }}
+
+{{- $pctx := . }}
+{{- if .IsHome }}{{ $pctx = site }}{{ end }}
+{{- $pages := slice }}
+{{- if or $.IsHome $.IsSection }}
+{{- $pages = $pctx.RegularPages }}
+{{- else }}
+{{- $pages = $pctx.Pages }}
+{{- end }}
+{{- $limit := site.Config.Services.RSS.Limit }}
+{{- if ge $limit 1 }}
+{{- $pages = $pages | first $limit }}
+{{- end }}
+{{- printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>" | safeHTML }}
+<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
+ <channel>
+ <title>{{ if eq .Title site.Title }}{{ site.Title }}{{ else }}{{ with .Title }}{{ . }} on {{ end }}{{ site.Title }}{{ end }}</title>
+ <link>{{ .Permalink }}</link>
+ <description>Recent content {{ if ne .Title site.Title }}{{ with .Title }}in {{ . }} {{ end }}{{ end }}on {{ site.Title }}</description>
+ {{- with site.Params.images }}
+ <image>
+ <title>{{ site.Title }}</title>
+ <url>{{ index . 0 | absURL }}</url>
+ <link>{{ index . 0 | absURL }}</link>
+ </image>
+ {{- end }}
+ <language>{{ site.Language.LanguageCode }}</language>{{ with $authorEmail }}
+ <managingEditor>{{.}}{{ with $authorName }} ({{ . }}){{ end }}</managingEditor>{{ end }}{{ with $authorEmail }}
+ <webMaster>{{ . }}{{ with $authorName }} ({{ . }}){{ end }}</webMaster>{{ end }}{{ with site.Copyright }}
+ <copyright>{{ . | markdownify | plainify | strings.TrimPrefix "© " }}</copyright>{{ end }}{{ if not .Date.IsZero }}
+ <lastBuildDate>{{ (index $pages.ByLastmod.Reverse 0).Lastmod.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }}
+ {{- with .OutputFormats.Get "RSS" }}
+ {{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }}
+ {{- end }}
+ {{- range $pages }}
+ {{- if and (ne .Layout `search`) (ne .Layout `archives`) }}
+ <item>
+ <title>{{ .Title }}</title>
+ <link>{{ .Permalink }}</link>
+ <pubDate>{{ .PublishDate.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
+ {{- with $authorEmail }}<author>{{ . }}{{ with $authorName }} ({{ . }}){{ end }}</author>{{ end }}
+ <guid>{{ .Permalink }}</guid>
+ <description>{{ with .Description | html }}{{ . }}{{ else }}{{ .Summary | html }}{{ end -}}</description>
+ {{- if and site.Params.ShowFullTextinRSS .Content }}
+ <content:encoded>{{ (printf "<![CDATA[%s]]>" .Content) | safeHTML }}</content:encoded>
+ {{- end }}
+ </item>
+ {{- end }}
+ {{- end }}
+ </channel>
+</rss>
diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html
new file mode 100644
index 0000000..7574cb2
--- /dev/null
+++ b/layouts/partials/footer.html
@@ -0,0 +1,139 @@
+{{- /* Same as https://github.com/adityatelange/hugo-PaperMod/blob/master/layouts/partials/footer.html but without Hugo and theme branding */}}
+{{- if not (.Param "hideFooter") }}
+<footer class="footer">
+ {{- if not site.Params.footer.hideCopyright }}
+ {{- if site.Copyright }}
+ <span>{{ site.Copyright | markdownify }}</span>
+ {{- else }}
+ <span>&copy; {{ now.Year }} <a href="{{ "" | absLangURL }}">{{ site.Title }}</a></span>
+ {{- end }}
+ <!-- {{- print " · "}} -->
+ {{- end }}
+
+ {{- with site.Params.footer.text }}
+ {{ . | markdownify }}
+ <!-- {{- print " · "}} -->
+ {{- end }}
+</footer>
+{{- end }}
+
+{{- 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 }}
+
+{{- partial "extend_footer.html" . }}
+
+<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 }}