@geekity/cms 0.17.0 → 0.19.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 +163 -50
- package/admin/components/public-admin-bar.njk +3 -1
- package/admin/pages/documents/editor.njk +286 -158
- package/admin/pages/documents/list.njk +2 -0
- package/admin/pages/indieauth/consent.njk +4 -0
- package/admin/pages/settings/privacy.njk +37 -0
- package/admin/pages/users/apps.njk +109 -3
- package/admin/static/admin.css +37 -14
- package/dist/admin/documents.d.ts +34 -4
- package/dist/admin/documents.d.ts.map +1 -1
- package/dist/admin/documents.js +161 -23
- package/dist/admin/documents.js.map +1 -1
- package/dist/admin/editor-layout.d.ts +13 -0
- package/dist/admin/editor-layout.d.ts.map +1 -0
- package/dist/admin/editor-layout.js +61 -0
- package/dist/admin/editor-layout.js.map +1 -0
- package/dist/admin/enclosure-field.d.ts +2 -3
- package/dist/admin/enclosure-field.d.ts.map +1 -1
- package/dist/admin/enclosure-field.js +27 -7
- package/dist/admin/enclosure-field.js.map +1 -1
- package/dist/admin/index.d.ts +1 -0
- package/dist/admin/index.d.ts.map +1 -1
- package/dist/admin/index.js +1 -0
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/location-field.d.ts +27 -0
- package/dist/admin/location-field.d.ts.map +1 -0
- package/dist/admin/location-field.js +98 -0
- package/dist/admin/location-field.js.map +1 -0
- package/dist/admin/menu.d.ts.map +1 -1
- package/dist/admin/menu.js +1 -0
- package/dist/admin/menu.js.map +1 -1
- package/dist/admin/photo-field.d.ts +2 -3
- package/dist/admin/photo-field.d.ts.map +1 -1
- package/dist/admin/photo-field.js +4 -2
- package/dist/admin/photo-field.js.map +1 -1
- package/dist/admin/preview.d.ts.map +1 -1
- package/dist/admin/preview.js +18 -5
- package/dist/admin/preview.js.map +1 -1
- package/dist/admin/read-field.d.ts +22 -0
- package/dist/admin/read-field.d.ts.map +1 -0
- package/dist/admin/read-field.js +61 -0
- package/dist/admin/read-field.js.map +1 -0
- package/dist/admin/settings-page.d.ts +3 -3
- package/dist/admin/settings-page.js +2 -2
- package/dist/admin/settings-pages.d.ts +2 -2
- package/dist/admin/settings-pages.d.ts.map +1 -1
- package/dist/admin/settings-pages.js +4 -2
- package/dist/admin/settings-pages.js.map +1 -1
- package/dist/admin/settings-privacy.d.ts +3 -0
- package/dist/admin/settings-privacy.d.ts.map +1 -0
- package/dist/admin/settings-privacy.js +10 -0
- package/dist/admin/settings-privacy.js.map +1 -0
- package/dist/admin/settings-reading.js +2 -2
- package/dist/admin/settings-reading.js.map +1 -1
- package/dist/admin/settings.d.ts +18 -2
- package/dist/admin/settings.d.ts.map +1 -1
- package/dist/admin/settings.js +27 -0
- package/dist/admin/settings.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/admin/uploads.d.ts.map +1 -1
- package/dist/admin/uploads.js +14 -1
- package/dist/admin/uploads.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +34 -0
- package/dist/cli.js.map +1 -1
- package/dist/comments/routes.js +2 -2
- package/dist/comments/routes.js.map +1 -1
- package/dist/contact/routes.js +2 -2
- package/dist/contact/routes.js.map +1 -1
- package/dist/content/kept-properties.d.ts +5 -0
- package/dist/content/kept-properties.d.ts.map +1 -0
- package/dist/content/kept-properties.js +12 -0
- package/dist/content/kept-properties.js.map +1 -0
- package/dist/content/location.d.ts +62 -0
- package/dist/content/location.d.ts.map +1 -0
- package/dist/content/location.js +240 -0
- package/dist/content/location.js.map +1 -0
- package/dist/content/locations.d.ts +6 -0
- package/dist/content/locations.d.ts.map +1 -0
- package/dist/content/locations.js +7 -0
- package/dist/content/locations.js.map +1 -0
- package/dist/content/metadata/gif.d.ts +3 -0
- package/dist/content/metadata/gif.d.ts.map +1 -0
- package/dist/content/metadata/gif.js +65 -0
- package/dist/content/metadata/gif.js.map +1 -0
- package/dist/content/metadata/index.d.ts +6 -0
- package/dist/content/metadata/index.d.ts.map +1 -0
- package/dist/content/metadata/index.js +24 -0
- package/dist/content/metadata/index.js.map +1 -0
- package/dist/content/metadata/isobmff.d.ts +22 -0
- package/dist/content/metadata/isobmff.d.ts.map +1 -0
- package/dist/content/metadata/isobmff.js +215 -0
- package/dist/content/metadata/isobmff.js.map +1 -0
- package/dist/content/metadata/jpeg.d.ts +3 -0
- package/dist/content/metadata/jpeg.d.ts.map +1 -0
- package/dist/content/metadata/jpeg.js +117 -0
- package/dist/content/metadata/jpeg.js.map +1 -0
- package/dist/content/metadata/png.d.ts +3 -0
- package/dist/content/metadata/png.d.ts.map +1 -0
- package/dist/content/metadata/png.js +74 -0
- package/dist/content/metadata/png.js.map +1 -0
- package/dist/content/metadata/shared.d.ts +17 -0
- package/dist/content/metadata/shared.d.ts.map +1 -0
- package/dist/content/metadata/shared.js +42 -0
- package/dist/content/metadata/shared.js.map +1 -0
- package/dist/content/metadata/sweep.d.ts +14 -0
- package/dist/content/metadata/sweep.d.ts.map +1 -0
- package/dist/content/metadata/sweep.js +54 -0
- package/dist/content/metadata/sweep.js.map +1 -0
- package/dist/content/metadata/tiff.d.ts +7 -0
- package/dist/content/metadata/tiff.d.ts.map +1 -0
- package/dist/content/metadata/tiff.js +56 -0
- package/dist/content/metadata/tiff.js.map +1 -0
- package/dist/content/metadata/webp.d.ts +3 -0
- package/dist/content/metadata/webp.d.ts.map +1 -0
- package/dist/content/metadata/webp.js +67 -0
- package/dist/content/metadata/webp.js.map +1 -0
- package/dist/content/permalink-file.d.ts +7 -0
- package/dist/content/permalink-file.d.ts.map +1 -0
- package/dist/content/permalink-file.js +77 -0
- package/dist/content/permalink-file.js.map +1 -0
- package/dist/content/post-type.d.ts +4 -2
- package/dist/content/post-type.d.ts.map +1 -1
- package/dist/content/post-type.js +9 -1
- package/dist/content/post-type.js.map +1 -1
- package/dist/content/read.d.ts +22 -0
- package/dist/content/read.d.ts.map +1 -0
- package/dist/content/read.js +67 -0
- package/dist/content/read.js.map +1 -0
- package/dist/content/store.d.ts +4 -4
- package/dist/content/store.d.ts.map +1 -1
- package/dist/content/store.js +19 -39
- package/dist/content/store.js.map +1 -1
- package/dist/content/sync.d.ts.map +1 -1
- package/dist/content/sync.js +3 -13
- package/dist/content/sync.js.map +1 -1
- package/dist/content/visibility.d.ts +11 -0
- package/dist/content/visibility.d.ts.map +1 -0
- package/dist/content/visibility.js +14 -0
- package/dist/content/visibility.js.map +1 -0
- package/dist/federation/article.d.ts +4 -3
- package/dist/federation/article.d.ts.map +1 -1
- package/dist/federation/article.js +66 -20
- package/dist/federation/article.js.map +1 -1
- package/dist/federation/citations.d.ts +7 -6
- package/dist/federation/citations.d.ts.map +1 -1
- package/dist/federation/citations.js +44 -28
- package/dist/federation/citations.js.map +1 -1
- package/dist/federation/delivery.d.ts +3 -1
- package/dist/federation/delivery.d.ts.map +1 -1
- package/dist/federation/delivery.js +29 -21
- package/dist/federation/delivery.js.map +1 -1
- package/dist/federation/mount.d.ts.map +1 -1
- package/dist/federation/mount.js +3 -1
- package/dist/federation/mount.js.map +1 -1
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/indexnow.js +2 -2
- package/dist/indexnow.js.map +1 -1
- package/dist/indieauth/activity-log.d.ts +2 -0
- package/dist/indieauth/activity-log.d.ts.map +1 -1
- package/dist/indieauth/activity-log.js +12 -2
- package/dist/indieauth/activity-log.js.map +1 -1
- package/dist/indieauth/app-activity.js +5 -1
- package/dist/indieauth/app-activity.js.map +1 -1
- package/dist/indieauth/bearer.d.ts +10 -6
- package/dist/indieauth/bearer.d.ts.map +1 -1
- package/dist/indieauth/bearer.js +28 -25
- package/dist/indieauth/bearer.js.map +1 -1
- package/dist/indieauth/client-id.d.ts +10 -0
- package/dist/indieauth/client-id.d.ts.map +1 -0
- package/dist/indieauth/client-id.js +30 -0
- package/dist/indieauth/client-id.js.map +1 -0
- package/dist/indieauth/connected-apps.d.ts +4 -0
- package/dist/indieauth/connected-apps.d.ts.map +1 -1
- package/dist/indieauth/connected-apps.js +149 -20
- package/dist/indieauth/connected-apps.js.map +1 -1
- package/dist/indieauth/consent.d.ts.map +1 -1
- package/dist/indieauth/consent.js +5 -1
- package/dist/indieauth/consent.js.map +1 -1
- package/dist/indieauth/grants.d.ts +2 -7
- package/dist/indieauth/grants.d.ts.map +1 -1
- package/dist/indieauth/grants.js.map +1 -1
- package/dist/indieauth/redeem.d.ts.map +1 -1
- package/dist/indieauth/redeem.js +10 -5
- package/dist/indieauth/redeem.js.map +1 -1
- package/dist/indieauth/request.d.ts +8 -4
- package/dist/indieauth/request.d.ts.map +1 -1
- package/dist/indieauth/request.js +29 -30
- package/dist/indieauth/request.js.map +1 -1
- package/dist/indieauth/token.js +2 -2
- package/dist/indieauth/token.js.map +1 -1
- package/dist/indieauth/tokens.d.ts +28 -7
- package/dist/indieauth/tokens.d.ts.map +1 -1
- package/dist/indieauth/tokens.js +26 -5
- package/dist/indieauth/tokens.js.map +1 -1
- package/dist/micropub/create.d.ts +26 -0
- package/dist/micropub/create.d.ts.map +1 -1
- package/dist/micropub/create.js +158 -13
- package/dist/micropub/create.js.map +1 -1
- package/dist/micropub/endpoint.d.ts +4 -5
- package/dist/micropub/endpoint.d.ts.map +1 -1
- package/dist/micropub/endpoint.js +83 -25
- package/dist/micropub/endpoint.js.map +1 -1
- package/dist/micropub/media.d.ts +6 -2
- package/dist/micropub/media.d.ts.map +1 -1
- package/dist/micropub/media.js +43 -37
- package/dist/micropub/media.js.map +1 -1
- package/dist/micropub/update.d.ts +13 -3
- package/dist/micropub/update.d.ts.map +1 -1
- package/dist/micropub/update.js +60 -7
- package/dist/micropub/update.js.map +1 -1
- package/dist/notify.d.ts.map +1 -1
- package/dist/notify.js +2 -5
- package/dist/notify.js.map +1 -1
- package/dist/web/absolute-urls.d.ts +2 -0
- package/dist/web/absolute-urls.d.ts.map +1 -0
- package/dist/web/absolute-urls.js +22 -0
- package/dist/web/absolute-urls.js.map +1 -0
- package/dist/web/admin-bar.d.ts.map +1 -1
- package/dist/web/admin-bar.js +25 -0
- package/dist/web/admin-bar.js.map +1 -1
- package/dist/web/context.d.ts +29 -1
- package/dist/web/context.d.ts.map +1 -1
- package/dist/web/context.js +33 -0
- package/dist/web/context.js.map +1 -1
- package/dist/web/conversation.d.ts.map +1 -1
- package/dist/web/conversation.js +5 -4
- package/dist/web/conversation.js.map +1 -1
- package/dist/web/documents.d.ts +34 -10
- package/dist/web/documents.d.ts.map +1 -1
- package/dist/web/documents.js +41 -15
- package/dist/web/documents.js.map +1 -1
- package/dist/web/feed-item.d.ts +25 -6
- package/dist/web/feed-item.d.ts.map +1 -1
- package/dist/web/feed-item.js +31 -7
- package/dist/web/feed-item.js.map +1 -1
- package/dist/web/feed-json.d.ts +3 -1
- package/dist/web/feed-json.d.ts.map +1 -1
- package/dist/web/feed-json.js +2 -0
- package/dist/web/feed-json.js.map +1 -1
- package/dist/web/feed-source.d.ts +6 -0
- package/dist/web/feed-source.d.ts.map +1 -1
- package/dist/web/feed-source.js.map +1 -1
- package/dist/web/feeds.d.ts.map +1 -1
- package/dist/web/feeds.js +2 -0
- package/dist/web/feeds.js.map +1 -1
- package/dist/web/html-attributes.d.ts +3 -0
- package/dist/web/html-attributes.d.ts.map +1 -0
- package/dist/web/html-attributes.js +15 -0
- package/dist/web/html-attributes.js.map +1 -0
- package/dist/web/index.d.ts +1 -1
- package/dist/web/index.d.ts.map +1 -1
- package/dist/web/index.js +1 -1
- package/dist/web/index.js.map +1 -1
- package/dist/web/negotiate.d.ts +2 -0
- package/dist/web/negotiate.d.ts.map +1 -1
- package/dist/web/negotiate.js +2 -1
- package/dist/web/negotiate.js.map +1 -1
- package/dist/web/render.d.ts +13 -4
- package/dist/web/render.d.ts.map +1 -1
- package/dist/web/render.js +25 -12
- package/dist/web/render.js.map +1 -1
- package/dist/web/routes.d.ts.map +1 -1
- package/dist/web/routes.js +26 -11
- package/dist/web/routes.js.map +1 -1
- package/dist/webmention/fetch-public.d.ts +3 -1
- package/dist/webmention/fetch-public.d.ts.map +1 -1
- package/dist/webmention/fetch-public.js +17 -11
- package/dist/webmention/fetch-public.js.map +1 -1
- package/dist/webmention/reply-context.d.ts +18 -5
- package/dist/webmention/reply-context.d.ts.map +1 -1
- package/dist/webmention/reply-context.js +118 -19
- package/dist/webmention/reply-context.js.map +1 -1
- package/dist/webmention/reply-contexts.d.ts +17 -14
- package/dist/webmention/reply-contexts.d.ts.map +1 -1
- package/dist/webmention/reply-contexts.js +32 -21
- package/dist/webmention/reply-contexts.js.map +1 -1
- package/dist/webmention/service.d.ts.map +1 -1
- package/dist/webmention/service.js +7 -2
- package/dist/webmention/service.js.map +1 -1
- package/package.json +9 -9
- package/themes/default/README.md +45 -7
- package/themes/default/layouts/base.njk +2 -0
- package/themes/default/layouts/post.njk +12 -7
- package/themes/default/partials/citations.njk +12 -3
- package/themes/default/partials/cited-page.njk +41 -0
- package/themes/default/partials/location.njk +12 -0
- package/themes/default/partials/post-list.njk +10 -5
- package/themes/default/partials/read.njk +5 -0
- package/themes/default/partials/reply-context.njk +2 -9
package/themes/default/README.md
CHANGED
|
@@ -26,6 +26,8 @@ themes/default/
|
|
|
26
26
|
kicker.njk the line above an entry naming its kind and date
|
|
27
27
|
reply-context.njk the citation of what a reply answers
|
|
28
28
|
citations.njk the citation of what a like, repost or bookmark cites
|
|
29
|
+
cited-page.njk the name and author both citations print
|
|
30
|
+
read.njk what a read post read, and how far
|
|
29
31
|
bio.njk who an entry is by, as an h-card
|
|
30
32
|
menu.njk one named menu, as a nav of links
|
|
31
33
|
feeds.njk macros for the feed links in <head>
|
|
@@ -404,16 +406,49 @@ is an `h3` inside the form's section.
|
|
|
404
406
|
`div.reply-context.cite.u-in-reply-to.h-cite`: a rule on the start side, a
|
|
405
407
|
`p.cite-line` saying "In reply to" and the target's name, author and date as
|
|
406
408
|
far as they are known, and its excerpt as a `blockquote.cite-quote.p-content`.
|
|
407
|
-
|
|
408
|
-
|
|
409
|
+
Where it goes depends on whether the post shows a title. An untitled reply
|
|
410
|
+
opens on it, under the kicker and before its words. A titled reply prints its
|
|
411
|
+
`header.post-header` first and the citation after it, before the `e-content`,
|
|
412
|
+
so the page opens on its title rather than on a link. A listing follows the
|
|
413
|
+
same rule: an untitled entry cites under its kicker, a titled one after its
|
|
414
|
+
title and summary. The same partial cites a reply in a feed. The layouts own
|
|
415
|
+
the placement; the partial owns only what the citation says, and it stays
|
|
416
|
+
inside the `h-entry` wherever it is printed.
|
|
409
417
|
|
|
410
418
|
**A like, a repost or a bookmark cites what it cites** (TASK-169) with
|
|
411
419
|
`partials/citations.njk`, beside the reply context and drawn the same way: one
|
|
412
420
|
`div.reply-context.cite.h-cite` per entry of `citations`, classed
|
|
413
421
|
`u-repost-of`, `u-like-of` or `u-bookmark-of`, whose `p.cite-line` says
|
|
414
|
-
Reposted, Liked or Bookmarked and links the target as its `u-url`.
|
|
415
|
-
|
|
416
|
-
|
|
422
|
+
Reposted, Liked or Bookmarked and links the target as its `u-url`. The link
|
|
423
|
+
says the target's name, as the reply context does, with its author after it as
|
|
424
|
+
a `p-author h-card`, when the target was read when the post was saved
|
|
425
|
+
(TASK-244): its `h-entry` name, its oEmbed title, or its `<title>`. With only
|
|
426
|
+
an author it says "a post", and with neither the bare URL. Its kicker
|
|
427
|
+
and its hidden `h1` say Repost, Like or Bookmark. It is placed as the reply
|
|
428
|
+
context is: at the top of an untitled post, after the header of a titled one.
|
|
429
|
+
A listing cites each entry's from the same partial, by the same rule.
|
|
430
|
+
|
|
431
|
+
**Both citations name the cited page** through `partials/cited-page.njk`, so
|
|
432
|
+
they print its name and author by one rule. A name that already ends in " by "
|
|
433
|
+
and the author's name, in any case, does not print the author again
|
|
434
|
+
(TASK-247): SoundCloud titles a track "Flickermood by Forss" and names Forss
|
|
435
|
+
as its author. The title link stops before " by ", and the words after it
|
|
436
|
+
become the `p-author h-card`, so the line reads "Liked Flickermood by Forss"
|
|
437
|
+
and a parser still reads the whole title as the `p-name`. A name that mentions
|
|
438
|
+
its author anywhere else, such as "Rick Astley - Never Gonna Give You Up" by
|
|
439
|
+
Rick Astley, keeps the author after it.
|
|
440
|
+
|
|
441
|
+
**A read says what was read** (TASK-229) with `partials/read.njk`, a
|
|
442
|
+
`p.read-line` at the top of the `e-content` that reads like indiebookclub's
|
|
443
|
+
own: a `data.p-read-status` whose value is `to-read`, `reading` or `finished`
|
|
444
|
+
and whose text is Want to read, Currently reading or Finished reading, then a
|
|
445
|
+
`span.p-read-of.h-cite` with the title as a `cite.p-name` (linked as its
|
|
446
|
+
`u-url` when the post gives one), the author as a `p-author`, and the
|
|
447
|
+
identifier as a `data.p-uid` whose value is the `isbn:` or `doi:` uid. Its
|
|
448
|
+
kicker and its hidden `h1` say Read. A listing prints each entry's from the
|
|
449
|
+
same partial. The partial prints `read.line`, the same HTML the feeds and the
|
|
450
|
+
federated Note open with (TASK-233); `read.status`, `read.statusLabel` and
|
|
451
|
+
`read.of` are there for a theme that marks it up differently.
|
|
417
452
|
|
|
418
453
|
The tags are printed under the words and inside the article, so that each link
|
|
419
454
|
is a `p-category` of this entry, as one `p.post-categories` from
|
|
@@ -589,7 +624,8 @@ its kicker:
|
|
|
589
624
|
**Only an article has a headline.** A note, which has no title, is printed
|
|
590
625
|
whole as its `e-content`, and the date in its kicker is its `u-url`. A reply is
|
|
591
626
|
a note that first cites what it answers with `partials/reply-context.njk`, and
|
|
592
|
-
a reply with a title is an article that
|
|
627
|
+
a reply with a title is an article that cites it after its title and summary.
|
|
628
|
+
A like, a repost and a bookmark place `partials/citations.njk` the same way. An article's categories are in
|
|
593
629
|
its kicker; a note's are on its own page.
|
|
594
630
|
|
|
595
631
|
The excerpt is the entry's `summary`, the very line the feeds publish, so a
|
|
@@ -1166,7 +1202,8 @@ A document — one post, one page, or one entry of a listing — adds:
|
|
|
1166
1202
|
| `lang` | The `lang` front matter as a canonical tag, such as `fr-CA`. Absent when it names none or no tag. |
|
|
1167
1203
|
| `enclosure` | The post's recording, parsed, with `player` (`audio` or `video`) and `transcript.captions`. Absent with none. |
|
|
1168
1204
|
| `photos` | The post's photos, each `{ url, alt, html }`; `html` is the `img.u-photo`, responsive. Empty with none. |
|
|
1169
|
-
| `citations` | What it reposts, likes or bookmarks, each `{ property, url }
|
|
1205
|
+
| `citations` | What it reposts, likes or bookmarks, each `{ property, url, context }`; `context` as `replyContext`, when known. |
|
|
1206
|
+
| `read` | A read post's `{ status, statusLabel, of, line }`; `of` is `{ name, author, uid, uidLabel, url }`. |
|
|
1170
1207
|
| `syndicateTo` | On a post's page, the syndication targets it selects, each `{ id, name, url }`. Empty with none. |
|
|
1171
1208
|
| `syndication` | Its copies elsewhere, each `{ url, label }`: front matter `syndication`, and on its page the copies targets made. |
|
|
1172
1209
|
| `author` | Who wrote it, as a profile rather than a string. See [Bylines and author archives](#bylines-and-author-archives). |
|
|
@@ -1177,6 +1214,7 @@ A document — one post, one page, or one entry of a listing — adds:
|
|
|
1177
1214
|
| `postsPage` | The page carrying the listing, as `{ title, url }`, on the front page only. Absent when the site names none. |
|
|
1178
1215
|
| `archiveMonths` | Every published post as `{ month, posts }`, newest month first. Only on a page that says `archive: true`. |
|
|
1179
1216
|
| `webmention` | Where a webmention about this page is sent. Only on a rendered document, and only while the site takes them. |
|
|
1217
|
+
| `noindex` | `true` on an unlisted or unpublished page, which the base layout prints as a robots `noindex` meta. Else absent. |
|
|
1180
1218
|
| `conversation` | The replies, likes and boosts under the post. Only when there are any. See [The conversation](#the-conversation). |
|
|
1181
1219
|
| everything else | Any front matter key the CMS does not model is on the context under its own name. |
|
|
1182
1220
|
|
|
@@ -99,6 +99,8 @@
|
|
|
99
99
|
<title>{% block title %}{% if pageTitle %}{{ pageTitle }} · {% endif %}{{ site.title }}{% endblock %}</title>
|
|
100
100
|
{% if metaDescription %}
|
|
101
101
|
<meta name="description" content="{{ metaDescription }}">
|
|
102
|
+
{% endif %}{% if noindex %}
|
|
103
|
+
<meta name="robots" content="noindex">
|
|
102
104
|
{% endif %}
|
|
103
105
|
<link rel="canonical" href="{{ (page.url or "/") | absoluteUrl }}">
|
|
104
106
|
<link rel="stylesheet" href="{{ "style.css" | asset }}">
|
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
|
|
6
6
|
An article, and a reply with a title, has the only headline: the title as its
|
|
7
7
|
`p-name` and the author's `description` under it as the deck, a
|
|
8
|
-
`p-summary`. A post with no title opens on its words, set larger.
|
|
9
|
-
|
|
8
|
+
`p-summary`. A post with no title opens on its words, set larger. What a
|
|
9
|
+
reply answers, and what a like, repost or bookmark cites, opens a post with
|
|
10
|
+
no title and follows the header of one with a title, before its words.
|
|
10
11
|
Then the Published line, the tags, a rule and the bio. The neighbouring posts,
|
|
11
12
|
the conversation and the comment form follow the entry.
|
|
12
13
|
|
|
@@ -36,10 +37,6 @@
|
|
|
36
37
|
hidden from sight. It is no `p-name`: a parser would take that as a
|
|
37
38
|
title and read the note as an article. -#}
|
|
38
39
|
{% if named %}
|
|
39
|
-
{#- A reply cites the post it answers, whose URL is also the link its
|
|
40
|
-
webmention points a receiver at. -#}
|
|
41
|
-
{% include "partials/reply-context.njk" %}
|
|
42
|
-
{% include "partials/citations.njk" %}
|
|
43
40
|
<header class="post-header">
|
|
44
41
|
{{ kicker.line(postType | capitalize, false, false, categories) }}
|
|
45
42
|
<h1 class="p-name">{{ title }}</h1>
|
|
@@ -47,9 +44,11 @@
|
|
|
47
44
|
<p class="post-deck p-summary">{{ description }}</p>
|
|
48
45
|
{% endif %}
|
|
49
46
|
</header>
|
|
47
|
+
{% include "partials/reply-context.njk" %}
|
|
48
|
+
{% include "partials/citations.njk" %}
|
|
50
49
|
{% else %}
|
|
51
50
|
<h1 class="screen-reader-text">
|
|
52
|
-
{{- postType | capitalize if postType in ["reply", "like", "repost", "bookmark"] else "Note" }}
|
|
51
|
+
{{- postType | capitalize if postType in ["reply", "like", "repost", "bookmark", "read"] else "Note" }}
|
|
53
52
|
{%- if bioAuthor.name %} by {{ bioAuthor.name }}{% endif %}
|
|
54
53
|
{%- if date %}, {{ date | date("readable", none, lang) }}{% endif -%}
|
|
55
54
|
</h1>
|
|
@@ -67,6 +66,9 @@
|
|
|
67
66
|
{% endif %}
|
|
68
67
|
|
|
69
68
|
<section class="e-content">
|
|
69
|
+
{#- Inside the content, so a parser that reads only the content of a
|
|
70
|
+
read, as a webmention receiver does, has its sentence. -#}
|
|
71
|
+
{% include "partials/read.njk" %}
|
|
70
72
|
{{ content | safe }}
|
|
71
73
|
<p class="entry-meta">
|
|
72
74
|
{#- The line opens with a link to each syndication target the post
|
|
@@ -89,6 +91,9 @@
|
|
|
89
91
|
{%- if syndication.length %}
|
|
90
92
|
{% if date or updated %} <span aria-hidden="true">·</span> {% endif %}<span class="small">Also on {% for copy in syndication %}<a class="u-syndication" href="{{ copy.url }}">{{ copy.label }}</a>{% if not loop.last %}, {% endif %}{% endfor %}</span>
|
|
91
93
|
{%- endif -%}
|
|
94
|
+
{%- if location %}
|
|
95
|
+
{% if date or updated or syndication.length %} <span aria-hidden="true">·</span> {% endif %}<span class="small">{% include "partials/location.njk" %}</span>
|
|
96
|
+
{%- endif -%}
|
|
92
97
|
</p>
|
|
93
98
|
</section>
|
|
94
99
|
|
|
@@ -6,12 +6,21 @@
|
|
|
6
6
|
webmention names links to it.
|
|
7
7
|
|
|
8
8
|
Drawn as the same citation block as `reply-context.njk` (doc-9). An entry
|
|
9
|
-
includes it with `citations` on the context, a list of `{ property, url
|
|
10
|
-
a feed sets it from the entry it is printing.
|
|
9
|
+
includes it with `citations` on the context, a list of `{ property, url,
|
|
10
|
+
context }`; a feed sets it from the entry it is printing.
|
|
11
|
+
|
|
12
|
+
`context` is what the target said about itself when the post was saved or
|
|
13
|
+
synced (TASK-244), only when it said something: its `name` and `author`,
|
|
14
|
+
printed through autoescaping like a reply's context. With a name, the name
|
|
15
|
+
is the link; with only an author, "a post" is; with neither, the bare URL.
|
|
11
16
|
#}
|
|
17
|
+
{% import "partials/cited-page.njk" as cited %}
|
|
12
18
|
{% set citationVerbs = { "repost-of": "Reposted", "like-of": "Liked", "bookmark-of": "Bookmarked" } %}
|
|
13
19
|
{% for citation in citations %}
|
|
20
|
+
{% set citedPage = citation.context %}
|
|
14
21
|
<div class="reply-context cite u-{{ citation.property }} h-cite">
|
|
15
|
-
<p class="cite-line small">{{ citationVerbs[citation.property] }}
|
|
22
|
+
<p class="cite-line small">{{ citationVerbs[citation.property] }}
|
|
23
|
+
{{- cited.page(citation.url, citedPage) -}}
|
|
24
|
+
</p>
|
|
16
25
|
</div>
|
|
17
26
|
{% endfor %}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{#
|
|
2
|
+
What a citation says of the page it cites: its name and its author, the part
|
|
3
|
+
of the line after "In reply to", "Liked" and the rest. Shared by
|
|
4
|
+
`reply-context.njk` and `citations.njk` (TASK-247).
|
|
5
|
+
|
|
6
|
+
{% import "partials/cited-page.njk" as cited %}
|
|
7
|
+
{{ cited.page(inReplyTo, replyContext) }}
|
|
8
|
+
|
|
9
|
+
`url` is the cited page, always its `u-url`. `context` is what the page said
|
|
10
|
+
about itself, from the reply contexts file. With a name, the name is the
|
|
11
|
+
link; with only an author, "a post" is; with neither, the bare URL. The
|
|
12
|
+
author follows as an `h-card`.
|
|
13
|
+
|
|
14
|
+
A name that already ends in " by " and the author's name, matched without
|
|
15
|
+
regard to case (SoundCloud's oEmbed gives "Flickermood by Forss" by Forss),
|
|
16
|
+
is not followed by the author again. Its last words become the `h-card`,
|
|
17
|
+
printed as the title wrote them, and the whole name stays the `p-name`, so a
|
|
18
|
+
parser reads the same name and author either way.
|
|
19
|
+
#}
|
|
20
|
+
{% macro page(url, context) %}
|
|
21
|
+
{%- set title = (context.name or "") | trim -%}
|
|
22
|
+
{%- set author = (context.author.name or "") | trim if context.author else "" -%}
|
|
23
|
+
{%- set cut = title.length - author.length - 4 -%}
|
|
24
|
+
{%- set byline = title.slice(cut) if (author and cut > 0) else "" -%}
|
|
25
|
+
{%- set named = byline and byline.slice(0, 4).toLowerCase() == " by " and byline.slice(4).toLowerCase() == author.toLowerCase() -%}
|
|
26
|
+
{%- if named %} <span class="p-name"><a class="u-url" href="{{ url }}">{{ title.slice(0, cut) }}</a>{{ byline.slice(0, 4) }}{{ card(context.author, byline.slice(4)) }}</span>
|
|
27
|
+
{%- else %}
|
|
28
|
+
{%- if context.name %} <a class="u-url p-name" href="{{ url }}">{{ context.name }}</a>
|
|
29
|
+
{%- elif context.author %} <a class="u-url" href="{{ url }}">a post</a>
|
|
30
|
+
{%- else %} <a class="u-url" href="{{ url }}">{{ url }}</a>
|
|
31
|
+
{%- endif %}
|
|
32
|
+
{%- if context.author %} by {{ card(context.author, context.author.name) }}{% endif %}
|
|
33
|
+
{%- endif %}
|
|
34
|
+
{%- endmacro %}
|
|
35
|
+
|
|
36
|
+
{% macro card(author, name) -%}
|
|
37
|
+
<span class="p-author h-card">
|
|
38
|
+
{%- if author.url %}<a class="u-url p-name" href="{{ author.url }}">{{ name }}</a>
|
|
39
|
+
{%- else %}<span class="p-name">{{ name }}</span>{% endif -%}
|
|
40
|
+
</span>
|
|
41
|
+
{%- endmacro %}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<span class="p-location {{ location.type }}">
|
|
2
|
+
{%- for word in location.words -%}
|
|
3
|
+
<span class="{{ word.property }}">{{ word.text }}</span>{% if not loop.last %}, {% endif %}
|
|
4
|
+
{%- endfor -%}
|
|
5
|
+
{%- if location.geo -%}
|
|
6
|
+
{%- if location.words.length -%}
|
|
7
|
+
<data class="p-latitude" value="{{ location.geo.latitude }}"></data><data class="p-longitude" value="{{ location.geo.longitude }}"></data>
|
|
8
|
+
{%- else -%}
|
|
9
|
+
<data class="p-latitude" value="{{ location.geo.latitude }}">{{ location.geo.latitude }}</data>, <data class="p-longitude" value="{{ location.geo.longitude }}">{{ location.geo.longitude }}</data>
|
|
10
|
+
{%- endif -%}
|
|
11
|
+
{%- endif -%}
|
|
12
|
+
</span>
|
|
@@ -8,9 +8,10 @@
|
|
|
8
8
|
categories it is filed under in its kicker. A note, which has no title, is
|
|
9
9
|
printed whole as its `e-content`, and its date in the kicker is the link to
|
|
10
10
|
it. A reply is a note that first cites what it answers, and a reply with a
|
|
11
|
-
title is an article that
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
title is an article that cites it after its title and summary; a like, a
|
|
12
|
+
repost and a bookmark cite theirs the same way. Tags are deliberately not
|
|
13
|
+
here: an entry's tags belong under the entry, and a feed of twenty posts
|
|
14
|
+
listing everyone's would be a wall of links rather than a list of writing.
|
|
14
15
|
|
|
15
16
|
`feedHeading` is the heading level, which belongs to the layout rather than
|
|
16
17
|
to the list: a listing is a page of entries and heads each one at 2, and a
|
|
@@ -32,16 +33,19 @@
|
|
|
32
33
|
{% else %}
|
|
33
34
|
{{ kicker.line(post.postType | capitalize, post.date, post.url, [], post.label, lang=post.lang) }}
|
|
34
35
|
{% endif %}
|
|
35
|
-
{
|
|
36
|
+
{% set cited %}
|
|
36
37
|
{% if post.inReplyTo %}
|
|
37
38
|
{% set inReplyTo = post.inReplyTo %}
|
|
38
39
|
{% set replyContext = post.replyContext %}
|
|
39
40
|
{% set lang = post.lang %}
|
|
40
41
|
{% include "partials/reply-context.njk" %}
|
|
41
42
|
{% endif %}
|
|
42
|
-
{#- What it reposts, likes or bookmarks, from the partial an entry uses. -#}
|
|
43
43
|
{% set citations = post.citations %}
|
|
44
44
|
{% include "partials/citations.njk" %}
|
|
45
|
+
{% endset %}
|
|
46
|
+
{% if not post.named %}{{ cited | safe }}{% endif %}
|
|
47
|
+
{% set read = post.read %}
|
|
48
|
+
{% include "partials/read.njk" %}
|
|
45
49
|
{% if post.photos.length %}
|
|
46
50
|
{% set photos = post.photos %}
|
|
47
51
|
{% include "partials/photos.njk" %}
|
|
@@ -60,6 +64,7 @@
|
|
|
60
64
|
<p>{{ post.summary | truncate(280) }}</p>
|
|
61
65
|
</div>
|
|
62
66
|
{% endif %}
|
|
67
|
+
{{ cited | safe }}
|
|
63
68
|
<p class="feed-more">
|
|
64
69
|
<a href="{{ post.url | url }}" aria-label="Continue reading: {{ post.title }}">Continue reading<span aria-hidden="true"> →</span></a>
|
|
65
70
|
</p>
|
|
@@ -16,18 +16,11 @@
|
|
|
16
16
|
written in `lang`, the language of the entry it sits in (TASK-189), so a
|
|
17
17
|
listing sets `lang` from each entry as it sets `replyContext`.
|
|
18
18
|
#}
|
|
19
|
+
{% import "partials/cited-page.njk" as cited %}
|
|
19
20
|
{% if inReplyTo %}
|
|
20
21
|
<div class="reply-context cite u-in-reply-to h-cite">
|
|
21
22
|
<p class="cite-line small">In reply to
|
|
22
|
-
{
|
|
23
|
-
{%- elif replyContext.author %} <a class="u-url" href="{{ inReplyTo }}">a post</a>
|
|
24
|
-
{%- else %} <a class="u-url" href="{{ inReplyTo }}">{{ inReplyTo }}</a>
|
|
25
|
-
{%- endif %}
|
|
26
|
-
{%- if replyContext.author %} by <span class="p-author h-card">
|
|
27
|
-
{%- if replyContext.author.url %}<a class="u-url p-name" href="{{ replyContext.author.url }}">{{ replyContext.author.name }}</a>
|
|
28
|
-
{%- else %}<span class="p-name">{{ replyContext.author.name }}</span>{% endif -%}
|
|
29
|
-
</span>
|
|
30
|
-
{%- endif %}
|
|
23
|
+
{{- cited.page(inReplyTo, replyContext) }}
|
|
31
24
|
{%- if replyContext.published %}, <time class="dt-published" datetime="{{ replyContext.published | date("iso") }}">{{ replyContext.published | date("readable", none, lang) }}</time>
|
|
32
25
|
{%- endif -%}
|
|
33
26
|
</p>
|