@geekity/cms 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +207 -28
- package/admin/layouts/shell.njk +13 -6
- package/admin/pages/documents/editor.njk +13 -1
- package/admin/pages/error.njk +11 -0
- package/admin/static/admin.css +69 -15
- package/dist/admin/comments.d.ts.map +1 -1
- package/dist/admin/comments.js +2 -1
- package/dist/admin/comments.js.map +1 -1
- package/dist/admin/documents.d.ts +3 -0
- package/dist/admin/documents.d.ts.map +1 -1
- package/dist/admin/documents.js +109 -42
- package/dist/admin/documents.js.map +1 -1
- package/dist/admin/federation.d.ts.map +1 -1
- package/dist/admin/federation.js +3 -2
- package/dist/admin/federation.js.map +1 -1
- package/dist/admin/preview.js +3 -0
- package/dist/admin/preview.js.map +1 -1
- package/dist/admin/routes.d.ts.map +1 -1
- package/dist/admin/routes.js +7 -3
- package/dist/admin/routes.js.map +1 -1
- package/dist/admin/templates.d.ts +1 -0
- package/dist/admin/templates.d.ts.map +1 -1
- package/dist/admin/templates.js +1 -0
- package/dist/admin/templates.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +128 -3
- package/dist/cli.js.map +1 -1
- package/dist/comments/submission.d.ts.map +1 -1
- package/dist/comments/submission.js +2 -1
- package/dist/comments/submission.js.map +1 -1
- package/dist/config.d.ts +23 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +3 -0
- package/dist/config.js.map +1 -1
- package/dist/content/document.d.ts +26 -7
- package/dist/content/document.d.ts.map +1 -1
- package/dist/content/document.js +2 -0
- package/dist/content/document.js.map +1 -1
- package/dist/content/index.d.ts +2 -0
- package/dist/content/index.d.ts.map +1 -1
- package/dist/content/index.js +1 -0
- package/dist/content/index.js.map +1 -1
- package/dist/content/parser.d.ts.map +1 -1
- package/dist/content/parser.js +32 -1
- package/dist/content/parser.js.map +1 -1
- package/dist/content/post-type.d.ts +48 -0
- package/dist/content/post-type.d.ts.map +1 -0
- package/dist/content/post-type.js +79 -0
- package/dist/content/post-type.js.map +1 -0
- package/dist/content/store.d.ts +13 -2
- package/dist/content/store.d.ts.map +1 -1
- package/dist/content/store.js +62 -3
- package/dist/content/store.js.map +1 -1
- package/dist/content/sync.d.ts.map +1 -1
- package/dist/content/sync.js +6 -0
- package/dist/content/sync.js.map +1 -1
- package/dist/content/writer.d.ts +1 -1
- package/dist/content/writer.d.ts.map +1 -1
- package/dist/content/writer.js +13 -2
- package/dist/content/writer.js.map +1 -1
- package/dist/env.d.ts +12 -0
- package/dist/env.d.ts.map +1 -1
- package/dist/federation/article.d.ts +27 -9
- package/dist/federation/article.d.ts.map +1 -1
- package/dist/federation/article.js +110 -18
- package/dist/federation/article.js.map +1 -1
- package/dist/federation/federation.d.ts.map +1 -1
- package/dist/federation/federation.js +24 -6
- package/dist/federation/federation.js.map +1 -1
- package/dist/federation/inbox.d.ts +17 -3
- package/dist/federation/inbox.d.ts.map +1 -1
- package/dist/federation/inbox.js +72 -6
- package/dist/federation/inbox.js.map +1 -1
- package/dist/federation/index.d.ts +1 -1
- package/dist/federation/index.d.ts.map +1 -1
- package/dist/federation/index.js +1 -1
- package/dist/federation/index.js.map +1 -1
- package/dist/federation/mount.d.ts.map +1 -1
- package/dist/federation/mount.js +11 -6
- package/dist/federation/mount.js.map +1 -1
- package/dist/federation/paths.d.ts +5 -0
- package/dist/federation/paths.d.ts.map +1 -1
- package/dist/federation/paths.js +5 -0
- package/dist/federation/paths.js.map +1 -1
- package/dist/federation/quotes.d.ts +56 -0
- package/dist/federation/quotes.d.ts.map +1 -0
- package/dist/federation/quotes.js +85 -0
- package/dist/federation/quotes.js.map +1 -0
- package/dist/federation/wordpress.d.ts.map +1 -1
- package/dist/federation/wordpress.js +5 -4
- package/dist/federation/wordpress.js.map +1 -1
- package/dist/index.d.ts +12 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +46 -4
- package/dist/index.js.map +1 -1
- package/dist/maintenance.d.ts +47 -0
- package/dist/maintenance.d.ts.map +1 -0
- package/dist/maintenance.js +78 -0
- package/dist/maintenance.js.map +1 -0
- package/dist/notifications/comments.d.ts.map +1 -1
- package/dist/notifications/comments.js +2 -1
- package/dist/notifications/comments.js.map +1 -1
- package/dist/notifications/digest.d.ts.map +1 -1
- package/dist/notifications/digest.js +2 -1
- package/dist/notifications/digest.js.map +1 -1
- package/dist/web/archive.d.ts +1 -1
- package/dist/web/archive.d.ts.map +1 -1
- package/dist/web/archive.js +2 -1
- package/dist/web/archive.js.map +1 -1
- package/dist/web/context.d.ts +22 -2
- package/dist/web/context.d.ts.map +1 -1
- package/dist/web/context.js +5 -0
- package/dist/web/context.js.map +1 -1
- package/dist/web/conversation.d.ts.map +1 -1
- package/dist/web/conversation.js +3 -33
- package/dist/web/conversation.js.map +1 -1
- package/dist/web/documents.d.ts +9 -0
- package/dist/web/documents.d.ts.map +1 -1
- package/dist/web/documents.js +31 -0
- package/dist/web/documents.js.map +1 -1
- package/dist/web/errors.d.ts +19 -0
- package/dist/web/errors.d.ts.map +1 -0
- package/dist/web/errors.js +93 -0
- package/dist/web/errors.js.map +1 -0
- package/dist/web/feed-atom.d.ts.map +1 -1
- package/dist/web/feed-atom.js +14 -2
- package/dist/web/feed-atom.js.map +1 -1
- package/dist/web/feed-item.d.ts +21 -7
- package/dist/web/feed-item.d.ts.map +1 -1
- package/dist/web/feed-item.js +13 -6
- package/dist/web/feed-item.js.map +1 -1
- package/dist/web/feed-json.d.ts +13 -2
- package/dist/web/feed-json.d.ts.map +1 -1
- package/dist/web/feed-json.js +3 -1
- package/dist/web/feed-json.js.map +1 -1
- package/dist/web/feed-rss.d.ts.map +1 -1
- package/dist/web/feed-rss.js +2 -2
- package/dist/web/feed-rss.js.map +1 -1
- package/dist/web/feed-xml.d.ts +2 -0
- package/dist/web/feed-xml.d.ts.map +1 -1
- package/dist/web/feed-xml.js +2 -0
- package/dist/web/feed-xml.js.map +1 -1
- package/dist/web/feeds.d.ts +1 -1
- package/dist/web/feeds.d.ts.map +1 -1
- package/dist/web/feeds.js.map +1 -1
- package/dist/web/health.d.ts +6 -0
- package/dist/web/health.d.ts.map +1 -1
- package/dist/web/health.js +5 -1
- package/dist/web/health.js.map +1 -1
- package/dist/web/index.d.ts +5 -1
- package/dist/web/index.d.ts.map +1 -1
- package/dist/web/index.js +3 -0
- package/dist/web/index.js.map +1 -1
- package/dist/web/maintenance.d.ts +18 -0
- package/dist/web/maintenance.d.ts.map +1 -0
- package/dist/web/maintenance.js +108 -0
- package/dist/web/maintenance.js.map +1 -0
- package/dist/web/redirects.d.ts +75 -0
- package/dist/web/redirects.d.ts.map +1 -0
- package/dist/web/redirects.js +200 -0
- package/dist/web/redirects.js.map +1 -0
- package/dist/web/render.d.ts +18 -0
- package/dist/web/render.d.ts.map +1 -1
- package/dist/web/render.js +38 -1
- package/dist/web/render.js.map +1 -1
- package/dist/web/routes.d.ts.map +1 -1
- package/dist/web/routes.js +55 -1
- package/dist/web/routes.js.map +1 -1
- package/dist/webmention/index.d.ts +6 -0
- package/dist/webmention/index.d.ts.map +1 -1
- package/dist/webmention/index.js +3 -0
- package/dist/webmention/index.js.map +1 -1
- package/dist/webmention/links.d.ts +5 -0
- package/dist/webmention/links.d.ts.map +1 -1
- package/dist/webmention/links.js +14 -7
- package/dist/webmention/links.js.map +1 -1
- package/dist/webmention/microformats.d.ts +21 -0
- package/dist/webmention/microformats.d.ts.map +1 -1
- package/dist/webmention/microformats.js +35 -5
- package/dist/webmention/microformats.js.map +1 -1
- package/dist/webmention/public-address.d.ts +30 -0
- package/dist/webmention/public-address.d.ts.map +1 -0
- package/dist/webmention/public-address.js +71 -0
- package/dist/webmention/public-address.js.map +1 -0
- package/dist/webmention/receive.d.ts.map +1 -1
- package/dist/webmention/receive.js +1 -23
- package/dist/webmention/receive.js.map +1 -1
- package/dist/webmention/reply-context.d.ts +67 -0
- package/dist/webmention/reply-context.d.ts.map +1 -0
- package/dist/webmention/reply-context.js +189 -0
- package/dist/webmention/reply-context.js.map +1 -0
- package/dist/webmention/reply-contexts.d.ts +50 -0
- package/dist/webmention/reply-contexts.d.ts.map +1 -0
- package/dist/webmention/reply-contexts.js +163 -0
- package/dist/webmention/reply-contexts.js.map +1 -0
- package/dist/webmention/service.d.ts.map +1 -1
- package/dist/webmention/service.js +9 -2
- package/dist/webmention/service.js.map +1 -1
- package/package.json +10 -10
- package/themes/default/README.md +20 -0
- package/themes/default/layouts/500.njk +8 -0
- package/themes/default/layouts/503.njk +8 -0
- package/themes/default/layouts/base.njk +5 -3
- package/themes/default/layouts/post.njk +8 -0
- package/themes/default/layouts/search.njk +4 -2
- package/themes/default/partials/post-list.njk +17 -5
- package/themes/default/partials/reply-context.njk +29 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/webmention/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/webmention/service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@geekity/cms",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "A file-first CMS: Markdown content, a SQLite index, a Hono server that is both the editor and the public site.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -28,33 +28,33 @@
|
|
|
28
28
|
"LICENSE"
|
|
29
29
|
],
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@fedify/fedify": "^2.3.
|
|
32
|
-
"@fedify/hono": "^2.3.
|
|
33
|
-
"@fedify/vocab": "^2.3.
|
|
31
|
+
"@fedify/fedify": "^2.3.7",
|
|
32
|
+
"@fedify/hono": "^2.3.7",
|
|
33
|
+
"@fedify/vocab": "^2.3.7",
|
|
34
34
|
"@hono/node-server": "^2.1.1",
|
|
35
35
|
"@js-temporal/polyfill": "^0.5.1",
|
|
36
36
|
"chokidar": "^5.0.0",
|
|
37
37
|
"gray-matter": "^4.0.3",
|
|
38
|
-
"hono": "^4.13.
|
|
38
|
+
"hono": "^4.13.8",
|
|
39
39
|
"js-yaml": "^5.4.2",
|
|
40
40
|
"markdown-it": "^15.0.2",
|
|
41
41
|
"markdown-it-footnote": "^4.0.0",
|
|
42
|
-
"nodemailer": "^10.0.
|
|
42
|
+
"nodemailer": "^10.0.10",
|
|
43
43
|
"nunjucks": "^3.2.4",
|
|
44
44
|
"sharp": "^0.35.4"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@11ty/eleventy": "^3.1.6",
|
|
48
48
|
"@codemirror/lang-markdown": "^6.5.2",
|
|
49
|
-
"@fedify/cli": "2.3.
|
|
49
|
+
"@fedify/cli": "2.3.7",
|
|
50
50
|
"@types/markdown-it-footnote": "^3.0.4",
|
|
51
|
-
"@types/node": "^26.
|
|
52
|
-
"@types/nodemailer": "^8.0.
|
|
51
|
+
"@types/node": "^26.6.2",
|
|
52
|
+
"@types/nodemailer": "^8.0.2",
|
|
53
53
|
"@types/nunjucks": "^3.2.6",
|
|
54
54
|
"codemirror": "^6.0.2",
|
|
55
55
|
"esbuild": "^0.28.2",
|
|
56
56
|
"highlight.js": "11.12.0",
|
|
57
|
-
"tsx": "^4.23.
|
|
57
|
+
"tsx": "^4.23.15",
|
|
58
58
|
"typescript": "^7.0.2"
|
|
59
59
|
},
|
|
60
60
|
"scripts": {
|
package/themes/default/README.md
CHANGED
|
@@ -17,6 +17,8 @@ themes/default/
|
|
|
17
17
|
author.njk one person's archive, paginated
|
|
18
18
|
search.njk the search form and what it found, paginated
|
|
19
19
|
404.njk nothing at this URL
|
|
20
|
+
500.njk the request failed on the server
|
|
21
|
+
503.njk the site is in maintenance mode
|
|
20
22
|
partials/
|
|
21
23
|
post-list.njk the h-feed a listing is made of
|
|
22
24
|
pagination.njk previous/next pager
|
|
@@ -373,6 +375,24 @@ alone.
|
|
|
373
375
|
|
|
374
376
|
`layouts/404.njk` says `Content not found.` and links home and to the search.
|
|
375
377
|
|
|
378
|
+
`layouts/500.njk` is the page a request gets when the server fails while
|
|
379
|
+
answering it (TASK-129). It says `Something went wrong.` in an
|
|
380
|
+
`article.server-error` and links home. The context is the 404's: `title`,
|
|
381
|
+
`url` and `page.url`. The response is a 500 with `Cache-Control: no-store`, and
|
|
382
|
+
the error itself goes to the server's log, never into the page. If this template
|
|
383
|
+
fails too, the CMS answers with a plain HTML page of its own instead, so a theme
|
|
384
|
+
cannot turn one failure into a crash. A request for the `.md` or `.json`
|
|
385
|
+
representation gets a 500 in that format and never reaches this template.
|
|
386
|
+
|
|
387
|
+
`layouts/503.njk` is the page a request gets while the site is in maintenance
|
|
388
|
+
mode (TASK-130). It says `Down for maintenance.` in an `article.maintenance`.
|
|
389
|
+
The context is the 404's, plus `until` (an ISO 8601 time) and `untilText` (the
|
|
390
|
+
same time as an HTTP date) when the operator named when the site should be
|
|
391
|
+
back. The response is a 503 with `Retry-After` and `Cache-Control: no-store`.
|
|
392
|
+
The theme's files under `/theme/` are still served, so the page can use the
|
|
393
|
+
stylesheet. If this template fails, the CMS answers with a plain HTML page of
|
|
394
|
+
its own.
|
|
395
|
+
|
|
376
396
|
### Search
|
|
377
397
|
|
|
378
398
|
`layouts/search.njk` is the page at `/search/` (TASK-22). It prints
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{% extends "layouts/base.njk" %}
|
|
2
|
+
|
|
3
|
+
{% block content %}
|
|
4
|
+
<article class="server-error">
|
|
5
|
+
<h1 class="page-title">Something went wrong.</h1>
|
|
6
|
+
<p>This page could not be shown because of a problem on the server. Try again in a moment, or go <a href="{{ "/" | url }}">home</a>.</p>
|
|
7
|
+
</article>
|
|
8
|
+
{% endblock %}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{% extends "layouts/base.njk" %}
|
|
2
|
+
|
|
3
|
+
{% block content %}
|
|
4
|
+
<article class="maintenance">
|
|
5
|
+
<h1 class="page-title">Down for maintenance.</h1>
|
|
6
|
+
<p>This site is down for maintenance and will be back shortly.{% if until %} It should be back by <time datetime="{{ until }}">{{ untilText }}</time>.{% endif %} Please try again then.</p>
|
|
7
|
+
</article>
|
|
8
|
+
{% endblock %}
|
|
@@ -39,7 +39,9 @@
|
|
|
39
39
|
`pagination`, and the posts page is a listing carrying a page's front
|
|
40
40
|
matter, so it is a website like every other listing. -#}
|
|
41
41
|
{% set metaDescription = description or summary or site.tagline %}
|
|
42
|
-
{
|
|
42
|
+
{#- A note has no title, and is named here by its first words. -#}
|
|
43
|
+
{% set pageTitle = title or label %}
|
|
44
|
+
{% set metaTitle = pageTitle or site.title %}
|
|
43
45
|
{% set metaUrl = (page.url or "/") | absoluteUrl %}
|
|
44
46
|
{% set metaImage = image or site.avatar %}
|
|
45
47
|
{% set isEntry = (type == "post" or type == "page") and not pagination %}
|
|
@@ -48,7 +50,7 @@
|
|
|
48
50
|
<head>
|
|
49
51
|
<meta charset="utf-8">
|
|
50
52
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
51
|
-
<title>{% block title %}{% if
|
|
53
|
+
<title>{% block title %}{% if pageTitle %}{{ pageTitle }} · {% endif %}{{ site.title }}{% endblock %}</title>
|
|
52
54
|
{% if metaDescription %}
|
|
53
55
|
<meta name="description" content="{{ metaDescription }}">
|
|
54
56
|
{% endif %}
|
|
@@ -58,7 +60,7 @@
|
|
|
58
60
|
{{ feeds.feedLinks("/", site.title) }}
|
|
59
61
|
{{ feeds.commentsFeedLink("/comments/feed/", site.title + " comments") }}
|
|
60
62
|
{% if commentsFeed %}
|
|
61
|
-
{{ feeds.commentsFeedLink(commentsFeed, "Comments on: " +
|
|
63
|
+
{{ feeds.commentsFeedLink(commentsFeed, "Comments on: " + pageTitle) }}
|
|
62
64
|
{% endif %}
|
|
63
65
|
{% if activityStreams %}
|
|
64
66
|
<link rel="alternate" type="application/activity+json" href="{{ activityStreams }}">
|
|
@@ -23,9 +23,17 @@
|
|
|
23
23
|
{% block content %}
|
|
24
24
|
{% set entryUrl = page.url or url %}
|
|
25
25
|
<article class="blog-post h-entry">
|
|
26
|
+
{#- A post with no name of its own (a note, or a reply without a title) is
|
|
27
|
+
its words, so it opens on them rather than on an empty heading. -#}
|
|
28
|
+
{% if named %}
|
|
26
29
|
<header>
|
|
27
30
|
<h1 class="p-name">{{ title }}</h1>
|
|
28
31
|
</header>
|
|
32
|
+
{% endif %}
|
|
33
|
+
|
|
34
|
+
{#- A reply cites the post it answers, whose URL is also the link its
|
|
35
|
+
webmention points a receiver at. -#}
|
|
36
|
+
{% include "partials/reply-context.njk" %}
|
|
29
37
|
|
|
30
38
|
<section class="e-content">
|
|
31
39
|
{{ content | safe }}
|
|
@@ -37,8 +37,10 @@
|
|
|
37
37
|
<div class="search-results">
|
|
38
38
|
{% for post in posts %}
|
|
39
39
|
<article class="search-result h-entry">
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
{#- A post with no name of its own has none to claim, so its first words
|
|
41
|
+
link it without being marked up as one. -#}
|
|
42
|
+
<h2 class="feed-title{% if post.named %} p-name{% endif %}">
|
|
43
|
+
<a href="{{ post.url | url }}" class="u-url">{{ post.label }}</a>
|
|
42
44
|
</h2>
|
|
43
45
|
{% if post.snippet %}
|
|
44
46
|
<p class="search-snippet">{{ post.snippet | safe }}</p>
|
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
The feed a listing is made of: `h-feed` of `h-entry` items, as the source
|
|
3
3
|
design lists them (decision-16).
|
|
4
4
|
|
|
5
|
-
Expects `posts`.
|
|
6
|
-
`
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
Expects `posts`. A note, which has no title, is printed whole as its
|
|
6
|
+
`e-content`, with its date as the link to it. Every other entry prints its
|
|
7
|
+
title as a linked `p-name`, its `summary` — the very line the feeds publish —
|
|
8
|
+
as a `p-summary` cut to about 280 characters, a Continue reading link, its
|
|
9
|
+
publish date and the categories it is filed under. Tags are deliberately not here: an entry's tags belong
|
|
9
10
|
under the entry, and a feed of twenty posts listing everyone's would be a
|
|
10
11
|
wall of links rather than a list of writing.
|
|
11
12
|
|
|
@@ -24,6 +25,12 @@
|
|
|
24
25
|
{% endif %}
|
|
25
26
|
<article class="feed-item h-entry">
|
|
26
27
|
<div class="feed-content">
|
|
28
|
+
{% if post.inReplyTo %}
|
|
29
|
+
<p class="feed-reply small">In reply to <a class="u-in-reply-to" href="{{ post.inReplyTo }}">{{ post.inReplyTo }}</a></p>
|
|
30
|
+
{% endif %}
|
|
31
|
+
{% if not post.named %}
|
|
32
|
+
<div class="feed-excerpt e-content">{{ post.content | safe }}</div>
|
|
33
|
+
{% else %}
|
|
27
34
|
<{{ feedTitleTag }} class="feed-title p-name">
|
|
28
35
|
<a href="{{ post.url | url }}" class="u-url">{{ post.title }}</a>
|
|
29
36
|
</{{ feedTitleTag }}>
|
|
@@ -38,8 +45,13 @@
|
|
|
38
45
|
<p class="feed-more">
|
|
39
46
|
<a href="{{ post.url | url }}" aria-label="Continue reading: {{ post.title }}">Continue reading<span aria-hidden="true"> →</span></a>
|
|
40
47
|
</p>
|
|
48
|
+
{% endif %}
|
|
41
49
|
<div class="feed-meta">
|
|
42
|
-
{% if post.
|
|
50
|
+
{% if not post.named %}
|
|
51
|
+
<p>
|
|
52
|
+
<a href="{{ post.url | url }}" class="u-url">{% if post.date %}<time class="feed-date dt-published" datetime="{{ post.date | date("iso") }}">{{ post.date | date }}</time>{% else %}{{ post.label }}{% endif %}</a>
|
|
53
|
+
</p>
|
|
54
|
+
{% elif post.date %}
|
|
43
55
|
<p>
|
|
44
56
|
<time class="feed-date dt-published" datetime="{{ post.date | date("iso") }}">
|
|
45
57
|
{{ post.date | date }}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{#
|
|
2
|
+
The post a reply answers, cited in the reply (TASK-123): an embedded
|
|
3
|
+
`u-in-reply-to h-cite` that always carries the target's URL, so a parser
|
|
4
|
+
reads what this post answers even when nothing more is known about it.
|
|
5
|
+
|
|
6
|
+
`replyContext` is what the target said about itself when the reply was saved
|
|
7
|
+
or synced: its name, a short excerpt, its author and its date, each only when
|
|
8
|
+
it said so. It is somebody else's words, so every piece is printed through
|
|
9
|
+
autoescaping and none of it with `safe`.
|
|
10
|
+
#}
|
|
11
|
+
{% if inReplyTo %}
|
|
12
|
+
<div class="reply-context u-in-reply-to h-cite">
|
|
13
|
+
<p class="small">In reply to
|
|
14
|
+
{%- if replyContext.name %} <a class="u-url p-name" href="{{ inReplyTo }}">{{ replyContext.name }}</a>
|
|
15
|
+
{%- else %} <a class="u-url" href="{{ inReplyTo }}">{{ inReplyTo }}</a>
|
|
16
|
+
{%- endif %}
|
|
17
|
+
{%- if replyContext.author %} by <span class="p-author h-card">
|
|
18
|
+
{%- if replyContext.author.url %}<a class="u-url p-name" href="{{ replyContext.author.url }}">{{ replyContext.author.name }}</a>
|
|
19
|
+
{%- else %}<span class="p-name">{{ replyContext.author.name }}</span>{% endif -%}
|
|
20
|
+
</span>
|
|
21
|
+
{%- endif %}
|
|
22
|
+
{%- if replyContext.published %} on <time class="dt-published" datetime="{{ replyContext.published | date("iso") }}">{{ replyContext.published | date }}</time>
|
|
23
|
+
{%- endif -%}
|
|
24
|
+
</p>
|
|
25
|
+
{% if replyContext.text %}
|
|
26
|
+
<blockquote class="p-content">{{ replyContext.text }}</blockquote>
|
|
27
|
+
{% endif %}
|
|
28
|
+
</div>
|
|
29
|
+
{% endif %}
|