1
0
Fork 0
mirror of https://git.sr.ht/~seirdy/seirdy.one synced 2024-12-26 18:32:10 +00:00
seirdy.one/layouts/partials/webmentions/webmentions.html
Rohan Kumar 19d5fe2b00
Split up + organize some large partials
Use partialCached to avoid any perf penalty.
TODO: limit the scope I pass to them.

I noticed a teeny tiny perf improvement after doing this, probably
because now some giant data structures only need to be generated once.
2023-11-25 12:53:36 -08:00

115 lines
6.4 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<h3 id="webmentions" tabindex="-1">Web&#173;mentions</h3>
<p>This site supports <a href="https://indieweb.org/Webmention">Webmentions</a>, a backlink-based alternative to traditional comment forms.</p>
<details><summary>Send a Webmention</summary>{{ partial "webmentions/webmention-form.html" . }}</details>
{{- /* Filter webmentions to just the ones for the current targets */ -}}
{{- $canonicalRelPermalink := .RelPermalink | replaceRE "^/~seirdy/" "/" -}}
{{- $target := printf "%s%s" .Site.Params.CanonicalBaseURL $canonicalRelPermalink -}}
{{- $targets := (slice $target) -}}
{{- /* commit c84c8d4 changed my URL schemes, so fetch menchies for the legacy scheme on old posts. */ -}}
{{- if lt .Date.Unix 1653616670 -}}
{{- $oldTarget := $target | replaceRE "/posts" "" | replaceRE "/$" ".html" -}}
{{ $targets = (slice $target $oldTarget) }}
{{- end -}}
{{- /* We can't just use a simple "where" function because we need to ignore URL anchors/query-params when making a comparison: https://discourse.gohugo.io/t/add-like-comparison-operator-to-the-where-function/42013/4 */ -}}
{{- $webmentions := slice -}}
{{- range partialCached "webmentions/all-webmentions.html" . -}}
{{- if in $targets .target -}}
{{ $webmentions = $webmentions | append . }}
{{- else -}}
{{- $u := urls.Parse .target -}}
{{- $trimmedTarget := printf `https://%s%s` $u.Hostname $u.Path -}}
{{- if in $targets $trimmedTarget -}}
{{ $webmentions = $webmentions | append . }}
{{- end -}}
{{- end -}}
{{- end -}}
{{- /* Render webmentions if they exist */ -}}
{{- $count := (len $webmentions) -}}
{{- if gt $count 0 -}}
<details>
<summary>Toggle {{ $count }} Webmentions</summary>
<p>Webmentions received for this post appear in the following list after I approve them. I sometimes send Webmentions to myself on behalf of linking sites that dont support them. I auto-replace broken links with <a href="https://web.archive.org/">Wayback Machine</a> snapshots, if they exist.</p>
<dl>
{{ range sort $webmentions "created_at" -}}
{{ $webmention := . -}}
{{- /* Boolean: should we should handle this webmention like a comment or a linkback? */ -}}
{{- $hasContent := and (isset $webmention "content") (gt (countrunes $webmention.content) 50) -}}
{{- $title := $webmention.title -}}
{{- /* Remove extraneous crap from Fediverse webmentions */ -}}
{{- if findRE "@Seirdy" $webmention.title -}}
{{- $title = $title | replaceRE `^@Seirdy@pleroma.envs.net(\n| )?` "" -}}
{{- /* Mastodon webmentions may include the author in the title followed by a colon; this is redundant. */ -}}
{{- if and (isset $webmention "author_name") (findRE `@` $webmention.source) (not (findRE "^https://bridg.gy" $webmention.source)) -}}
{{ $title = $title | replaceRE `^[^:]{0,20}: ?` "" | replaceRE `^"@Seirdy@pleroma.envs.net ?` `"` }}
{{- end -}}
{{- end -}}
{{- if and ($hasContent) (gt (countrunes $webmention.title) 128) -}}
{{- $title = $webmention.title | strings.TrimSuffix "…" | truncate 128 -}}
{{- end -}}
{{- $src := $webmention.source -}}
{{- with index (partialCached "webmentions/rewrites.html" .) $src -}}
{{- $src = . -}}
{{- end -}}
{{- if in (partialCached "webmentions/wbm-links.html" .) $src -}}
{{- $src = printf "https://web.archive.org/web/0/%s" $src -}}
{{- end -}}
{{ if (eq $webmention.type "like") -}}
<div itemprop="potentialAction" itemscope="" itemtype="https://schema.org/LikeAction" class="u-like h-cite">
{{- else -}}
<div itemprop="comment" itemscope="" itemtype="https://schema.org/Comment" class="u-comment h-cite">
{{- end -}}
<!--Will eventually add role="comment" once WAI-ARIA 1.3 starts seeing some adoption.-->
<dt>
<time
class="dt-published"
itemprop="{{ if (eq $webmention.type "like") -}}startTime{{ else }}datePublished{{ end }}"
datetime="{{ dateFormat "2006-01-02 15:04:05Z07:00" $webmention.created_at }}">
{{ dateFormat "2006-01-02" $webmention.created_at }}
</time>
</dt>
<dd>
{{ if (eq $webmention.type "like") -}}
{{ if $webmention.author_name -}}
<span itemprop="agent" itemscope="" itemtype="https://schema.org/Person" class="h-card p-author vcard"><span itemprop="name" class="p-name fn n">{{ $webmention.author_name }}</span></span>
{{ else if $webmention.title -}}
<span itemprop="name" class="p-name">{{ $webmention.title | replaceRE ` \n` `
` -}}</span>
{{ else -}}
{{ $webmention.source | strings.TrimPrefix "https://" | strings.TrimPrefix "www." | strings.TrimRight "/" | truncate 35 -}}
{{ end -}}
<a class="u-url" itemprop="url" href="{{ $src }}" rel="nofollow ugc">liked</a> this
{{- else -}}
{{- if findRE `^https://brid.gy/[^/]*/mastodon` $webmention.source -}}
{{- $canonicalSrc := replaceRE "https://brid.gy/.*mastodon/@Seirdy@pleroma.envs.net/([^/]*)(.*)?" `https://pleroma.envs.net/notice/$1` $src -}}
<a class="u-url" itemprop="url" href="{{ $canonicalSrc }}" rel="nofollow ugc">
{{- else -}}
<a class="u-url" itemprop="url" href="{{ $src }}" rel="nofollow ugc">
{{- end -}}
<span itemprop="name" class="p-name">
{{ if $webmention.title -}}
{{ $title | truncate 200 | replaceRE ` *\n` `
` | safeHTML -}}
{{ else -}}
{{- $webmention.source | strings.TrimPrefix "https://" | strings.TrimPrefix "www." | strings.TrimRight "/" | replaceRE ` *\n` "\n" | truncate 35 -}}
{{ end -}}
</span
></a>
{{- if $webmention.author_name }}
by <span itemprop="author" itemscope="" itemtype="https://schema.org/Person" class="h-card p-author vcard"><span itemprop="name" class="p-name fn n">{{ $webmention.author_name }}</span></span>
{{- end -}}
{{- if $hasContent -}}
{{- if findRE `^https://brid.gy/[^/]*/mastodon` $webmention.source -}}
<p role="doc-tip" itemprop="accessibilitySummary">This comment may have major formatting errors that could impact screen reader comprehension.</p>
{{- end -}}
<p><q itemprop="text" class="p-content">{{ $webmention.content | replaceRE `^@Seirdy(@pleroma.envs.net)? ?` "" | chomp}}</q></p>
{{- end -}}
{{- end }}
</dd>
</div>
{{- end -}}
</dl>
</details>
{{ else -}}
<p>This post does not have any approved Webmentions yet.</p>
{{- end }}
<p>Feel free to contact me directly with feedback; <a href="{{ .Site.BaseURL }}about/#location-seirdy-online">heres my contact info</a></p>