@geekity/cms 0.3.0 → 0.5.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 +2217 -214
- package/admin/components/fields.njk +165 -0
- package/admin/layouts/base.njk +1 -1
- package/admin/layouts/settings-page.njk +26 -0
- package/admin/layouts/shell.njk +17 -3
- package/admin/pages/account/forgot.njk +47 -0
- package/admin/pages/account/login.njk +26 -0
- package/admin/pages/account/reset.njk +38 -0
- package/admin/pages/account/setup.njk +28 -0
- package/admin/pages/appearance/themes.njk +69 -0
- package/admin/pages/comments/all.njk +133 -0
- package/admin/{layouts/dashboard.njk → pages/dashboard/home.njk} +8 -15
- package/admin/{layouts/document-conflict.njk → pages/documents/conflict.njk} +1 -0
- package/admin/{layouts/document-editor.njk → pages/documents/editor.njk} +75 -59
- package/admin/{layouts/document-list.njk → pages/documents/list.njk} +19 -2
- package/admin/pages/documents/taxonomy.njk +95 -0
- package/admin/pages/federation/followers.njk +238 -0
- package/admin/pages/federation/settings.njk +77 -0
- package/admin/pages/media/library.njk +160 -0
- package/admin/pages/messages/all.njk +110 -0
- package/admin/pages/navigation/menus.njk +129 -0
- package/admin/{layouts → pages}/placeholder.njk +5 -1
- package/admin/pages/settings/discussion.njk +99 -0
- package/admin/pages/settings/email.njk +203 -0
- package/admin/pages/settings/general.njk +29 -0
- package/admin/pages/settings/permalinks.njk +50 -0
- package/admin/pages/settings/reading.njk +64 -0
- package/admin/pages/tools/content-index.njk +89 -0
- package/admin/pages/users/edit.njk +239 -0
- package/admin/pages/users/list.njk +51 -0
- package/admin/pages/users/new.njk +41 -0
- package/admin/static/admin.css +558 -3
- package/admin/static/copy.js +52 -0
- package/admin/static/editor.js +16 -16
- package/admin/static/slug.js +61 -0
- package/dist/access-log.d.ts +44 -0
- package/dist/access-log.d.ts.map +1 -0
- package/dist/access-log.js +71 -0
- package/dist/access-log.js.map +1 -0
- package/dist/admin/accounts.d.ts +413 -0
- package/dist/admin/accounts.d.ts.map +1 -0
- package/dist/admin/accounts.js +680 -0
- package/dist/admin/accounts.js.map +1 -0
- package/dist/admin/appearance.d.ts +80 -0
- package/dist/admin/appearance.d.ts.map +1 -0
- package/dist/admin/appearance.js +136 -0
- package/dist/admin/appearance.js.map +1 -0
- package/dist/admin/comments.d.ts +90 -0
- package/dist/admin/comments.d.ts.map +1 -0
- package/dist/admin/comments.js +244 -0
- package/dist/admin/comments.js.map +1 -0
- package/dist/admin/credentials.d.ts +26 -2
- package/dist/admin/credentials.d.ts.map +1 -1
- package/dist/admin/credentials.js +35 -2
- package/dist/admin/credentials.js.map +1 -1
- package/dist/admin/documents.d.ts +117 -10
- package/dist/admin/documents.d.ts.map +1 -1
- package/dist/admin/documents.js +328 -41
- package/dist/admin/documents.js.map +1 -1
- package/dist/admin/federation.d.ts +161 -50
- package/dist/admin/federation.d.ts.map +1 -1
- package/dist/admin/federation.js +235 -93
- package/dist/admin/federation.js.map +1 -1
- package/dist/admin/formatting.d.ts +20 -0
- package/dist/admin/formatting.d.ts.map +1 -0
- package/dist/admin/formatting.js +72 -0
- package/dist/admin/formatting.js.map +1 -0
- package/dist/admin/headers.d.ts +65 -0
- package/dist/admin/headers.d.ts.map +1 -0
- package/dist/admin/headers.js +104 -0
- package/dist/admin/headers.js.map +1 -0
- package/dist/admin/index.d.ts +38 -12
- package/dist/admin/index.d.ts.map +1 -1
- package/dist/admin/index.js +25 -7
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/media.d.ts +168 -0
- package/dist/admin/media.d.ts.map +1 -0
- package/dist/admin/media.js +295 -0
- package/dist/admin/media.js.map +1 -0
- package/dist/admin/menu.d.ts +79 -0
- package/dist/admin/menu.d.ts.map +1 -0
- package/dist/admin/menu.js +143 -0
- package/dist/admin/menu.js.map +1 -0
- package/dist/admin/messages.d.ts +80 -0
- package/dist/admin/messages.d.ts.map +1 -0
- package/dist/admin/messages.js +152 -0
- package/dist/admin/messages.js.map +1 -0
- package/dist/admin/navigation.d.ts +155 -0
- package/dist/admin/navigation.d.ts.map +1 -0
- package/dist/admin/navigation.js +292 -0
- package/dist/admin/navigation.js.map +1 -0
- package/dist/admin/preview.d.ts.map +1 -1
- package/dist/admin/preview.js +31 -7
- package/dist/admin/preview.js.map +1 -1
- package/dist/admin/recovery.d.ts +92 -0
- package/dist/admin/recovery.d.ts.map +1 -0
- package/dist/admin/recovery.js +229 -0
- package/dist/admin/recovery.js.map +1 -0
- package/dist/admin/routes.d.ts +0 -20
- package/dist/admin/routes.d.ts.map +1 -1
- package/dist/admin/routes.js +164 -105
- package/dist/admin/routes.js.map +1 -1
- package/dist/admin/session.d.ts +17 -3
- package/dist/admin/session.d.ts.map +1 -1
- package/dist/admin/session.js +19 -5
- package/dist/admin/session.js.map +1 -1
- package/dist/admin/settings-discussion.d.ts +37 -0
- package/dist/admin/settings-discussion.d.ts.map +1 -0
- package/dist/admin/settings-discussion.js +117 -0
- package/dist/admin/settings-discussion.js.map +1 -0
- package/dist/admin/settings-email.d.ts +54 -0
- package/dist/admin/settings-email.d.ts.map +1 -0
- package/dist/admin/settings-email.js +189 -0
- package/dist/admin/settings-email.js.map +1 -0
- package/dist/admin/settings-federation.d.ts +48 -0
- package/dist/admin/settings-federation.d.ts.map +1 -0
- package/dist/admin/settings-federation.js +123 -0
- package/dist/admin/settings-federation.js.map +1 -0
- package/dist/admin/settings-general.d.ts +12 -0
- package/dist/admin/settings-general.d.ts.map +1 -0
- package/dist/admin/settings-general.js +48 -0
- package/dist/admin/settings-general.js.map +1 -0
- package/dist/admin/settings-page.d.ts +119 -0
- package/dist/admin/settings-page.d.ts.map +1 -0
- package/dist/admin/settings-page.js +132 -0
- package/dist/admin/settings-page.js.map +1 -0
- package/dist/admin/settings-pages.d.ts +30 -0
- package/dist/admin/settings-pages.d.ts.map +1 -0
- package/dist/admin/settings-pages.js +43 -0
- package/dist/admin/settings-pages.js.map +1 -0
- package/dist/admin/settings-permalinks.d.ts +16 -0
- package/dist/admin/settings-permalinks.d.ts.map +1 -0
- package/dist/admin/settings-permalinks.js +32 -0
- package/dist/admin/settings-permalinks.js.map +1 -0
- package/dist/admin/settings-reading.d.ts +34 -0
- package/dist/admin/settings-reading.d.ts.map +1 -0
- package/dist/admin/settings-reading.js +49 -0
- package/dist/admin/settings-reading.js.map +1 -0
- package/dist/admin/settings.d.ts +339 -96
- package/dist/admin/settings.d.ts.map +1 -1
- package/dist/admin/settings.js +600 -308
- package/dist/admin/settings.js.map +1 -1
- package/dist/admin/store.d.ts +606 -152
- package/dist/admin/store.d.ts.map +1 -1
- package/dist/admin/store.js +863 -268
- package/dist/admin/store.js.map +1 -1
- package/dist/admin/taxonomy.d.ts +114 -0
- package/dist/admin/taxonomy.d.ts.map +1 -0
- package/dist/admin/taxonomy.js +289 -0
- package/dist/admin/taxonomy.js.map +1 -0
- package/dist/admin/templates.d.ts +46 -14
- package/dist/admin/templates.d.ts.map +1 -1
- package/dist/admin/templates.js +46 -14
- package/dist/admin/templates.js.map +1 -1
- package/dist/admin/throttle.d.ts +84 -0
- package/dist/admin/throttle.d.ts.map +1 -0
- package/dist/admin/throttle.js +143 -0
- package/dist/admin/throttle.js.map +1 -0
- package/dist/admin/tools.d.ts +111 -0
- package/dist/admin/tools.d.ts.map +1 -0
- package/dist/admin/tools.js +182 -0
- package/dist/admin/tools.js.map +1 -0
- package/dist/admin/uploads.d.ts +28 -2
- package/dist/admin/uploads.d.ts.map +1 -1
- package/dist/admin/uploads.js +43 -4
- package/dist/admin/uploads.js.map +1 -1
- package/dist/admin/users.d.ts +100 -13
- package/dist/admin/users.d.ts.map +1 -1
- package/dist/admin/users.js +412 -39
- package/dist/admin/users.js.map +1 -1
- package/dist/cache.d.ts +141 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +207 -0
- package/dist/cache.js.map +1 -0
- package/dist/cli.d.ts +14 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +429 -21
- package/dist/cli.js.map +1 -1
- package/dist/comments/akismet.d.ts +130 -0
- package/dist/comments/akismet.d.ts.map +1 -0
- package/dist/comments/akismet.js +274 -0
- package/dist/comments/akismet.js.map +1 -0
- package/dist/comments/conversation.d.ts +29 -0
- package/dist/comments/conversation.d.ts.map +1 -0
- package/dist/comments/conversation.js +60 -0
- package/dist/comments/conversation.js.map +1 -0
- package/dist/comments/form.d.ts +123 -0
- package/dist/comments/form.d.ts.map +1 -0
- package/dist/comments/form.js +79 -0
- package/dist/comments/form.js.map +1 -0
- package/dist/comments/index.d.ts +16 -0
- package/dist/comments/index.d.ts.map +1 -0
- package/dist/comments/index.js +10 -0
- package/dist/comments/index.js.map +1 -0
- package/dist/comments/markdown.d.ts +8 -0
- package/dist/comments/markdown.d.ts.map +1 -0
- package/dist/comments/markdown.js +85 -0
- package/dist/comments/markdown.js.map +1 -0
- package/dist/comments/moderate.d.ts +71 -0
- package/dist/comments/moderate.d.ts.map +1 -0
- package/dist/comments/moderate.js +88 -0
- package/dist/comments/moderate.js.map +1 -0
- package/dist/comments/policy.d.ts +57 -0
- package/dist/comments/policy.d.ts.map +1 -0
- package/dist/comments/policy.js +80 -0
- package/dist/comments/policy.js.map +1 -0
- package/dist/comments/records.d.ts +266 -0
- package/dist/comments/records.d.ts.map +1 -0
- package/dist/comments/records.js +487 -0
- package/dist/comments/records.js.map +1 -0
- package/dist/comments/routes.d.ts +60 -0
- package/dist/comments/routes.d.ts.map +1 -0
- package/dist/comments/routes.js +212 -0
- package/dist/comments/routes.js.map +1 -0
- package/dist/comments/submission.d.ts +297 -0
- package/dist/comments/submission.d.ts.map +1 -0
- package/dist/comments/submission.js +280 -0
- package/dist/comments/submission.js.map +1 -0
- package/dist/comments/viewer.d.ts +21 -0
- package/dist/comments/viewer.d.ts.map +1 -0
- package/dist/comments/viewer.js +45 -0
- package/dist/comments/viewer.js.map +1 -0
- package/dist/config.d.ts +225 -5
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +121 -6
- package/dist/config.js.map +1 -1
- package/dist/contact/delivery.d.ts +60 -0
- package/dist/contact/delivery.d.ts.map +1 -0
- package/dist/contact/delivery.js +87 -0
- package/dist/contact/delivery.js.map +1 -0
- package/dist/contact/form.d.ts +130 -0
- package/dist/contact/form.d.ts.map +1 -0
- package/dist/contact/form.js +163 -0
- package/dist/contact/form.js.map +1 -0
- package/dist/contact/index.d.ts +17 -0
- package/dist/contact/index.d.ts.map +1 -0
- package/dist/contact/index.js +13 -0
- package/dist/contact/index.js.map +1 -0
- package/dist/contact/records.d.ts +124 -0
- package/dist/contact/records.d.ts.map +1 -0
- package/dist/contact/records.js +218 -0
- package/dist/contact/records.js.map +1 -0
- package/dist/contact/routes.d.ts +17 -0
- package/dist/contact/routes.d.ts.map +1 -0
- package/dist/contact/routes.js +127 -0
- package/dist/contact/routes.js.map +1 -0
- package/dist/contact/submission.d.ts +103 -0
- package/dist/contact/submission.d.ts.map +1 -0
- package/dist/contact/submission.js +166 -0
- package/dist/contact/submission.js.map +1 -0
- package/dist/content/document.d.ts +7 -2
- package/dist/content/document.d.ts.map +1 -1
- package/dist/content/document.js +1 -0
- package/dist/content/document.js.map +1 -1
- package/dist/content/index.d.ts +7 -2
- package/dist/content/index.d.ts.map +1 -1
- package/dist/content/index.js +4 -1
- package/dist/content/index.js.map +1 -1
- package/dist/content/markdown.d.ts.map +1 -1
- package/dist/content/markdown.js +24 -2
- package/dist/content/markdown.js.map +1 -1
- package/dist/content/parser.d.ts.map +1 -1
- package/dist/content/parser.js +11 -4
- package/dist/content/parser.js.map +1 -1
- package/dist/content/save.d.ts +5 -0
- package/dist/content/save.d.ts.map +1 -1
- package/dist/content/save.js +44 -1
- package/dist/content/save.js.map +1 -1
- package/dist/content/schedule.d.ts +125 -0
- package/dist/content/schedule.d.ts.map +1 -0
- package/dist/content/schedule.js +207 -0
- package/dist/content/schedule.js.map +1 -0
- package/dist/content/search.d.ts +64 -0
- package/dist/content/search.d.ts.map +1 -0
- package/dist/content/search.js +136 -0
- package/dist/content/search.js.map +1 -0
- package/dist/content/store.d.ts +220 -7
- package/dist/content/store.d.ts.map +1 -1
- package/dist/content/store.js +392 -67
- package/dist/content/store.js.map +1 -1
- package/dist/content/sync.d.ts +7 -1
- package/dist/content/sync.d.ts.map +1 -1
- package/dist/content/sync.js +18 -10
- package/dist/content/sync.js.map +1 -1
- package/dist/content/time.d.ts +56 -0
- package/dist/content/time.d.ts.map +1 -0
- package/dist/content/time.js +141 -0
- package/dist/content/time.js.map +1 -0
- package/dist/content/writer.d.ts.map +1 -1
- package/dist/content/writer.js +3 -0
- package/dist/content/writer.js.map +1 -1
- package/dist/env.d.ts +70 -5
- package/dist/env.d.ts.map +1 -1
- package/dist/federation/actor.d.ts +95 -41
- package/dist/federation/actor.d.ts.map +1 -1
- package/dist/federation/actor.js +180 -53
- package/dist/federation/actor.js.map +1 -1
- package/dist/federation/article.d.ts +44 -17
- package/dist/federation/article.d.ts.map +1 -1
- package/dist/federation/article.js +98 -46
- package/dist/federation/article.js.map +1 -1
- package/dist/federation/delivery.d.ts +63 -15
- package/dist/federation/delivery.d.ts.map +1 -1
- package/dist/federation/delivery.js +154 -80
- package/dist/federation/delivery.js.map +1 -1
- package/dist/federation/federation.d.ts +22 -17
- package/dist/federation/federation.d.ts.map +1 -1
- package/dist/federation/federation.js +98 -77
- package/dist/federation/federation.js.map +1 -1
- package/dist/federation/followers.d.ts +3 -2
- package/dist/federation/followers.d.ts.map +1 -1
- package/dist/federation/followers.js +6 -5
- package/dist/federation/followers.js.map +1 -1
- package/dist/federation/import-wordpress.d.ts +128 -0
- package/dist/federation/import-wordpress.d.ts.map +1 -0
- package/dist/federation/import-wordpress.js +426 -0
- package/dist/federation/import-wordpress.js.map +1 -0
- package/dist/federation/inbox.d.ts +36 -13
- package/dist/federation/inbox.d.ts.map +1 -1
- package/dist/federation/inbox.js +120 -49
- package/dist/federation/inbox.js.map +1 -1
- package/dist/federation/index.d.ts +22 -10
- package/dist/federation/index.d.ts.map +1 -1
- package/dist/federation/index.js +13 -8
- package/dist/federation/index.js.map +1 -1
- package/dist/federation/keys.d.ts +98 -20
- package/dist/federation/keys.d.ts.map +1 -1
- package/dist/federation/keys.js +269 -39
- package/dist/federation/keys.js.map +1 -1
- package/dist/federation/mount.d.ts +46 -10
- package/dist/federation/mount.d.ts.map +1 -1
- package/dist/federation/mount.js +300 -28
- package/dist/federation/mount.js.map +1 -1
- package/dist/federation/paths.d.ts +23 -35
- package/dist/federation/paths.d.ts.map +1 -1
- package/dist/federation/paths.js +26 -39
- package/dist/federation/paths.js.map +1 -1
- package/dist/federation/records.d.ts +223 -0
- package/dist/federation/records.d.ts.map +1 -0
- package/dist/federation/records.js +506 -0
- package/dist/federation/records.js.map +1 -0
- package/dist/federation/relays.d.ts +114 -0
- package/dist/federation/relays.d.ts.map +1 -0
- package/dist/federation/relays.js +290 -0
- package/dist/federation/relays.js.map +1 -0
- package/dist/federation/replies.d.ts +80 -0
- package/dist/federation/replies.d.ts.map +1 -0
- package/dist/federation/replies.js +166 -0
- package/dist/federation/replies.js.map +1 -0
- package/dist/federation/wordpress.d.ts +131 -0
- package/dist/federation/wordpress.d.ts.map +1 -0
- package/dist/federation/wordpress.js +341 -0
- package/dist/federation/wordpress.js.map +1 -0
- package/dist/files/atomic.d.ts +103 -0
- package/dist/files/atomic.d.ts.map +1 -0
- package/dist/files/atomic.js +150 -0
- package/dist/files/atomic.js.map +1 -0
- package/dist/files/index.d.ts +3 -0
- package/dist/files/index.d.ts.map +1 -0
- package/dist/files/index.js +2 -0
- package/dist/files/index.js.map +1 -0
- package/dist/forms/protection.d.ts +85 -0
- package/dist/forms/protection.d.ts.map +1 -0
- package/dist/forms/protection.js +116 -0
- package/dist/forms/protection.js.map +1 -0
- package/dist/images/icons.d.ts +59 -0
- package/dist/images/icons.d.ts.map +1 -0
- package/dist/images/icons.js +131 -0
- package/dist/images/icons.js.map +1 -0
- package/dist/images/index.d.ts +7 -0
- package/dist/images/index.d.ts.map +1 -0
- package/dist/images/index.js +4 -0
- package/dist/images/index.js.map +1 -0
- package/dist/images/markup.d.ts +47 -0
- package/dist/images/markup.d.ts.map +1 -0
- package/dist/images/markup.js +175 -0
- package/dist/images/markup.js.map +1 -0
- package/dist/images/paths.d.ts +34 -0
- package/dist/images/paths.d.ts.map +1 -0
- package/dist/images/paths.js +41 -0
- package/dist/images/paths.js.map +1 -0
- package/dist/images/variants.d.ts +104 -0
- package/dist/images/variants.d.ts.map +1 -0
- package/dist/images/variants.js +320 -0
- package/dist/images/variants.js.map +1 -0
- package/dist/index.d.ts +123 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +344 -25
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +18 -0
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +34 -3
- package/dist/init.js.map +1 -1
- package/dist/mail/brevo.d.ts +35 -0
- package/dist/mail/brevo.d.ts.map +1 -0
- package/dist/mail/brevo.js +85 -0
- package/dist/mail/brevo.js.map +1 -0
- package/dist/mail/credentials.d.ts +62 -0
- package/dist/mail/credentials.d.ts.map +1 -0
- package/dist/mail/credentials.js +86 -0
- package/dist/mail/credentials.js.map +1 -0
- package/dist/mail/index.d.ts +15 -0
- package/dist/mail/index.d.ts.map +1 -0
- package/dist/mail/index.js +8 -0
- package/dist/mail/index.js.map +1 -0
- package/dist/mail/memory.d.ts +35 -0
- package/dist/mail/memory.d.ts.map +1 -0
- package/dist/mail/memory.js +29 -0
- package/dist/mail/memory.js.map +1 -0
- package/dist/mail/provider.d.ts +80 -0
- package/dist/mail/provider.d.ts.map +1 -0
- package/dist/mail/provider.js +23 -0
- package/dist/mail/provider.js.map +1 -0
- package/dist/mail/service.d.ts +156 -0
- package/dist/mail/service.d.ts.map +1 -0
- package/dist/mail/service.js +265 -0
- package/dist/mail/service.js.map +1 -0
- package/dist/mail/smtp.d.ts +39 -0
- package/dist/mail/smtp.d.ts.map +1 -0
- package/dist/mail/smtp.js +58 -0
- package/dist/mail/smtp.js.map +1 -0
- package/dist/mail/templates.d.ts +91 -0
- package/dist/mail/templates.d.ts.map +1 -0
- package/dist/mail/templates.js +69 -0
- package/dist/mail/templates.js.map +1 -0
- package/dist/notifications/comments.d.ts +66 -0
- package/dist/notifications/comments.d.ts.map +1 -0
- package/dist/notifications/comments.js +151 -0
- package/dist/notifications/comments.js.map +1 -0
- package/dist/notifications/digest.d.ts +135 -0
- package/dist/notifications/digest.d.ts.map +1 -0
- package/dist/notifications/digest.js +287 -0
- package/dist/notifications/digest.js.map +1 -0
- package/dist/notifications/index.d.ts +13 -0
- package/dist/notifications/index.d.ts.map +1 -0
- package/dist/notifications/index.js +8 -0
- package/dist/notifications/index.js.map +1 -0
- package/dist/notifications/links.d.ts +60 -0
- package/dist/notifications/links.d.ts.map +1 -0
- package/dist/notifications/links.js +63 -0
- package/dist/notifications/links.js.map +1 -0
- package/dist/notifications/optouts.d.ts +48 -0
- package/dist/notifications/optouts.d.ts.map +1 -0
- package/dist/notifications/optouts.js +93 -0
- package/dist/notifications/optouts.js.map +1 -0
- package/dist/notifications/preferences.d.ts +158 -0
- package/dist/notifications/preferences.d.ts.map +1 -0
- package/dist/notifications/preferences.js +195 -0
- package/dist/notifications/preferences.js.map +1 -0
- package/dist/notifications/routes.d.ts +28 -0
- package/dist/notifications/routes.d.ts.map +1 -0
- package/dist/notifications/routes.js +184 -0
- package/dist/notifications/routes.js.map +1 -0
- package/dist/notifications/tokens.d.ts +60 -0
- package/dist/notifications/tokens.d.ts.map +1 -0
- package/dist/notifications/tokens.js +125 -0
- package/dist/notifications/tokens.js.map +1 -0
- package/dist/notify.d.ts +84 -0
- package/dist/notify.d.ts.map +1 -0
- package/dist/notify.js +149 -0
- package/dist/notify.js.map +1 -0
- package/dist/web/archive.d.ts +49 -0
- package/dist/web/archive.d.ts.map +1 -0
- package/dist/web/archive.js +59 -0
- package/dist/web/archive.js.map +1 -0
- package/dist/web/assets.d.ts +6 -5
- package/dist/web/assets.d.ts.map +1 -1
- package/dist/web/assets.js +5 -7
- package/dist/web/assets.js.map +1 -1
- package/dist/web/authors.d.ts +143 -0
- package/dist/web/authors.d.ts.map +1 -0
- package/dist/web/authors.js +178 -0
- package/dist/web/authors.js.map +1 -0
- package/dist/web/comments.d.ts +60 -0
- package/dist/web/comments.d.ts.map +1 -0
- package/dist/web/comments.js +207 -0
- package/dist/web/comments.js.map +1 -0
- package/dist/web/context.d.ts +162 -28
- package/dist/web/context.d.ts.map +1 -1
- package/dist/web/context.js +123 -26
- package/dist/web/context.js.map +1 -1
- package/dist/web/conversation.d.ts +209 -0
- package/dist/web/conversation.d.ts.map +1 -0
- package/dist/web/conversation.js +557 -0
- package/dist/web/conversation.js.map +1 -0
- package/dist/web/documents.d.ts +36 -6
- package/dist/web/documents.d.ts.map +1 -1
- package/dist/web/documents.js +52 -10
- package/dist/web/documents.js.map +1 -1
- package/dist/web/feed-atom.d.ts +22 -0
- package/dist/web/feed-atom.d.ts.map +1 -0
- package/dist/web/feed-atom.js +83 -0
- package/dist/web/feed-atom.js.map +1 -0
- package/dist/web/feed-item.d.ts +145 -0
- package/dist/web/feed-item.d.ts.map +1 -0
- package/dist/web/feed-item.js +120 -0
- package/dist/web/feed-item.js.map +1 -0
- package/dist/web/feed-json.d.ts +79 -0
- package/dist/web/feed-json.d.ts.map +1 -0
- package/dist/web/feed-json.js +53 -0
- package/dist/web/feed-json.js.map +1 -0
- package/dist/web/feed-rss.d.ts +26 -0
- package/dist/web/feed-rss.d.ts.map +1 -0
- package/dist/web/feed-rss.js +203 -0
- package/dist/web/feed-rss.js.map +1 -0
- package/dist/web/feed-source.d.ts +244 -0
- package/dist/web/feed-source.d.ts.map +1 -0
- package/dist/web/feed-source.js +201 -0
- package/dist/web/feed-source.js.map +1 -0
- package/dist/web/feed-xml.d.ts +63 -0
- package/dist/web/feed-xml.d.ts.map +1 -0
- package/dist/web/feed-xml.js +116 -0
- package/dist/web/feed-xml.js.map +1 -0
- package/dist/web/feeds.d.ts +31 -96
- package/dist/web/feeds.d.ts.map +1 -1
- package/dist/web/feeds.js +94 -198
- package/dist/web/feeds.js.map +1 -1
- package/dist/web/health.d.ts +31 -0
- package/dist/web/health.d.ts.map +1 -0
- package/dist/web/health.js +44 -0
- package/dist/web/health.js.map +1 -0
- package/dist/web/index.d.ts +30 -10
- package/dist/web/index.d.ts.map +1 -1
- package/dist/web/index.js +18 -7
- package/dist/web/index.js.map +1 -1
- package/dist/web/navigation.d.ts +195 -0
- package/dist/web/navigation.d.ts.map +1 -0
- package/dist/web/navigation.js +300 -0
- package/dist/web/navigation.js.map +1 -0
- package/dist/web/negotiate.d.ts +31 -0
- package/dist/web/negotiate.d.ts.map +1 -1
- package/dist/web/negotiate.js +31 -11
- package/dist/web/negotiate.js.map +1 -1
- package/dist/web/recent.d.ts +43 -0
- package/dist/web/recent.d.ts.map +1 -0
- package/dist/web/recent.js +37 -0
- package/dist/web/recent.js.map +1 -0
- package/dist/web/render.d.ts +203 -9
- package/dist/web/render.d.ts.map +1 -1
- package/dist/web/render.js +341 -17
- package/dist/web/render.js.map +1 -1
- package/dist/web/routes.d.ts +25 -8
- package/dist/web/routes.d.ts.map +1 -1
- package/dist/web/routes.js +854 -93
- package/dist/web/routes.js.map +1 -1
- package/dist/web/sanitize.d.ts +19 -0
- package/dist/web/sanitize.d.ts.map +1 -0
- package/dist/web/sanitize.js +272 -0
- package/dist/web/sanitize.js.map +1 -0
- package/dist/web/search.d.ts +79 -0
- package/dist/web/search.d.ts.map +1 -0
- package/dist/web/search.js +94 -0
- package/dist/web/search.js.map +1 -0
- package/dist/web/sitemap.d.ts +120 -0
- package/dist/web/sitemap.d.ts.map +1 -0
- package/dist/web/sitemap.js +199 -0
- package/dist/web/sitemap.js.map +1 -0
- package/dist/web/taxonomy.d.ts +152 -0
- package/dist/web/taxonomy.d.ts.map +1 -0
- package/dist/web/taxonomy.js +237 -0
- package/dist/web/taxonomy.js.map +1 -0
- package/dist/web/templates.d.ts +54 -16
- package/dist/web/templates.d.ts.map +1 -1
- package/dist/web/templates.js +109 -28
- package/dist/web/templates.js.map +1 -1
- package/dist/web/themes.d.ts +226 -0
- package/dist/web/themes.d.ts.map +1 -0
- package/dist/web/themes.js +314 -0
- package/dist/web/themes.js.map +1 -0
- package/dist/webmention/discovery.d.ts +51 -0
- package/dist/webmention/discovery.d.ts.map +1 -0
- package/dist/webmention/discovery.js +176 -0
- package/dist/webmention/discovery.js.map +1 -0
- package/dist/webmention/html.d.ts +71 -0
- package/dist/webmention/html.d.ts.map +1 -0
- package/dist/webmention/html.js +285 -0
- package/dist/webmention/html.js.map +1 -0
- package/dist/webmention/index.d.ts +12 -0
- package/dist/webmention/index.d.ts.map +1 -0
- package/dist/webmention/index.js +8 -0
- package/dist/webmention/index.js.map +1 -0
- package/dist/webmention/links.d.ts +18 -0
- package/dist/webmention/links.d.ts.map +1 -0
- package/dist/webmention/links.js +64 -0
- package/dist/webmention/links.js.map +1 -0
- package/dist/webmention/microformats.d.ts +93 -0
- package/dist/webmention/microformats.d.ts.map +1 -0
- package/dist/webmention/microformats.js +376 -0
- package/dist/webmention/microformats.js.map +1 -0
- package/dist/webmention/receive.d.ts +141 -0
- package/dist/webmention/receive.d.ts.map +1 -0
- package/dist/webmention/receive.js +264 -0
- package/dist/webmention/receive.js.map +1 -0
- package/dist/webmention/routes.d.ts +37 -0
- package/dist/webmention/routes.d.ts.map +1 -0
- package/dist/webmention/routes.js +75 -0
- package/dist/webmention/routes.js.map +1 -0
- package/dist/webmention/service.d.ts +94 -0
- package/dist/webmention/service.d.ts.map +1 -0
- package/dist/webmention/service.js +207 -0
- package/dist/webmention/service.js.map +1 -0
- package/package.json +11 -6
- package/templates/site/content/_data/site.json +8 -0
- package/templates/site/content/pages/about.md +7 -0
- package/templates/site/content/posts/2026-01-01-hello-world.md +5 -3
- package/templates/site/geekity.config.ts +11 -1
- package/templates/site/tsconfig.json +1 -1
- package/themes/default/README.md +1216 -50
- package/themes/default/layouts/404.njk +2 -3
- package/themes/default/layouts/author.njk +36 -0
- package/themes/default/layouts/base.njk +161 -31
- package/themes/default/layouts/category.njk +27 -0
- package/themes/default/layouts/front-page.njk +56 -0
- package/themes/default/layouts/home.njk +17 -1
- package/themes/default/layouts/page.njk +57 -5
- package/themes/default/layouts/post.njk +78 -19
- package/themes/default/layouts/search.njk +57 -0
- package/themes/default/layouts/tag.njk +3 -6
- package/themes/default/mail/comment-digest.html.njk +37 -0
- package/themes/default/mail/comment-digest.subject.njk +3 -0
- package/themes/default/mail/comment-digest.txt.njk +40 -0
- package/themes/default/mail/comment-pending.html.njk +27 -0
- package/themes/default/mail/comment-pending.subject.njk +2 -0
- package/themes/default/mail/comment-pending.txt.njk +24 -0
- package/themes/default/mail/comment-reply.html.njk +21 -0
- package/themes/default/mail/comment-reply.subject.njk +2 -0
- package/themes/default/mail/comment-reply.txt.njk +22 -0
- package/themes/default/mail/contact-message.html.njk +24 -0
- package/themes/default/mail/contact-message.subject.njk +5 -0
- package/themes/default/mail/contact-message.txt.njk +20 -0
- package/themes/default/mail/password-changed.html.njk +18 -0
- package/themes/default/mail/password-changed.subject.njk +2 -0
- package/themes/default/mail/password-changed.txt.njk +17 -0
- package/themes/default/mail/password-reset.html.njk +22 -0
- package/themes/default/mail/password-reset.subject.njk +2 -0
- package/themes/default/mail/password-reset.txt.njk +18 -0
- package/themes/default/mail/test.html.njk +14 -0
- package/themes/default/mail/test.subject.njk +2 -0
- package/themes/default/mail/test.txt.njk +12 -0
- package/themes/default/partials/archive.njk +27 -0
- package/themes/default/partials/bio.njk +71 -0
- package/themes/default/partials/comment-form.njk +137 -0
- package/themes/default/partials/contact-form.njk +88 -0
- package/themes/default/partials/conversation.njk +139 -0
- package/themes/default/partials/feeds.njk +26 -0
- package/themes/default/partials/jsonld.njk +120 -0
- package/themes/default/partials/menu.njk +32 -0
- package/themes/default/partials/pagination.njk +12 -6
- package/themes/default/partials/post-list.njk +51 -18
- package/themes/default/partials/search-form.njk +22 -0
- package/themes/default/partials/tags.njk +26 -5
- package/themes/default/static/highlight.js +4 -0
- package/themes/default/static/style.css +1142 -194
- package/themes/default/theme.json +9 -0
- package/admin/layouts/federation.njk +0 -145
- package/admin/layouts/login.njk +0 -23
- package/admin/layouts/settings.njk +0 -116
- package/admin/layouts/setup.njk +0 -27
- package/admin/layouts/users.njk +0 -91
- /package/admin/{layouts/_flash.njk → components/flash.njk} +0 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{# The HTML twin of the digest. Deliberately plain: a single column and almost
|
|
2
|
+
no styling is what survives the widest range of mail readers. #}
|
|
3
|
+
<p>{{ total }} comment{% if total != 1 %}s are{% else %} is{% endif %} waiting for you.</p>
|
|
4
|
+
|
|
5
|
+
{% for item in items %}
|
|
6
|
+
<hr />
|
|
7
|
+
<p>
|
|
8
|
+
{% if item.comment.source == 'webmention' %}A page linked to{% else %}A comment on{% endif %}
|
|
9
|
+
<a href="{{ item.post.url }}">{{ item.post.title }}</a>
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
<p>
|
|
13
|
+
<strong>{{ item.comment.author }}</strong>{% if item.comment.website %} — <a href="{{ item.comment.website }}" rel="nofollow ugc">{{ item.comment.website }}</a>{% endif %}<br />
|
|
14
|
+
{% if item.comment.url %}<a href="{{ item.comment.url }}" rel="nofollow ugc">{{ item.comment.url }}</a><br />{% endif %}
|
|
15
|
+
<span>{{ item.comment.submitted }}</span>
|
|
16
|
+
</p>
|
|
17
|
+
|
|
18
|
+
<blockquote>
|
|
19
|
+
{% if item.comment.html %}{{ item.comment.html | safe }}{% else %}<p>(nothing was said — it is a {{ item.comment.kind }})</p>{% endif %}
|
|
20
|
+
</blockquote>
|
|
21
|
+
|
|
22
|
+
<p>
|
|
23
|
+
{% for choice in item.actions %}<a href="{{ choice.url }}">{{ choice.label }}</a>{% if not loop.last %} · {% endif %}{% endfor %}
|
|
24
|
+
</p>
|
|
25
|
+
{% endfor %}
|
|
26
|
+
|
|
27
|
+
<hr />
|
|
28
|
+
|
|
29
|
+
{% if more %}<p>And {{ more }} more waiting, which <a href="{{ queueUrl }}">the queue</a> has.</p>{% endif %}
|
|
30
|
+
|
|
31
|
+
<p>
|
|
32
|
+
Each link works once and lasts a week. After that, the queue is at
|
|
33
|
+
<a href="{{ queueUrl }}">{{ queueUrl }}</a>. This is your
|
|
34
|
+
{% if mode == 'daily' %}daily{% else %}hourly{% endif %} digest; change it on the users screen.
|
|
35
|
+
</p>
|
|
36
|
+
|
|
37
|
+
<p>— {{ site.title }}</p>
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{# The plain text body of the digest: everything still waiting, each item with
|
|
2
|
+
its own three links. The links are the point of the message, exactly as they
|
|
3
|
+
are in comment-pending — each carries a signed token, works once, and lands
|
|
4
|
+
on a page with a button rather than acting on being opened. #}
|
|
5
|
+
{{ total }} comment{% if total != 1 %}s are{% else %} is{% endif %} waiting for you.
|
|
6
|
+
{% for item in items %}
|
|
7
|
+
|
|
8
|
+
--
|
|
9
|
+
{{ loop.index }}. {% if item.comment.source == 'webmention' %}A page linked to{% else %}A comment on{% endif %} “{{ item.post.title }}”
|
|
10
|
+
{{ item.post.url }}
|
|
11
|
+
|
|
12
|
+
From: {{ item.comment.author }}
|
|
13
|
+
{% if item.comment.website %}
|
|
14
|
+
Site: {{ item.comment.website }}
|
|
15
|
+
{% endif %}
|
|
16
|
+
{% if item.comment.url %}
|
|
17
|
+
Page: {{ item.comment.url }}
|
|
18
|
+
{% endif %}
|
|
19
|
+
When: {{ item.comment.submitted }}
|
|
20
|
+
|
|
21
|
+
{{ item.comment.text | trim if item.comment.text | trim else '(nothing was said — it is a ' + item.comment.kind + ')' }}
|
|
22
|
+
|
|
23
|
+
{% for choice in item.actions %}
|
|
24
|
+
{{ choice.label }}: {{ choice.url }}
|
|
25
|
+
{% endfor %}
|
|
26
|
+
{% endfor %}
|
|
27
|
+
|
|
28
|
+
--
|
|
29
|
+
{% if more %}
|
|
30
|
+
And {{ more }} more waiting, which the queue has:
|
|
31
|
+
{{ queueUrl }}
|
|
32
|
+
|
|
33
|
+
{% endif %}
|
|
34
|
+
Each link works once and lasts a week. After that, the queue is at
|
|
35
|
+
{{ queueUrl }}. This is your {% if mode == 'daily' %}daily{% else %}hourly{% endif %} digest;
|
|
36
|
+
you can change that on the users screen.
|
|
37
|
+
|
|
38
|
+
--
|
|
39
|
+
{{ site.title }}
|
|
40
|
+
{{ baseUrl }}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{# The HTML twin of the moderation notice. Deliberately plain: a single column
|
|
2
|
+
and almost no styling is what survives the widest range of mail readers. #}
|
|
3
|
+
<p>
|
|
4
|
+
{% if comment.source == 'webmention' %}A page has linked to{% else %}Somebody has commented on{% endif %}
|
|
5
|
+
<a href="{{ post.url }}">{{ post.title }}</a> and it is waiting for you.
|
|
6
|
+
</p>
|
|
7
|
+
|
|
8
|
+
<p>
|
|
9
|
+
<strong>{{ comment.author }}</strong>{% if comment.website %} — <a href="{{ comment.website }}" rel="nofollow ugc">{{ comment.website }}</a>{% endif %}<br />
|
|
10
|
+
{% if comment.url %}<a href="{{ comment.url }}" rel="nofollow ugc">{{ comment.url }}</a><br />{% endif %}
|
|
11
|
+
<span>{{ comment.submitted }}</span>
|
|
12
|
+
</p>
|
|
13
|
+
|
|
14
|
+
<blockquote>
|
|
15
|
+
{% if comment.html %}{{ comment.html | safe }}{% else %}<p>(nothing was said — it is a {{ comment.kind }})</p>{% endif %}
|
|
16
|
+
</blockquote>
|
|
17
|
+
|
|
18
|
+
<p>
|
|
19
|
+
{% for choice in actions %}<a href="{{ choice.url }}">{{ choice.label }}</a>{% if not loop.last %} · {% endif %}{% endfor %}
|
|
20
|
+
</p>
|
|
21
|
+
|
|
22
|
+
<p>
|
|
23
|
+
Each link works once and lasts a week. After that, the queue is at
|
|
24
|
+
<a href="{{ queueUrl }}">{{ queueUrl }}</a>.
|
|
25
|
+
</p>
|
|
26
|
+
|
|
27
|
+
<p>— {{ site.title }}</p>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{# The plain text body of the moderation notice. The three links are the point
|
|
2
|
+
of the whole message: each carries a signed token, works once, and lands on
|
|
3
|
+
a page with a button rather than acting on being opened, so that a mail
|
|
4
|
+
scanner following links cannot moderate this site. #}
|
|
5
|
+
{% if comment.source == 'webmention' %}A page has linked to{% else %}Somebody has commented on{% endif %} “{{ post.title }}” and it is waiting for you.
|
|
6
|
+
|
|
7
|
+
{{ post.url }}
|
|
8
|
+
|
|
9
|
+
From: {{ comment.author }}{% if comment.website %}
|
|
10
|
+
Site: {{ comment.website }}{% endif %}{% if comment.url %}
|
|
11
|
+
Page: {{ comment.url }}{% endif %}
|
|
12
|
+
When: {{ comment.submitted }}
|
|
13
|
+
|
|
14
|
+
{{ comment.text | trim if comment.text | trim else '(nothing was said — it is a ' + comment.kind + ')' }}
|
|
15
|
+
|
|
16
|
+
--
|
|
17
|
+
{% for choice in actions %}{{ choice.label }}: {{ choice.url }}
|
|
18
|
+
{% endfor %}
|
|
19
|
+
Each link works once and lasts a week. After that, the queue is at
|
|
20
|
+
{{ queueUrl }}.
|
|
21
|
+
|
|
22
|
+
--
|
|
23
|
+
{{ site.title }}
|
|
24
|
+
{{ baseUrl }}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{# The HTML twin of the reply notice. Deliberately plain, like the rest. #}
|
|
2
|
+
<p>
|
|
3
|
+
<strong>{{ reply.author }}</strong> has replied to your comment on
|
|
4
|
+
<a href="{{ post.url }}">{{ post.title }}</a>.
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
<blockquote>{{ reply.html | safe }}</blockquote>
|
|
8
|
+
|
|
9
|
+
<p><a href="{{ reply.url }}">Read it on the page</a></p>
|
|
10
|
+
|
|
11
|
+
<p>You wrote:</p>
|
|
12
|
+
|
|
13
|
+
<blockquote>{{ comment.html | safe }}</blockquote>
|
|
14
|
+
|
|
15
|
+
<p>
|
|
16
|
+
You asked to hear about replies when you commented.
|
|
17
|
+
<a href="{{ unsubscribeUrl }}">Stop these messages</a> — your comment stays
|
|
18
|
+
where it is.
|
|
19
|
+
</p>
|
|
20
|
+
|
|
21
|
+
<p>— {{ site.title }}</p>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{# The plain text body of the reply notice. It goes only when the reply has
|
|
2
|
+
been approved, and only to somebody who ticked the box when they commented.
|
|
3
|
+
The unsubscribe link is signed, needs no login, and stops every message of
|
|
4
|
+
this kind to this address. #}
|
|
5
|
+
{{ reply.author }} has replied to your comment on “{{ post.title }}”.
|
|
6
|
+
|
|
7
|
+
{{ reply.url }}
|
|
8
|
+
|
|
9
|
+
{{ reply.text | trim }}
|
|
10
|
+
|
|
11
|
+
You wrote:
|
|
12
|
+
|
|
13
|
+
{{ comment.text | trim }}
|
|
14
|
+
|
|
15
|
+
--
|
|
16
|
+
You asked to hear about replies when you commented. To stop, open
|
|
17
|
+
{{ unsubscribeUrl }}
|
|
18
|
+
and press the button. Your comment stays where it is.
|
|
19
|
+
|
|
20
|
+
--
|
|
21
|
+
{{ site.title }}
|
|
22
|
+
{{ baseUrl }}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{# The HTML twin of a contact message. Deliberately plain: a single column and
|
|
2
|
+
almost no styling is what survives the widest range of mail readers. The
|
|
3
|
+
message itself is printed rather than rendered — it is plain text, and
|
|
4
|
+
nothing a stranger typed is turned into markup here. #}
|
|
5
|
+
<p>
|
|
6
|
+
<strong>{{ from.name }}</strong> <<a href="mailto:{{ from.email }}">{{ from.email }}</a>>
|
|
7
|
+
wrote to you from <a href="{{ page.url }}">{{ page.title }}</a>.
|
|
8
|
+
</p>
|
|
9
|
+
|
|
10
|
+
<p>
|
|
11
|
+
<span>{{ message.received }}</span>
|
|
12
|
+
{% if message.subject %}<br /><strong>{{ message.subject }}</strong>{% endif %}
|
|
13
|
+
</p>
|
|
14
|
+
|
|
15
|
+
<blockquote>
|
|
16
|
+
<p style="white-space: pre-wrap;">{{ message.text }}</p>
|
|
17
|
+
</blockquote>
|
|
18
|
+
|
|
19
|
+
<p>
|
|
20
|
+
Reply to this message and it goes straight back to {{ from.email }}.
|
|
21
|
+
Every message is kept at <a href="{{ messagesUrl }}">{{ messagesUrl }}</a>.
|
|
22
|
+
</p>
|
|
23
|
+
|
|
24
|
+
<p>— {{ site.title }}</p>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
{# The subject of a message from the contact form. One line.
|
|
2
|
+
|
|
3
|
+
The sender's own subject when they gave one, because that is what the person
|
|
4
|
+
reading their mail wants to see in a list; their name when they did not. #}
|
|
5
|
+
{% if message.subject %}{{ message.subject }}{% else %}A message from {{ from.name }}{% endif %}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{# The plain text body of a message from the contact form.
|
|
2
|
+
|
|
3
|
+
Reply-to is the sender, so answering this is a Reply in whatever reads it.
|
|
4
|
+
The message is quoted as it was typed: it is plain text and is never
|
|
5
|
+
rendered as anything else. #}
|
|
6
|
+
{{ from.name }} <{{ from.email }}> wrote to you from {{ page.title }}.
|
|
7
|
+
|
|
8
|
+
{{ page.url }}
|
|
9
|
+
When: {{ message.received }}
|
|
10
|
+
{% if message.subject %}Subject: {{ message.subject }}
|
|
11
|
+
{% endif %}
|
|
12
|
+
{{ message.text }}
|
|
13
|
+
|
|
14
|
+
--
|
|
15
|
+
Reply to this message and it goes straight back to {{ from.email }}.
|
|
16
|
+
Every message is kept at {{ messagesUrl }}.
|
|
17
|
+
|
|
18
|
+
--
|
|
19
|
+
{{ site.title }}
|
|
20
|
+
{{ baseUrl }}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{# The HTML twin of the confirmation. No link back in, on purpose. #}
|
|
2
|
+
<p>Hello {{ username }},</p>
|
|
3
|
+
|
|
4
|
+
<p>
|
|
5
|
+
The password for <strong>{{ username }}</strong> on {{ site.title }} has just
|
|
6
|
+
been set through a reset link.{% if signedOut %} Every browser that was signed in as {{ username }} was signed out.{% endif %}
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
<p>If that was you, there is nothing to do.</p>
|
|
10
|
+
|
|
11
|
+
<p>
|
|
12
|
+
If it was not, somebody has your email and your account. Sign in at
|
|
13
|
+
<a href="{{ baseUrl }}/admin/login">{{ baseUrl }}/admin/login</a> with the new
|
|
14
|
+
password if you have it, and ask whoever runs this site to look at the account
|
|
15
|
+
if you do not.
|
|
16
|
+
</p>
|
|
17
|
+
|
|
18
|
+
<p>— {{ site.title }}</p>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{# The plain text body of the confirmation. It carries no link and no token:
|
|
2
|
+
it is a notice, and a notice that could let somebody in would be a second
|
|
3
|
+
reset link nobody asked for. #}
|
|
4
|
+
Hello {{ username }},
|
|
5
|
+
|
|
6
|
+
The password for {{ username }} on {{ site.title }} has just been set through a
|
|
7
|
+
reset link.{% if signedOut %} Every browser that was signed in as {{ username }} was signed out.{% endif %}
|
|
8
|
+
|
|
9
|
+
If that was you, there is nothing to do.
|
|
10
|
+
|
|
11
|
+
If it was not, somebody has your email and your account. Sign in at
|
|
12
|
+
{{ baseUrl }}/admin/login with the new password if you have it, and ask whoever
|
|
13
|
+
runs this site to look at the account if you do not.
|
|
14
|
+
|
|
15
|
+
--
|
|
16
|
+
{{ site.title }}
|
|
17
|
+
{{ baseUrl }}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{# The HTML twin of the password reset message. Deliberately plain: a single
|
|
2
|
+
column and no styling is what survives the widest range of mail readers. #}
|
|
3
|
+
<p>Hello {{ username }},</p>
|
|
4
|
+
|
|
5
|
+
<p>
|
|
6
|
+
Somebody asked to set a new password for <strong>{{ username }}</strong> on
|
|
7
|
+
{{ site.title }}. If it was you, open this link:
|
|
8
|
+
</p>
|
|
9
|
+
|
|
10
|
+
<p><a href="{{ resetUrl }}">{{ resetUrl }}</a></p>
|
|
11
|
+
|
|
12
|
+
<p>
|
|
13
|
+
It lasts {{ expiresInHours }} hour{% if expiresInHours != 1 %}s{% endif %} and works once. Once you have used it,
|
|
14
|
+
every browser signed in as {{ username }} is signed out.
|
|
15
|
+
</p>
|
|
16
|
+
|
|
17
|
+
<p>
|
|
18
|
+
If it was not you, nothing has happened and you can ignore this message. Your
|
|
19
|
+
password has not changed, and nobody can change it without this link.
|
|
20
|
+
</p>
|
|
21
|
+
|
|
22
|
+
<p>— {{ site.title }}</p>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{# The plain text body of the password reset message. The link is the secret:
|
|
2
|
+
it is the whole of what proves the reader owns this address. #}
|
|
3
|
+
Hello {{ username }},
|
|
4
|
+
|
|
5
|
+
Somebody asked to set a new password for {{ username }} on {{ site.title }}.
|
|
6
|
+
If it was you, open this link:
|
|
7
|
+
|
|
8
|
+
{{ resetUrl }}
|
|
9
|
+
|
|
10
|
+
It lasts {{ expiresInHours }} hour{% if expiresInHours != 1 %}s{% endif %} and works once. Once you have used it, every
|
|
11
|
+
browser signed in as {{ username }} is signed out.
|
|
12
|
+
|
|
13
|
+
If it was not you, nothing has happened and you can ignore this message. Your
|
|
14
|
+
password has not changed, and nobody can change it without this link.
|
|
15
|
+
|
|
16
|
+
--
|
|
17
|
+
{{ site.title }}
|
|
18
|
+
{{ baseUrl }}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{# The HTML twin of the test message. Deliberately plain: inline styles and a
|
|
2
|
+
single column are what survives the widest range of mail readers, and a
|
|
3
|
+
message this simple has nothing to gain from more. #}
|
|
4
|
+
<p>This is a test message from <strong>{{ site.title }}</strong>.</p>
|
|
5
|
+
|
|
6
|
+
<p>
|
|
7
|
+
If you are reading it, <a href="{{ baseUrl }}">{{ baseUrl }}</a> can send
|
|
8
|
+
email, and the password resets, moderation notices and contact messages that
|
|
9
|
+
go through the same service will arrive as well.
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
<p>Nothing was sent to anybody else, and nothing about this message was stored.</p>
|
|
13
|
+
|
|
14
|
+
<p>— {{ site.title }}</p>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{# The plain text body of the test message. Every message has one of these. #}
|
|
2
|
+
This is a test message from {{ site.title }}.
|
|
3
|
+
|
|
4
|
+
If you are reading it, {{ baseUrl }} can send email, and the password resets,
|
|
5
|
+
moderation notices and contact messages that go through the same service will
|
|
6
|
+
arrive as well.
|
|
7
|
+
|
|
8
|
+
Nothing was sent to anybody else, and nothing about this message was stored.
|
|
9
|
+
|
|
10
|
+
--
|
|
11
|
+
{{ site.title }}
|
|
12
|
+
{{ baseUrl }}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{#
|
|
2
|
+
Everything the site has published, month by month: the source design's
|
|
3
|
+
essays page (decision-16, TASK-85).
|
|
4
|
+
|
|
5
|
+
`archiveMonths` is on the context only when a page's front matter says
|
|
6
|
+
`archive: true`, so including this is the whole of it. Each month is a
|
|
7
|
+
heading over an `ol.list-none` of links, newest month first and newest post
|
|
8
|
+
first inside it; which month a post belongs to is the CMS's answer rather
|
|
9
|
+
than this file's, because a date is an instant and the month it falls in
|
|
10
|
+
depends on the site's timezone (decision-11).
|
|
11
|
+
|
|
12
|
+
No dates and no excerpts: the page is a way of finding one piece of writing
|
|
13
|
+
among hundreds, and a summary under each of them would make it a listing
|
|
14
|
+
rather than an index.
|
|
15
|
+
#}
|
|
16
|
+
{% if archiveMonths.length %}
|
|
17
|
+
<section class="archive">
|
|
18
|
+
{% for group in archiveMonths %}
|
|
19
|
+
<h2>{{ group.month }}</h2>
|
|
20
|
+
<ol class="list-none">
|
|
21
|
+
{% for entry in group.posts %}
|
|
22
|
+
<li><a href="{{ entry.url | url }}"><span>{{ entry.title }}</span></a></li>
|
|
23
|
+
{% endfor %}
|
|
24
|
+
</ol>
|
|
25
|
+
{% endfor %}
|
|
26
|
+
</section>
|
|
27
|
+
{% endif %}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{#
|
|
2
|
+
Who the page in front of the reader is by: the `p-author h-card` the source
|
|
3
|
+
design puts in an entry's footer (decision-16, TASK-83).
|
|
4
|
+
|
|
5
|
+
It replaces `partials/byline.njk`, which printed a name in a meta line. This
|
|
6
|
+
is the whole credit — a round photo, "Written by" linked to their archive
|
|
7
|
+
with `rel="author me"`, what they do, where they are, what they wrote about
|
|
8
|
+
themselves and the links they call their own.
|
|
9
|
+
|
|
10
|
+
The person and only the person (TASK-105). The site menu used to be printed
|
|
11
|
+
here as well, because the design had no header navigation; it is in
|
|
12
|
+
`header.global-header` on every page now, so this card says nothing about
|
|
13
|
+
the site and a reader looking for the way around never has to find the bio
|
|
14
|
+
first.
|
|
15
|
+
|
|
16
|
+
Set `bioAuthor` before including it and nothing renders when that is absent:
|
|
17
|
+
|
|
18
|
+
{% set bioAuthor = author %}
|
|
19
|
+
{% include "partials/bio.njk" %}
|
|
20
|
+
|
|
21
|
+
`bioAuthor` is one of the profile objects the context carries — `author` on a
|
|
22
|
+
post, `siteAuthor` on a page, the archive's person on an author archive — so
|
|
23
|
+
what a reader sees and what `partials/jsonld.njk` says come from one record
|
|
24
|
+
and cannot drift. Every field but `name` is optional: a profile with nothing
|
|
25
|
+
in it prints a name and nothing else, and a name this site has no account for
|
|
26
|
+
is printed unlinked, because the file still said somebody wrote this.
|
|
27
|
+
|
|
28
|
+
`bioLead` is what the line opens with, "Written by" unless a layout says
|
|
29
|
+
otherwise. An author archive sets "Posts by", because the card there heads a
|
|
30
|
+
list of somebody's writing rather than crediting one piece of it.
|
|
31
|
+
|
|
32
|
+
The `p-note` and the `rel="me"` links are printed wherever the card is, which
|
|
33
|
+
is what `bioProfile` used to ask for on an author archive alone. An entry
|
|
34
|
+
left that switch unset because the page footer carried the site's identity
|
|
35
|
+
links; it carries nobody's now, so somebody's links belong under what they
|
|
36
|
+
wrote rather than one page further on.
|
|
37
|
+
#}
|
|
38
|
+
{% if bioAuthor %}
|
|
39
|
+
<div class="bio p-author h-card">
|
|
40
|
+
{%- if bioAuthor.avatar %}
|
|
41
|
+
<div class="bio-avatar">
|
|
42
|
+
<img class="u-photo" src="{{ bioAuthor.avatar | url }}" alt="{{ bioAuthor.name }}" width="50" height="50">
|
|
43
|
+
</div>
|
|
44
|
+
{%- endif %}
|
|
45
|
+
|
|
46
|
+
<div>
|
|
47
|
+
<p>
|
|
48
|
+
{{ bioLead | default("Written by") }}
|
|
49
|
+
{%- if bioAuthor.url %}
|
|
50
|
+
<a class="u-url p-name" rel="author me" href="{{ bioAuthor.url | url }}">{{ bioAuthor.name }}</a>
|
|
51
|
+
{%- else %}
|
|
52
|
+
<strong class="p-name">{{ bioAuthor.name }}</strong>
|
|
53
|
+
{%- endif %}
|
|
54
|
+
{%- if bioAuthor.jobTitle %}, a <span class="p-job-title">{{ bioAuthor.jobTitle }}</span>{% endif %}
|
|
55
|
+
{%- if bioAuthor.location %} from <span class="p-locality">{{ bioAuthor.location }}</span>{% endif %}.
|
|
56
|
+
</p>
|
|
57
|
+
|
|
58
|
+
{%- if bioAuthor.bio %}
|
|
59
|
+
<p class="bio-note p-note">{{ bioAuthor.bio }}</p>
|
|
60
|
+
{%- endif %}
|
|
61
|
+
|
|
62
|
+
{%- if bioAuthor.links.length %}
|
|
63
|
+
<ul class="hlist bio-links">
|
|
64
|
+
{%- for link in bioAuthor.links %}
|
|
65
|
+
<li><a class="u-url" rel="me" href="{{ link.href }}">{{ link.label }}</a></li>
|
|
66
|
+
{%- endfor %}
|
|
67
|
+
</ul>
|
|
68
|
+
{%- endif %}
|
|
69
|
+
</div>
|
|
70
|
+
</div>
|
|
71
|
+
{% endif %}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
{#
|
|
2
|
+
The form under a post that is still taking comments.
|
|
3
|
+
|
|
4
|
+
`commentForm` is on the context only when the post is open — the site switch,
|
|
5
|
+
the closing window and the post's own `comments:` front matter all agree
|
|
6
|
+
before it gets here — so a layout asks `{% if commentForm %}` and nothing
|
|
7
|
+
else. A site replaces this whole section with a
|
|
8
|
+
`partials/comment-form.njk` of its own in the theme it wears; the shape it is
|
|
9
|
+
handed is documented in the theme README under "The comment form".
|
|
10
|
+
|
|
11
|
+
`comment-respond` and `comment-reply-title` are the source design's names for
|
|
12
|
+
a form under a post and its heading (decision-16), and the stylesheet styles
|
|
13
|
+
every label, field and button through them — so the contact form wears the
|
|
14
|
+
same class rather than repeating the rules.
|
|
15
|
+
|
|
16
|
+
It draws two forms. For a stranger: the name, email and website boxes, the
|
|
17
|
+
honeypot and the loaded-at stamp. For somebody signed in to this site's
|
|
18
|
+
admin — `commentForm.signedInAs` — none of those, because the site already
|
|
19
|
+
knows all three and a session is better evidence than a honeypot, and a
|
|
20
|
+
hidden CSRF token instead, because this form posts under somebody's name.
|
|
21
|
+
A theme that replaces this partial has to draw both.
|
|
22
|
+
|
|
23
|
+
It works with JavaScript switched off, and there is no script on it.
|
|
24
|
+
#}
|
|
25
|
+
<section class="comment-respond" id="respond">
|
|
26
|
+
<h2 class="comment-reply-title">Leave a comment</h2>
|
|
27
|
+
|
|
28
|
+
{% if commentNotice %}
|
|
29
|
+
<p class="comment-notice" role="status">{{ commentNotice }}</p>
|
|
30
|
+
{% endif %}
|
|
31
|
+
|
|
32
|
+
{% if commentForm.error %}
|
|
33
|
+
<p class="comment-error" role="alert">{{ commentForm.error }}</p>
|
|
34
|
+
{% endif %}
|
|
35
|
+
|
|
36
|
+
<form method="post" action="{{ commentForm.action }}">
|
|
37
|
+
<input type="hidden" name="{{ commentForm.fields.post }}" value="{{ commentForm.post }}" />
|
|
38
|
+
{#
|
|
39
|
+
What this comment answers. `commentReplyTo` is the `?reply_to=` on the
|
|
40
|
+
URL, which a Reply link put there and the CMS has already checked names
|
|
41
|
+
an approved comment on this very post; otherwise it is whatever a refused
|
|
42
|
+
submission carried.
|
|
43
|
+
#}
|
|
44
|
+
{% set replyTo = commentReplyTo if commentReplyTo else commentForm.values.inReplyTo %}
|
|
45
|
+
<input type="hidden" name="{{ commentForm.fields.inReplyTo }}" value="{{ replyTo }}" />
|
|
46
|
+
|
|
47
|
+
{% if commentReplyingTo %}
|
|
48
|
+
<p class="comment-replying-to">
|
|
49
|
+
Replying to {{ commentReplyingTo }}.
|
|
50
|
+
<a href="{{ page.url }}#respond">Comment on the post instead</a>
|
|
51
|
+
</p>
|
|
52
|
+
{% endif %}
|
|
53
|
+
|
|
54
|
+
{% if commentForm.signedInAs %}
|
|
55
|
+
{#
|
|
56
|
+
Signed in to this site. The comment is attributed from the account, so
|
|
57
|
+
there is nothing to type and nothing to get wrong; the token is what
|
|
58
|
+
stops a page on another site posting under this name without them
|
|
59
|
+
knowing.
|
|
60
|
+
#}
|
|
61
|
+
<input type="hidden" name="{{ commentForm.fields.csrf }}" value="{{ commentForm.csrfToken }}" />
|
|
62
|
+
|
|
63
|
+
<p class="comment-signed-in">
|
|
64
|
+
Commenting as <a href="{{ commentForm.signedInAs.url }}">{{ commentForm.signedInAs.name }}</a>.
|
|
65
|
+
</p>
|
|
66
|
+
{% else %}
|
|
67
|
+
{#
|
|
68
|
+
When this form was drawn, which is what the minimum submit time is
|
|
69
|
+
measured against. A signed-in form carries none: a session says more
|
|
70
|
+
about whether this is a person than a stopwatch does.
|
|
71
|
+
#}
|
|
72
|
+
<input type="hidden" name="{{ commentForm.fields.loaded }}" value="{{ commentForm.loaded }}" />
|
|
73
|
+
|
|
74
|
+
{#
|
|
75
|
+
The honeypot. Hidden from sight and from assistive technology, out of the
|
|
76
|
+
tab order, and told not to autofill: a person never sees it and never
|
|
77
|
+
fills it in, so anything that does is not a person.
|
|
78
|
+
#}
|
|
79
|
+
<div class="comment-trap" aria-hidden="true">
|
|
80
|
+
<label for="comment-website">Website</label>
|
|
81
|
+
<input id="comment-website" name="{{ commentForm.fields.trap }}" type="text" tabindex="-1" autocomplete="off" value="" />
|
|
82
|
+
</div>
|
|
83
|
+
|
|
84
|
+
<p class="comment-field">
|
|
85
|
+
<label for="comment-name">Name</label>
|
|
86
|
+
<input id="comment-name" name="{{ commentForm.fields.name }}" type="text" value="{{ commentForm.values.name }}" maxlength="{{ commentForm.nameLength }}" autocomplete="name" required />
|
|
87
|
+
{% if commentForm.problems.name %}
|
|
88
|
+
<span class="comment-field-error">{{ commentForm.problems.name }}</span>
|
|
89
|
+
{% endif %}
|
|
90
|
+
</p>
|
|
91
|
+
|
|
92
|
+
<p class="comment-field">
|
|
93
|
+
<label for="comment-email">Email <span class="comment-optional">(optional, never shown)</span></label>
|
|
94
|
+
<input id="comment-email" name="{{ commentForm.fields.email }}" type="email" value="{{ commentForm.values.email }}" autocomplete="email" />
|
|
95
|
+
{% if commentForm.problems.email %}
|
|
96
|
+
<span class="comment-field-error">{{ commentForm.problems.email }}</span>
|
|
97
|
+
{% endif %}
|
|
98
|
+
</p>
|
|
99
|
+
|
|
100
|
+
<p class="comment-field">
|
|
101
|
+
<label for="comment-url">Your site <span class="comment-optional">(optional)</span></label>
|
|
102
|
+
<input id="comment-url" name="{{ commentForm.fields.url }}" type="text" inputmode="url" value="{{ commentForm.values.url }}" autocomplete="url" />
|
|
103
|
+
{% if commentForm.problems.url %}
|
|
104
|
+
<span class="comment-field-error">{{ commentForm.problems.url }}</span>
|
|
105
|
+
{% endif %}
|
|
106
|
+
</p>
|
|
107
|
+
{% endif %}
|
|
108
|
+
|
|
109
|
+
<p class="comment-field">
|
|
110
|
+
<label for="comment-body">Comment</label>
|
|
111
|
+
<textarea id="comment-body" name="{{ commentForm.fields.body }}" rows="6" maxlength="{{ commentForm.bodyLength }}" required>{{ commentForm.values.body }}</textarea>
|
|
112
|
+
{% if commentForm.problems.body %}
|
|
113
|
+
<span class="comment-field-error">{{ commentForm.problems.body }}</span>
|
|
114
|
+
{% endif %}
|
|
115
|
+
<span class="comment-hint">Markdown works. Links are marked <code>nofollow ugc</code>; HTML is not.</span>
|
|
116
|
+
</p>
|
|
117
|
+
|
|
118
|
+
{#
|
|
119
|
+
"Tell me about replies". Only on a site that can actually send mail —
|
|
120
|
+
`notifiable` is false otherwise — because a box that promised a message
|
|
121
|
+
nothing would ever send would be a lie on a form. The address is the one
|
|
122
|
+
typed above — or the account's, for somebody signed in — is never shown
|
|
123
|
+
anywhere, and every message it sends carries a one-click unsubscribe
|
|
124
|
+
link.
|
|
125
|
+
#}
|
|
126
|
+
{% if commentForm.notifiable %}
|
|
127
|
+
<p class="comment-check">
|
|
128
|
+
<input id="comment-notify" name="{{ commentForm.fields.notify }}" type="checkbox" value="1"{% if commentForm.values.notify %} checked{% endif %} />
|
|
129
|
+
<label for="comment-notify">Email me when somebody replies to this</label>
|
|
130
|
+
</p>
|
|
131
|
+
{% endif %}
|
|
132
|
+
|
|
133
|
+
<p class="form-submit">
|
|
134
|
+
<button type="submit">Post comment</button>
|
|
135
|
+
</p>
|
|
136
|
+
</form>
|
|
137
|
+
</section>
|