@geekity/cms 0.31.0 → 0.32.1
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/admin/components/badge.njk +4 -0
- package/admin/components/fields.njk +41 -24
- package/admin/components/job-status.njk +45 -0
- package/admin/components/setting-fields.njk +38 -0
- package/admin/layouts/settings-page.njk +16 -0
- package/admin/pages/comments/all.njk +1 -2
- package/admin/pages/documents/editor.njk +17 -15
- package/admin/pages/documents/syndication.njk +4 -4
- package/admin/pages/federation/followers.njk +56 -6
- package/admin/pages/federation/settings.njk +1 -1
- package/admin/pages/media/library.njk +52 -3
- package/admin/pages/navigation/menus.njk +2 -2
- package/admin/pages/plugins/screen.njk +5 -46
- package/admin/pages/settings/discussion.njk +76 -47
- package/admin/pages/settings/email.njk +75 -47
- package/admin/pages/settings/general.njk +15 -15
- package/admin/pages/settings/permalinks.njk +8 -8
- package/admin/pages/settings/privacy.njk +6 -6
- package/admin/pages/settings/reading.njk +36 -36
- package/admin/pages/tools/dev-mode.njk +29 -3
- package/admin/pages/tools/export.njk +89 -0
- package/admin/pages/tools/maintenance.njk +51 -0
- package/admin/pages/users/apps.njk +2 -2
- package/admin/pages/users/edit.njk +3 -3
- package/admin/pages/users/new.njk +2 -2
- package/admin/static/admin.css +80 -0
- package/dist/admin/app-activity.d.ts.map +1 -1
- package/dist/admin/app-activity.js +2 -3
- package/dist/admin/app-activity.js.map +1 -1
- package/dist/admin/appearance.d.ts +1 -5
- package/dist/admin/appearance.d.ts.map +1 -1
- package/dist/admin/appearance.js +9 -16
- package/dist/admin/appearance.js.map +1 -1
- package/dist/admin/comments.d.ts.map +1 -1
- package/dist/admin/comments.js +2 -3
- package/dist/admin/comments.js.map +1 -1
- package/dist/admin/confirm-password.d.ts +4 -0
- package/dist/admin/confirm-password.d.ts.map +1 -0
- package/dist/admin/confirm-password.js +11 -0
- package/dist/admin/confirm-password.js.map +1 -0
- package/dist/admin/connected-apps.d.ts.map +1 -1
- package/dist/admin/connected-apps.js +17 -22
- package/dist/admin/connected-apps.js.map +1 -1
- package/dist/admin/dev-mode.d.ts.map +1 -1
- package/dist/admin/dev-mode.js +35 -10
- package/dist/admin/dev-mode.js.map +1 -1
- package/dist/admin/documents.d.ts.map +1 -1
- package/dist/admin/documents.js +22 -10
- package/dist/admin/documents.js.map +1 -1
- package/dist/admin/editor-actions.d.ts.map +1 -1
- package/dist/admin/editor-actions.js +1 -2
- package/dist/admin/editor-actions.js.map +1 -1
- package/dist/admin/editor-layout.js +1 -1
- package/dist/admin/editor-layout.js.map +1 -1
- package/dist/admin/export.d.ts +10 -0
- package/dist/admin/export.d.ts.map +1 -0
- package/dist/admin/export.js +72 -0
- package/dist/admin/export.js.map +1 -0
- package/dist/admin/federation.d.ts +7 -14
- package/dist/admin/federation.d.ts.map +1 -1
- package/dist/admin/federation.js +48 -94
- package/dist/admin/federation.js.map +1 -1
- package/dist/admin/index.d.ts +2 -5
- package/dist/admin/index.d.ts.map +1 -1
- package/dist/admin/index.js +2 -4
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/indieauth-consent.d.ts.map +1 -1
- package/dist/admin/indieauth-consent.js +5 -7
- package/dist/admin/indieauth-consent.js.map +1 -1
- package/dist/admin/job-status.d.ts +25 -0
- package/dist/admin/job-status.d.ts.map +1 -0
- package/dist/admin/job-status.js +53 -0
- package/dist/admin/job-status.js.map +1 -0
- package/dist/admin/legacy-migrations.d.ts.map +1 -1
- package/dist/admin/legacy-migrations.js +7 -6
- package/dist/admin/legacy-migrations.js.map +1 -1
- package/dist/admin/maintenance.d.ts +9 -0
- package/dist/admin/maintenance.d.ts.map +1 -0
- package/dist/admin/maintenance.js +42 -0
- package/dist/admin/maintenance.js.map +1 -0
- package/dist/admin/media.d.ts +4 -1
- package/dist/admin/media.d.ts.map +1 -1
- package/dist/admin/media.js +16 -1
- package/dist/admin/media.js.map +1 -1
- package/dist/admin/menu.d.ts.map +1 -1
- package/dist/admin/menu.js +4 -0
- package/dist/admin/menu.js.map +1 -1
- package/dist/admin/messages.d.ts.map +1 -1
- package/dist/admin/messages.js +2 -3
- package/dist/admin/messages.js.map +1 -1
- package/dist/admin/navigation.d.ts.map +1 -1
- package/dist/admin/navigation.js +27 -23
- package/dist/admin/navigation.js.map +1 -1
- package/dist/admin/plugins.d.ts.map +1 -1
- package/dist/admin/plugins.js +19 -66
- package/dist/admin/plugins.js.map +1 -1
- package/dist/admin/preview.d.ts.map +1 -1
- package/dist/admin/preview.js +5 -6
- package/dist/admin/preview.js.map +1 -1
- package/dist/admin/recovery.js +2 -2
- package/dist/admin/recovery.js.map +1 -1
- package/dist/admin/routes.d.ts.map +1 -1
- package/dist/admin/routes.js +6 -3
- package/dist/admin/routes.js.map +1 -1
- package/dist/admin/setting-overrides.d.ts +4 -0
- package/dist/admin/setting-overrides.d.ts.map +1 -0
- package/dist/admin/setting-overrides.js +24 -0
- package/dist/admin/setting-overrides.js.map +1 -0
- package/dist/admin/settings-discussion.d.ts +6 -4
- package/dist/admin/settings-discussion.d.ts.map +1 -1
- package/dist/admin/settings-discussion.js +75 -45
- package/dist/admin/settings-discussion.js.map +1 -1
- package/dist/admin/settings-email.d.ts +11 -8
- package/dist/admin/settings-email.d.ts.map +1 -1
- package/dist/admin/settings-email.js +88 -77
- package/dist/admin/settings-email.js.map +1 -1
- package/dist/admin/settings-federation.d.ts +0 -7
- package/dist/admin/settings-federation.d.ts.map +1 -1
- package/dist/admin/settings-federation.js +0 -36
- package/dist/admin/settings-federation.js.map +1 -1
- package/dist/admin/settings-fields.d.ts +32 -0
- package/dist/admin/settings-fields.d.ts.map +1 -0
- package/dist/admin/settings-fields.js +368 -0
- package/dist/admin/settings-fields.js.map +1 -0
- package/dist/admin/settings-general.d.ts.map +1 -1
- package/dist/admin/settings-general.js +10 -19
- package/dist/admin/settings-general.js.map +1 -1
- package/dist/admin/settings-page.d.ts +3 -29
- package/dist/admin/settings-page.d.ts.map +1 -1
- package/dist/admin/settings-page.js +38 -53
- package/dist/admin/settings-page.js.map +1 -1
- package/dist/admin/settings-permalinks.js +2 -2
- package/dist/admin/settings-permalinks.js.map +1 -1
- package/dist/admin/settings-privacy.js +1 -1
- package/dist/admin/settings-privacy.js.map +1 -1
- package/dist/admin/settings-reading.js +13 -13
- package/dist/admin/settings-reading.js.map +1 -1
- package/dist/admin/settings-renderer.d.ts +32 -0
- package/dist/admin/settings-renderer.d.ts.map +1 -0
- package/dist/admin/settings-renderer.js +79 -0
- package/dist/admin/settings-renderer.js.map +1 -0
- package/dist/admin/site-setting-edit.d.ts +4 -0
- package/dist/admin/site-setting-edit.d.ts.map +1 -0
- package/dist/admin/site-setting-edit.js +20 -0
- package/dist/admin/site-setting-edit.js.map +1 -0
- package/dist/admin/taxonomy.d.ts.map +1 -1
- package/dist/admin/taxonomy.js +10 -19
- package/dist/admin/taxonomy.js.map +1 -1
- package/dist/admin/templates.d.ts +2 -0
- package/dist/admin/templates.d.ts.map +1 -1
- package/dist/admin/templates.js +2 -0
- package/dist/admin/templates.js.map +1 -1
- package/dist/admin/users.js +1 -1
- package/dist/admin/users.js.map +1 -1
- package/dist/avatars/avatars.d.ts +0 -2
- package/dist/avatars/avatars.d.ts.map +1 -1
- package/dist/avatars/avatars.js +9 -10
- package/dist/avatars/avatars.js.map +1 -1
- package/dist/avatars/index.d.ts +1 -1
- package/dist/avatars/index.d.ts.map +1 -1
- package/dist/avatars/index.js +1 -1
- package/dist/avatars/index.js.map +1 -1
- package/dist/cache.d.ts +0 -2
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +2 -4
- package/dist/cache.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +500 -86
- package/dist/cli.js.map +1 -1
- package/dist/cms/app.d.ts +1 -1
- package/dist/cms/app.d.ts.map +1 -1
- package/dist/cms/app.js +13 -2
- package/dist/cms/app.js.map +1 -1
- package/dist/cms/boot.d.ts +12 -0
- package/dist/cms/boot.d.ts.map +1 -1
- package/dist/cms/boot.js +43 -17
- package/dist/cms/boot.js.map +1 -1
- package/dist/cms/create.d.ts +24 -0
- package/dist/cms/create.d.ts.map +1 -1
- package/dist/cms/create.js +14 -0
- package/dist/cms/create.js.map +1 -1
- package/dist/cms/services.d.ts +3 -1
- package/dist/cms/services.d.ts.map +1 -1
- package/dist/cms/services.js +83 -26
- package/dist/cms/services.js.map +1 -1
- package/dist/cms/site-records.d.ts.map +1 -1
- package/dist/cms/site-records.js +0 -2
- package/dist/cms/site-records.js.map +1 -1
- package/dist/comments/akismet.d.ts +13 -46
- package/dist/comments/akismet.d.ts.map +1 -1
- package/dist/comments/akismet.js +29 -68
- package/dist/comments/akismet.js.map +1 -1
- package/dist/comments/conversation.d.ts +14 -8
- package/dist/comments/conversation.d.ts.map +1 -1
- package/dist/comments/conversation.js.map +1 -1
- package/dist/comments/index.d.ts +4 -4
- package/dist/comments/index.d.ts.map +1 -1
- package/dist/comments/index.js +3 -3
- package/dist/comments/index.js.map +1 -1
- package/dist/comments/policy.d.ts +23 -26
- package/dist/comments/policy.d.ts.map +1 -1
- package/dist/comments/policy.js +13 -20
- package/dist/comments/policy.js.map +1 -1
- package/dist/comments/records.d.ts +0 -2
- package/dist/comments/records.d.ts.map +1 -1
- package/dist/comments/records.js +2 -3
- package/dist/comments/records.js.map +1 -1
- package/dist/comments/reply-notices.d.ts +5 -6
- package/dist/comments/reply-notices.d.ts.map +1 -1
- package/dist/comments/reply-notices.js +27 -15
- package/dist/comments/reply-notices.js.map +1 -1
- package/dist/comments/reply-post.d.ts.map +1 -1
- package/dist/comments/reply-post.js +2 -3
- package/dist/comments/reply-post.js.map +1 -1
- package/dist/comments/submission.d.ts +0 -2
- package/dist/comments/submission.d.ts.map +1 -1
- package/dist/comments/submission.js +1 -3
- package/dist/comments/submission.js.map +1 -1
- package/dist/config-loader.d.ts.map +1 -1
- package/dist/config-loader.js +2 -1
- package/dist/config-loader.js.map +1 -1
- package/dist/config.d.ts +27 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +5 -1
- package/dist/config.js.map +1 -1
- package/dist/contact/delivery.d.ts +2 -4
- package/dist/contact/delivery.d.ts.map +1 -1
- package/dist/contact/delivery.js +1 -2
- package/dist/contact/delivery.js.map +1 -1
- package/dist/contact/index.d.ts +1 -1
- package/dist/contact/index.d.ts.map +1 -1
- package/dist/contact/index.js +1 -1
- package/dist/contact/index.js.map +1 -1
- package/dist/contact/records.d.ts +0 -2
- package/dist/contact/records.d.ts.map +1 -1
- package/dist/contact/records.js +3 -5
- package/dist/contact/records.js.map +1 -1
- package/dist/content/citation.d.ts +1 -0
- package/dist/content/citation.d.ts.map +1 -1
- package/dist/content/citation.js.map +1 -1
- package/dist/content/document-form.d.ts +3 -1
- package/dist/content/document-form.d.ts.map +1 -1
- package/dist/content/document-form.js.map +1 -1
- package/dist/content/enclosure-form.d.ts.map +1 -1
- package/dist/content/enclosure-form.js +5 -6
- package/dist/content/enclosure-form.js.map +1 -1
- package/dist/content/excerpt.d.ts +1 -0
- package/dist/content/excerpt.d.ts.map +1 -1
- package/dist/content/excerpt.js +3 -0
- package/dist/content/excerpt.js.map +1 -1
- package/dist/content/index.d.ts +3 -3
- package/dist/content/index.d.ts.map +1 -1
- package/dist/content/index.js +2 -2
- package/dist/content/index.js.map +1 -1
- package/dist/content/kept-properties.d.ts +0 -1
- package/dist/content/kept-properties.d.ts.map +1 -1
- package/dist/content/kept-properties.js +2 -2
- package/dist/content/kept-properties.js.map +1 -1
- package/dist/content/locations.d.ts +0 -1
- package/dist/content/locations.d.ts.map +1 -1
- package/dist/content/locations.js +2 -2
- package/dist/content/locations.js.map +1 -1
- package/dist/content/media.d.ts +7 -0
- package/dist/content/media.d.ts.map +1 -1
- package/dist/content/media.js +12 -1
- package/dist/content/media.js.map +1 -1
- package/dist/content/metadata/strip-job.d.ts +16 -0
- package/dist/content/metadata/strip-job.d.ts.map +1 -0
- package/dist/content/metadata/strip-job.js +24 -0
- package/dist/content/metadata/strip-job.js.map +1 -0
- package/dist/content/metadata/sweep.d.ts +13 -1
- package/dist/content/metadata/sweep.d.ts.map +1 -1
- package/dist/content/metadata/sweep.js +47 -25
- package/dist/content/metadata/sweep.js.map +1 -1
- package/dist/content/permalink-file.d.ts +2 -1
- package/dist/content/permalink-file.d.ts.map +1 -1
- package/dist/content/permalink-file.js +3 -3
- package/dist/content/permalink-file.js.map +1 -1
- package/dist/content/photo-form.d.ts +1 -0
- package/dist/content/photo-form.d.ts.map +1 -1
- package/dist/content/photo-form.js +8 -5
- package/dist/content/photo-form.js.map +1 -1
- package/dist/content/photo.d.ts +1 -0
- package/dist/content/photo.d.ts.map +1 -1
- package/dist/content/photo.js +1 -1
- package/dist/content/photo.js.map +1 -1
- package/dist/content/post-fields.d.ts.map +1 -1
- package/dist/content/post-fields.js +5 -9
- package/dist/content/post-fields.js.map +1 -1
- package/dist/content/read-form.d.ts +10 -3
- package/dist/content/read-form.d.ts.map +1 -1
- package/dist/content/read-form.js +67 -9
- package/dist/content/read-form.js.map +1 -1
- package/dist/content/read.d.ts +9 -2
- package/dist/content/read.d.ts.map +1 -1
- package/dist/content/read.js +22 -3
- package/dist/content/read.js.map +1 -1
- package/dist/content/store.d.ts +0 -1
- package/dist/content/store.d.ts.map +1 -1
- package/dist/content/store.js +0 -1
- package/dist/content/store.js.map +1 -1
- package/dist/content/uploads.d.ts +1 -1
- package/dist/content/uploads.d.ts.map +1 -1
- package/dist/content/uploads.js +6 -1
- package/dist/content/uploads.js.map +1 -1
- package/dist/content/write.d.ts +1 -1
- package/dist/content/write.d.ts.map +1 -1
- package/dist/content/write.js +7 -3
- package/dist/content/write.js.map +1 -1
- package/dist/dev-mode.d.ts +4 -26
- package/dist/dev-mode.d.ts.map +1 -1
- package/dist/dev-mode.js +4 -53
- package/dist/dev-mode.js.map +1 -1
- package/dist/export/export-archives.d.ts +29 -0
- package/dist/export/export-archives.d.ts.map +1 -0
- package/dist/export/export-archives.js +88 -0
- package/dist/export/export-archives.js.map +1 -0
- package/dist/export/export-job.d.ts +21 -0
- package/dist/export/export-job.d.ts.map +1 -0
- package/dist/export/export-job.js +63 -0
- package/dist/export/export-job.js.map +1 -0
- package/dist/export/site-export.d.ts +101 -0
- package/dist/export/site-export.d.ts.map +1 -0
- package/dist/export/site-export.js +243 -0
- package/dist/export/site-export.js.map +1 -0
- package/dist/export/site-import.d.ts +75 -0
- package/dist/export/site-import.d.ts.map +1 -0
- package/dist/export/site-import.js +492 -0
- package/dist/export/site-import.js.map +1 -0
- package/dist/exports.d.ts +9 -4
- package/dist/exports.d.ts.map +1 -1
- package/dist/exports.js +3 -1
- package/dist/exports.js.map +1 -1
- package/dist/federation/article.d.ts +5 -11
- package/dist/federation/article.d.ts.map +1 -1
- package/dist/federation/article.js +67 -35
- package/dist/federation/article.js.map +1 -1
- package/dist/federation/backfill.d.ts +3 -1
- package/dist/federation/backfill.d.ts.map +1 -1
- package/dist/federation/backfill.js +5 -3
- package/dist/federation/backfill.js.map +1 -1
- package/dist/federation/cited-post.d.ts +1 -1
- package/dist/federation/cited-post.d.ts.map +1 -1
- package/dist/federation/cited-post.js +1 -1
- package/dist/federation/cited-post.js.map +1 -1
- package/dist/federation/delivery.d.ts +5 -2
- package/dist/federation/delivery.d.ts.map +1 -1
- package/dist/federation/delivery.js +30 -14
- package/dist/federation/delivery.js.map +1 -1
- package/dist/federation/federation.d.ts +7 -7
- package/dist/federation/federation.d.ts.map +1 -1
- package/dist/federation/federation.js +6 -13
- package/dist/federation/federation.js.map +1 -1
- package/dist/federation/handles.d.ts +1 -1
- package/dist/federation/handles.d.ts.map +1 -1
- package/dist/federation/handles.js +1 -1
- package/dist/federation/handles.js.map +1 -1
- package/dist/federation/inbox.d.ts.map +1 -1
- package/dist/federation/inbox.js +5 -8
- package/dist/federation/inbox.js.map +1 -1
- package/dist/federation/index.d.ts +1 -0
- package/dist/federation/index.d.ts.map +1 -1
- package/dist/federation/index.js +1 -0
- package/dist/federation/index.js.map +1 -1
- package/dist/federation/keys.js +3 -3
- package/dist/federation/keys.js.map +1 -1
- package/dist/federation/object-ids.d.ts +50 -0
- package/dist/federation/object-ids.d.ts.map +1 -0
- package/dist/federation/object-ids.js +134 -0
- package/dist/federation/object-ids.js.map +1 -0
- package/dist/federation/profiles.d.ts +1 -1
- package/dist/federation/profiles.d.ts.map +1 -1
- package/dist/federation/profiles.js +1 -1
- package/dist/federation/profiles.js.map +1 -1
- package/dist/federation/queue.d.ts +32 -17
- package/dist/federation/queue.d.ts.map +1 -1
- package/dist/federation/queue.js +173 -39
- package/dist/federation/queue.js.map +1 -1
- package/dist/federation/relays.d.ts +6 -2
- package/dist/federation/relays.d.ts.map +1 -1
- package/dist/federation/relays.js +43 -36
- package/dist/federation/relays.js.map +1 -1
- package/dist/federation/resend-job.d.ts +44 -0
- package/dist/federation/resend-job.d.ts.map +1 -0
- package/dist/federation/resend-job.js +59 -0
- package/dist/federation/resend-job.js.map +1 -0
- package/dist/files/atomic.d.ts +9 -0
- package/dist/files/atomic.d.ts.map +1 -1
- package/dist/files/atomic.js +1 -1
- package/dist/files/atomic.js.map +1 -1
- package/dist/files/data-files.d.ts +104 -0
- package/dist/files/data-files.d.ts.map +1 -0
- package/dist/files/data-files.js +330 -0
- package/dist/files/data-files.js.map +1 -0
- package/dist/files/export-archives.d.ts +12 -0
- package/dist/files/export-archives.d.ts.map +1 -0
- package/dist/files/export-archives.js +67 -0
- package/dist/files/export-archives.js.map +1 -0
- package/dist/files/static-files.d.ts.map +1 -1
- package/dist/files/static-files.js +7 -22
- package/dist/files/static-files.js.map +1 -1
- package/dist/files/tar.d.ts +29 -0
- package/dist/files/tar.d.ts.map +1 -0
- package/dist/files/tar.js +206 -0
- package/dist/files/tar.js.map +1 -0
- package/dist/files/upload-types.d.ts +81 -0
- package/dist/files/upload-types.d.ts.map +1 -0
- package/dist/files/upload-types.js +234 -0
- package/dist/files/upload-types.js.map +1 -0
- package/dist/forms/protection.d.ts +0 -8
- package/dist/forms/protection.d.ts.map +1 -1
- package/dist/forms/protection.js +2 -10
- package/dist/forms/protection.js.map +1 -1
- package/dist/images/icons.d.ts.map +1 -1
- package/dist/images/icons.js +2 -0
- package/dist/images/icons.js.map +1 -1
- package/dist/images/index.d.ts +1 -1
- package/dist/images/index.d.ts.map +1 -1
- package/dist/images/index.js +1 -1
- package/dist/images/index.js.map +1 -1
- package/dist/images/markup.d.ts +4 -1
- package/dist/images/markup.d.ts.map +1 -1
- package/dist/images/markup.js +10 -6
- package/dist/images/markup.js.map +1 -1
- package/dist/images/paths.d.ts +1 -4
- package/dist/images/paths.d.ts.map +1 -1
- package/dist/images/paths.js +6 -12
- package/dist/images/paths.js.map +1 -1
- package/dist/images/variants.d.ts +4 -2
- package/dist/images/variants.d.ts.map +1 -1
- package/dist/images/variants.js +21 -21
- package/dist/images/variants.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/indexnow.d.ts +4 -2
- package/dist/indexnow.d.ts.map +1 -1
- package/dist/indexnow.js +32 -20
- package/dist/indexnow.js.map +1 -1
- package/dist/indieauth/tokens.d.ts +0 -2
- package/dist/indieauth/tokens.d.ts.map +1 -1
- package/dist/indieauth/tokens.js +2 -4
- package/dist/indieauth/tokens.js.map +1 -1
- package/dist/jobs/file-records.d.ts +13 -0
- package/dist/jobs/file-records.d.ts.map +1 -0
- package/dist/jobs/file-records.js +104 -0
- package/dist/jobs/file-records.js.map +1 -0
- package/dist/jobs/in-process.d.ts +10 -0
- package/dist/jobs/in-process.d.ts.map +1 -0
- package/dist/jobs/in-process.js +45 -0
- package/dist/jobs/in-process.js.map +1 -0
- package/dist/jobs/lock-file.d.ts +13 -0
- package/dist/jobs/lock-file.d.ts.map +1 -0
- package/dist/jobs/lock-file.js +107 -0
- package/dist/jobs/lock-file.js.map +1 -0
- package/dist/jobs/processes.d.ts +11 -0
- package/dist/jobs/processes.d.ts.map +1 -0
- package/dist/jobs/processes.js +50 -0
- package/dist/jobs/processes.js.map +1 -0
- package/dist/jobs/queue.d.ts +18 -0
- package/dist/jobs/queue.d.ts.map +1 -0
- package/dist/jobs/queue.js +220 -0
- package/dist/jobs/queue.js.map +1 -0
- package/dist/jobs/types.d.ts +159 -0
- package/dist/jobs/types.d.ts.map +1 -0
- package/dist/jobs/types.js +22 -0
- package/dist/jobs/types.js.map +1 -0
- package/dist/mail/index.d.ts +0 -2
- package/dist/mail/index.d.ts.map +1 -1
- package/dist/mail/index.js +0 -1
- package/dist/mail/index.js.map +1 -1
- package/dist/maintenance.d.ts +5 -42
- package/dist/maintenance.d.ts.map +1 -1
- package/dist/maintenance.js +4 -67
- package/dist/maintenance.js.map +1 -1
- package/dist/media/library.d.ts +1 -1
- package/dist/media/library.d.ts.map +1 -1
- package/dist/media/library.js +4 -1
- package/dist/media/library.js.map +1 -1
- package/dist/media/uploads.d.ts +1 -1
- package/dist/media/uploads.d.ts.map +1 -1
- package/dist/media/uploads.js +1 -1
- package/dist/media/uploads.js.map +1 -1
- package/dist/micropub/endpoint.js +10 -10
- package/dist/micropub/endpoint.js.map +1 -1
- package/dist/micropub/media.d.ts +0 -2
- package/dist/micropub/media.d.ts.map +1 -1
- package/dist/micropub/media.js +5 -7
- package/dist/micropub/media.js.map +1 -1
- package/dist/notifications/comments.d.ts +4 -2
- package/dist/notifications/comments.d.ts.map +1 -1
- package/dist/notifications/comments.js +77 -65
- package/dist/notifications/comments.js.map +1 -1
- package/dist/notifications/digest.d.ts +2 -4
- package/dist/notifications/digest.d.ts.map +1 -1
- package/dist/notifications/digest.js +9 -10
- package/dist/notifications/digest.js.map +1 -1
- package/dist/notifications/index.d.ts +3 -3
- package/dist/notifications/index.d.ts.map +1 -1
- package/dist/notifications/index.js +3 -3
- package/dist/notifications/index.js.map +1 -1
- package/dist/notifications/mail-service.d.ts +10 -8
- package/dist/notifications/mail-service.d.ts.map +1 -1
- package/dist/notifications/mail-service.js +70 -70
- package/dist/notifications/mail-service.js.map +1 -1
- package/dist/notifications/optouts.d.ts +0 -2
- package/dist/notifications/optouts.d.ts.map +1 -1
- package/dist/notifications/optouts.js +2 -4
- package/dist/notifications/optouts.js.map +1 -1
- package/dist/notifications/tokens.d.ts +0 -2
- package/dist/notifications/tokens.d.ts.map +1 -1
- package/dist/notifications/tokens.js +2 -28
- package/dist/notifications/tokens.js.map +1 -1
- package/dist/notify.d.ts +4 -2
- package/dist/notify.d.ts.map +1 -1
- package/dist/notify.js +27 -15
- package/dist/notify.js.map +1 -1
- package/dist/plugin.d.ts +36 -16
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +1 -1
- package/dist/plugin.js.map +1 -1
- package/dist/plugins/changes.d.ts +0 -1
- package/dist/plugins/changes.d.ts.map +1 -1
- package/dist/plugins/changes.js +2 -3
- package/dist/plugins/changes.js.map +1 -1
- package/dist/plugins/data.d.ts +19 -0
- package/dist/plugins/data.d.ts.map +1 -0
- package/dist/plugins/data.js +117 -0
- package/dist/plugins/data.js.map +1 -0
- package/dist/plugins/enabled.d.ts +1 -13
- package/dist/plugins/enabled.d.ts.map +1 -1
- package/dist/plugins/enabled.js +11 -23
- package/dist/plugins/enabled.js.map +1 -1
- package/dist/plugins/install.d.ts +1 -1
- package/dist/plugins/install.d.ts.map +1 -1
- package/dist/plugins/install.js +7 -42
- package/dist/plugins/install.js.map +1 -1
- package/dist/plugins/migrate-settings.d.ts +7 -0
- package/dist/plugins/migrate-settings.d.ts.map +1 -0
- package/dist/plugins/migrate-settings.js +41 -0
- package/dist/plugins/migrate-settings.js.map +1 -0
- package/dist/plugins/registry.d.ts +10 -14
- package/dist/plugins/registry.d.ts.map +1 -1
- package/dist/plugins/registry.js +56 -36
- package/dist/plugins/registry.js.map +1 -1
- package/dist/plugins/settings.d.ts +5 -57
- package/dist/plugins/settings.d.ts.map +1 -1
- package/dist/plugins/settings.js +47 -180
- package/dist/plugins/settings.js.map +1 -1
- package/dist/plugins/site.d.ts +2 -1
- package/dist/plugins/site.d.ts.map +1 -1
- package/dist/plugins/site.js +5 -5
- package/dist/plugins/site.js.map +1 -1
- package/dist/privacy/retention.d.ts +4 -0
- package/dist/privacy/retention.d.ts.map +1 -1
- package/dist/privacy/retention.js +12 -5
- package/dist/privacy/retention.js.map +1 -1
- package/dist/settings/akismet.d.ts +9 -0
- package/dist/settings/akismet.d.ts.map +1 -0
- package/dist/settings/akismet.js +46 -0
- package/dist/settings/akismet.js.map +1 -0
- package/dist/settings/declare.d.ts +15 -0
- package/dist/settings/declare.d.ts.map +1 -0
- package/dist/settings/declare.js +20 -0
- package/dist/settings/declare.js.map +1 -0
- package/dist/settings/dev-mode.d.ts +29 -0
- package/dist/settings/dev-mode.d.ts.map +1 -0
- package/dist/settings/dev-mode.js +77 -0
- package/dist/settings/dev-mode.js.map +1 -0
- package/dist/settings/kinds.d.ts +13 -0
- package/dist/settings/kinds.d.ts.map +1 -0
- package/dist/settings/kinds.js +108 -0
- package/dist/settings/kinds.js.map +1 -0
- package/dist/settings/mail.d.ts +10 -0
- package/dist/settings/mail.d.ts.map +1 -0
- package/dist/settings/mail.js +92 -0
- package/dist/settings/mail.js.map +1 -0
- package/dist/settings/maintenance.d.ts +6 -0
- package/dist/settings/maintenance.d.ts.map +1 -0
- package/dist/settings/maintenance.js +33 -0
- package/dist/settings/maintenance.js.map +1 -0
- package/dist/settings/names.d.ts +7 -0
- package/dist/settings/names.d.ts.map +1 -0
- package/dist/settings/names.js +31 -0
- package/dist/settings/names.js.map +1 -0
- package/dist/settings/presence.d.ts +2 -0
- package/dist/settings/presence.d.ts.map +1 -0
- package/dist/settings/presence.js +7 -0
- package/dist/settings/presence.js.map +1 -0
- package/dist/settings/registry.d.ts +14 -0
- package/dist/settings/registry.d.ts.map +1 -0
- package/dist/settings/registry.js +369 -0
- package/dist/settings/registry.js.map +1 -0
- package/dist/settings/types.d.ts +176 -0
- package/dist/settings/types.d.ts.map +1 -0
- package/dist/settings/types.js +2 -0
- package/dist/settings/types.js.map +1 -0
- package/dist/site/namespace.d.ts +88 -0
- package/dist/site/namespace.d.ts.map +1 -0
- package/dist/site/namespace.js +471 -0
- package/dist/site/namespace.js.map +1 -0
- package/dist/site/setting-rows.d.ts +9 -10
- package/dist/site/setting-rows.d.ts.map +1 -1
- package/dist/site/setting-rows.js +109 -228
- package/dist/site/setting-rows.js.map +1 -1
- package/dist/site/settings-form.d.ts.map +1 -1
- package/dist/site/settings-form.js +6 -10
- package/dist/site/settings-form.js.map +1 -1
- package/dist/site/settings.d.ts +6 -322
- package/dist/site/settings.d.ts.map +1 -1
- package/dist/site/settings.js +13 -76
- package/dist/site/settings.js.map +1 -1
- package/dist/site/site-json.d.ts +0 -31
- package/dist/site/site-json.d.ts.map +1 -1
- package/dist/site/site-json.js +5 -49
- package/dist/site/site-json.js.map +1 -1
- package/dist/site/users.d.ts +0 -9
- package/dist/site/users.d.ts.map +1 -1
- package/dist/site/users.js +2 -11
- package/dist/site/users.js.map +1 -1
- package/dist/store/deliveries.d.ts +2 -0
- package/dist/store/deliveries.d.ts.map +1 -1
- package/dist/store/deliveries.js +7 -0
- package/dist/store/deliveries.js.map +1 -1
- package/dist/store/queue-database.d.ts +11 -0
- package/dist/store/queue-database.d.ts.map +1 -0
- package/dist/store/queue-database.js +39 -0
- package/dist/store/queue-database.js.map +1 -0
- package/dist/supervisor/control.d.ts +1 -0
- package/dist/supervisor/control.d.ts.map +1 -1
- package/dist/supervisor/control.js +10 -0
- package/dist/supervisor/control.js.map +1 -1
- package/dist/supervisor/primary.d.ts.map +1 -1
- package/dist/supervisor/primary.js +15 -3
- package/dist/supervisor/primary.js.map +1 -1
- package/dist/testing.d.ts +1 -1
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +1 -1
- package/dist/testing.js.map +1 -1
- package/dist/theme/site-data.d.ts +1 -1
- package/dist/theme/site-data.d.ts.map +1 -1
- package/dist/theme/site-data.js.map +1 -1
- package/dist/web/asset-routes.d.ts +6 -2
- package/dist/web/asset-routes.d.ts.map +1 -1
- package/dist/web/asset-routes.js +12 -4
- package/dist/web/asset-routes.js.map +1 -1
- package/dist/web/comment-routes.d.ts.map +1 -1
- package/dist/web/comment-routes.js +4 -4
- package/dist/web/comment-routes.js.map +1 -1
- package/dist/web/contact-routes.js +1 -1
- package/dist/web/contact-routes.js.map +1 -1
- package/dist/web/context.d.ts +5 -0
- package/dist/web/context.d.ts.map +1 -1
- package/dist/web/context.js +9 -4
- package/dist/web/context.js.map +1 -1
- package/dist/web/conversation.d.ts +1 -1
- package/dist/web/conversation.d.ts.map +1 -1
- package/dist/web/conversation.js +59 -43
- package/dist/web/conversation.js.map +1 -1
- package/dist/web/document-page.d.ts.map +1 -1
- package/dist/web/document-page.js +5 -4
- package/dist/web/document-page.js.map +1 -1
- package/dist/web/document-site.d.ts +1 -1
- package/dist/web/document-site.d.ts.map +1 -1
- package/dist/web/document-site.js +2 -1
- package/dist/web/document-site.js.map +1 -1
- package/dist/web/embed.js +1 -1
- package/dist/web/embed.js.map +1 -1
- package/dist/web/env.d.ts +9 -0
- package/dist/web/env.d.ts.map +1 -1
- package/dist/web/federation-routes.d.ts.map +1 -1
- package/dist/web/federation-routes.js +5 -2
- package/dist/web/federation-routes.js.map +1 -1
- package/dist/web/feed-item.js +1 -1
- package/dist/web/feed-item.js.map +1 -1
- package/dist/web/feed-routes.d.ts +3 -4
- package/dist/web/feed-routes.d.ts.map +1 -1
- package/dist/web/feed-routes.js +17 -15
- package/dist/web/feed-routes.js.map +1 -1
- package/dist/web/health.js +1 -1
- package/dist/web/health.js.map +1 -1
- package/dist/web/index.d.ts +1 -1
- package/dist/web/index.d.ts.map +1 -1
- package/dist/web/index.js.map +1 -1
- package/dist/web/indieauth-activity-log.d.ts +0 -2
- package/dist/web/indieauth-activity-log.d.ts.map +1 -1
- package/dist/web/indieauth-activity-log.js +2 -4
- package/dist/web/indieauth-activity-log.js.map +1 -1
- package/dist/web/indieauth-bearer.js +2 -2
- package/dist/web/indieauth-bearer.js.map +1 -1
- package/dist/web/indieauth-discovery.d.ts +0 -4
- package/dist/web/indieauth-discovery.d.ts.map +1 -1
- package/dist/web/indieauth-discovery.js +3 -10
- package/dist/web/indieauth-discovery.js.map +1 -1
- package/dist/web/indieauth-token.d.ts.map +1 -1
- package/dist/web/indieauth-token.js +3 -3
- package/dist/web/indieauth-token.js.map +1 -1
- package/dist/web/listing-pages.d.ts.map +1 -1
- package/dist/web/listing-pages.js +1 -2
- package/dist/web/listing-pages.js.map +1 -1
- package/dist/web/maintenance.js +3 -3
- package/dist/web/maintenance.js.map +1 -1
- package/dist/web/page-sources.d.ts +1 -2
- package/dist/web/page-sources.d.ts.map +1 -1
- package/dist/web/page-sources.js +6 -7
- package/dist/web/page-sources.js.map +1 -1
- package/dist/web/paths.js +1 -1
- package/dist/web/paths.js.map +1 -1
- package/dist/web/pingback-routes.d.ts.map +1 -1
- package/dist/web/pingback-routes.js +3 -3
- package/dist/web/pingback-routes.js.map +1 -1
- package/dist/web/plugin-federation.js +50 -40
- package/dist/web/plugin-federation.js.map +1 -1
- package/dist/web/render.d.ts +12 -5
- package/dist/web/render.d.ts.map +1 -1
- package/dist/web/render.js +36 -22
- package/dist/web/render.js.map +1 -1
- package/dist/web/request.js +1 -1
- package/dist/web/request.js.map +1 -1
- package/dist/web/routes.d.ts.map +1 -1
- package/dist/web/routes.js +8 -9
- package/dist/web/routes.js.map +1 -1
- package/dist/web/site-index.d.ts.map +1 -1
- package/dist/web/site-index.js +1 -2
- package/dist/web/site-index.js.map +1 -1
- package/dist/web/site-view.d.ts +0 -2
- package/dist/web/site-view.d.ts.map +1 -1
- package/dist/web/site-view.js +0 -2
- package/dist/web/site-view.js.map +1 -1
- package/dist/web/webmention-routes.d.ts.map +1 -1
- package/dist/web/webmention-routes.js +2 -2
- package/dist/web/webmention-routes.js.map +1 -1
- package/dist/web/well-known.d.ts.map +1 -1
- package/dist/web/well-known.js +6 -7
- package/dist/web/well-known.js.map +1 -1
- package/dist/webmention/cited-picture.js +1 -1
- package/dist/webmention/cited-picture.js.map +1 -1
- package/dist/webmention/pingback.d.ts +1 -8
- package/dist/webmention/pingback.d.ts.map +1 -1
- package/dist/webmention/pingback.js +2 -11
- package/dist/webmention/pingback.js.map +1 -1
- package/dist/webmention/receive.d.ts +3 -1
- package/dist/webmention/receive.d.ts.map +1 -1
- package/dist/webmention/receive.js +5 -3
- package/dist/webmention/receive.js.map +1 -1
- package/dist/webmention/reply-contexts.d.ts +14 -3
- package/dist/webmention/reply-contexts.d.ts.map +1 -1
- package/dist/webmention/reply-contexts.js +12 -10
- package/dist/webmention/reply-contexts.js.map +1 -1
- package/dist/webmention/service.d.ts +3 -1
- package/dist/webmention/service.d.ts.map +1 -1
- package/dist/webmention/service.js +66 -53
- package/dist/webmention/service.js.map +1 -1
- package/package.json +13 -11
- package/themes/default/partials/post-list.njk +19 -14
- package/themes/default/src/style.css +12 -0
- package/themes/default/static/style.css +19 -0
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
types you want on it.
|
|
50
50
|
{% endset %}
|
|
51
51
|
{{ field.textarea('menu-' + menu.name, fields.items, 'Items', menu.items,
|
|
52
|
-
error=menu.problem,
|
|
52
|
+
error=menu.problem, hintHtml=itemsHint, rows='5', spellcheck='false') }}
|
|
53
53
|
<div class="mt-2">{{ button('Save menu', type='submit', color='primary') }}</div>
|
|
54
54
|
</form>
|
|
55
55
|
|
|
@@ -134,7 +134,7 @@
|
|
|
134
134
|
theme that will use it.
|
|
135
135
|
{% endset %}
|
|
136
136
|
{{ field.text('menu-name', fields.name, 'Name', newName,
|
|
137
|
-
error=nameProblem,
|
|
137
|
+
error=nameProblem, hintHtml=nameHint, spellcheck='false', required=true) }}
|
|
138
138
|
<div class="mt-2">{{ button('Add menu', type='submit', color='primary') }}</div>
|
|
139
139
|
</form>
|
|
140
140
|
{% endcall %}
|
|
@@ -1,14 +1,9 @@
|
|
|
1
1
|
{# /admin/plugins/<package name>: a plugin's own screen (decision-33). The
|
|
2
2
|
plugin hands over cards of paragraphs and tables as data and this draws
|
|
3
|
-
them, so a plugin writes no markup and everything it says is escaped.
|
|
4
|
-
|
|
5
|
-
A plugin with settings gets a form here too (TASK-283). A label or hint
|
|
6
|
-
from a plugin is escaped before the field macros, which print theirs as
|
|
7
|
-
markup. A secret is never printed: the form says whether it is set and
|
|
8
|
-
where, and names the environment variable that would set it. #}
|
|
3
|
+
them, so a plugin writes no markup and everything it says is escaped. #}
|
|
9
4
|
{% extends "layouts/shell.njk" %}
|
|
10
5
|
{% import "components/fields.njk" as field %}
|
|
11
|
-
{% from "components/
|
|
6
|
+
{% from "components/setting-fields.njk" import settingFields %}
|
|
12
7
|
{% from "components/button.njk" import button %}
|
|
13
8
|
{% from "components/card.njk" import card, cardActions %}
|
|
14
9
|
{% from "components/table.njk" import table %}
|
|
@@ -37,42 +32,7 @@
|
|
|
37
32
|
<form method="post" action="{{ postUrl }}">
|
|
38
33
|
<input type="hidden" name="csrf_token" value="{{ csrfToken }}" />
|
|
39
34
|
<input type="hidden" name="{{ actionField }}" value="{{ saveAction }}" />
|
|
40
|
-
{
|
|
41
|
-
{% set label = setting.label | escape %}
|
|
42
|
-
{% set error = setting.error or setting.stored %}
|
|
43
|
-
{% if setting.type == 'secret' %}
|
|
44
|
-
{% set hint %}{% if setting.hint %}{{ setting.hint }} {% endif %}{% if setting.source == 'environment' %}Set by the environment variable <code>{{ setting.variable }}</code>. Change it there.{% elif setting.source == 'file' %}Set in <code>{{ secretsFile }}</code>. Leave the box blank to keep it. The environment variable <code>{{ setting.variable }}</code> would win over it.{% else %}Not set. Or set the environment variable <code>{{ setting.variable }}</code>.{% endif %}{% endset %}
|
|
45
|
-
{% if setting.source == 'environment' %}
|
|
46
|
-
<div class="fieldset">
|
|
47
|
-
<p class="fieldset-legend">{{ label }} {{ status('connected', 'Set') }}</p>
|
|
48
|
-
<p class="label block whitespace-normal">{{ hint | safe }}</p>
|
|
49
|
-
</div>
|
|
50
|
-
{% else %}
|
|
51
|
-
{{ field.password(setting.id, setting.name,
|
|
52
|
-
label ~ ' ' ~ (status('connected', 'Set') if setting.source == 'file' else status('missing', 'Not set')),
|
|
53
|
-
hint=hint, error=setting.error, autocomplete='off', spellcheck='false',
|
|
54
|
-
placeholder=('Leave blank to keep it' if setting.source == 'file' else '')) }}
|
|
55
|
-
{% if setting.source == 'file' %}
|
|
56
|
-
{{ field.checkbox(setting.id ~ '-forget', setting.forgetName, 'Forget the stored ' ~ label) }}
|
|
57
|
-
{% endif %}
|
|
58
|
-
{% endif %}
|
|
59
|
-
{% else %}
|
|
60
|
-
{% set hint %}{{ setting.hint }}{% endset %}
|
|
61
|
-
{% if setting.type == 'checkbox' %}
|
|
62
|
-
{{ field.checkbox(setting.id, setting.name, label, checked=setting.checked,
|
|
63
|
-
hint=hint, error=error) }}
|
|
64
|
-
{% elif setting.type == 'select' %}
|
|
65
|
-
{% call field.select(setting.id, setting.name, label, hint=hint, error=error) %}
|
|
66
|
-
{% for option in setting.options %}
|
|
67
|
-
<option value="{{ option.value }}"{% if option.selected %} selected{% endif %}>{{ option.label }}</option>
|
|
68
|
-
{% endfor %}
|
|
69
|
-
{% endcall %}
|
|
70
|
-
{% else %}
|
|
71
|
-
{{ field.text(setting.id, setting.name, label, setting.value, hint=hint, error=error,
|
|
72
|
-
inputmode=('url' if setting.type == 'url' else ''), spellcheck='false') }}
|
|
73
|
-
{% endif %}
|
|
74
|
-
{% endif %}
|
|
75
|
-
{% endfor %}
|
|
35
|
+
{{ settingFields(settings, secretsFile) }}
|
|
76
36
|
<div class="mt-2">{{ button('Save settings', type='submit', color='primary') }}</div>
|
|
77
37
|
</form>
|
|
78
38
|
{% endif %}
|
|
@@ -87,9 +47,8 @@
|
|
|
87
47
|
|
|
88
48
|
{% if settings.length %}
|
|
89
49
|
<p class="text-sm">
|
|
90
|
-
Settings other than secrets are kept
|
|
91
|
-
<code>
|
|
92
|
-
<code>{{ secretsFile }}</code> at mode <code>0600</code> and are never shown here.
|
|
50
|
+
Settings other than secrets are kept in <code>{{ settingsFile }}</code>. Secrets are
|
|
51
|
+
kept in <code>{{ secretsFile }}</code> at mode <code>0600</code> and are never shown here.
|
|
93
52
|
</p>
|
|
94
53
|
{% endif %}
|
|
95
54
|
{% endcall %}
|
|
@@ -17,32 +17,47 @@
|
|
|
17
17
|
{% endmacro %}
|
|
18
18
|
|
|
19
19
|
{% block settingsProblems %}
|
|
20
|
-
{{ field.problem('settings-comments-close', problems.
|
|
21
|
-
{{ field.problem('settings-comment-email-retention', problems.
|
|
22
|
-
{{ field.problem('settings-address-hash-retention', problems.
|
|
23
|
-
{{ field.problem('settings-contact-message-retention', problems.
|
|
20
|
+
{{ field.problem('settings-comments-close', problems.comments_close_after_days) }}
|
|
21
|
+
{{ field.problem('settings-comment-email-retention', problems.comment_email_retention_days) }}
|
|
22
|
+
{{ field.problem('settings-address-hash-retention', problems.address_hash_retention_days) }}
|
|
23
|
+
{{ field.problem('settings-contact-message-retention', problems.contact_message_retention_days) }}
|
|
24
24
|
{% endblock %}
|
|
25
25
|
|
|
26
26
|
{% block settingsFields %}
|
|
27
27
|
<h2 class="mt-2 text-lg font-semibold">Comments</h2>
|
|
28
28
|
|
|
29
29
|
{% set commentsHint %}
|
|
30
|
-
Clear this and
|
|
31
|
-
refused. Fediverse replies keep arriving and keep being shown either way:
|
|
30
|
+
Clear this and nothing shows a comment form and every submission is
|
|
31
|
+
refused. What was already said stays under its post or page. Fediverse replies keep arriving and keep being shown either way:
|
|
32
32
|
a remote server sends those, and nothing here can stop it.
|
|
33
33
|
{% endset %}
|
|
34
34
|
{{ field.checkbox('settings-comments', fields.comments, 'Take comments on this site',
|
|
35
|
-
checked=form.comments,
|
|
35
|
+
checked=form.comments, hintHtml=commentsHint) }}
|
|
36
|
+
|
|
37
|
+
<fieldset class="fieldset">
|
|
38
|
+
<legend class="fieldset-legend">Take comments by default on</legend>
|
|
39
|
+
{{ field.checkbox('settings-comments-on-posts', fields.comments_on_posts, 'Posts',
|
|
40
|
+
checked=form.comments_on_posts) }}
|
|
41
|
+
{{ field.checkbox('settings-comments-on-pages', fields.comments_on_pages, 'Pages',
|
|
42
|
+
checked=form.comments_on_pages) }}
|
|
43
|
+
<p class="label block whitespace-normal">
|
|
44
|
+
What a document left on "Follow the site settings" in the editor does. A
|
|
45
|
+
document set to Open or Closed there, which writes
|
|
46
|
+
<code>comments: true</code> or <code>comments: false</code> into its
|
|
47
|
+
front matter, overrides this in both directions. Drafts take none, and
|
|
48
|
+
nothing reopens a site with comments switched off above.
|
|
49
|
+
</p>
|
|
50
|
+
</fieldset>
|
|
36
51
|
|
|
37
52
|
{% set closeHint %}
|
|
38
|
-
Days after a
|
|
39
|
-
never closes one. A
|
|
40
|
-
|
|
41
|
-
|
|
53
|
+
Days after a document's date that it stops taking comments, for posts and
|
|
54
|
+
pages alike; <code>0</code> never closes one. A document with no date,
|
|
55
|
+
which most pages are, never closes, and one set to Open in the editor
|
|
56
|
+
ignores the window.
|
|
42
57
|
{% endset %}
|
|
43
|
-
{{ field.text('settings-comments-close', fields.
|
|
44
|
-
form.
|
|
45
|
-
error=problems.
|
|
58
|
+
{{ field.text('settings-comments-close', fields.comments_close_after_days, 'Close comments after',
|
|
59
|
+
form.comments_close_after_days, type='number', min='0', step='1',
|
|
60
|
+
error=problems.comments_close_after_days, hintHtml=closeHint) }}
|
|
46
61
|
|
|
47
62
|
<h2 class="mt-6 text-lg font-semibold">Webmentions</h2>
|
|
48
63
|
|
|
@@ -51,8 +66,8 @@
|
|
|
51
66
|
asked whether it takes webmentions and told about the post if it does.
|
|
52
67
|
The Resend button on the federation screen sends them again.
|
|
53
68
|
{% endset %}
|
|
54
|
-
{{ field.checkbox('settings-webmentions-send', fields.
|
|
55
|
-
'Tell the pages a post links to', checked=form.
|
|
69
|
+
{{ field.checkbox('settings-webmentions-send', fields.webmentions_send,
|
|
70
|
+
'Tell the pages a post links to', checked=form.webmentions_send, hintHtml=sendHint) }}
|
|
56
71
|
|
|
57
72
|
{% set receiveHint %}
|
|
58
73
|
Every post advertises an endpoint, and a page that links to one and says
|
|
@@ -60,8 +75,8 @@
|
|
|
60
75
|
is gone from the pages and answers nothing; what has already arrived
|
|
61
76
|
stays where it is.
|
|
62
77
|
{% endset %}
|
|
63
|
-
{{ field.checkbox('settings-webmentions-receive', fields.
|
|
64
|
-
'Accept webmentions sent here', checked=form.
|
|
78
|
+
{{ field.checkbox('settings-webmentions-receive', fields.webmentions_receive,
|
|
79
|
+
'Accept webmentions sent here', checked=form.webmentions_receive, hintHtml=receiveHint) }}
|
|
65
80
|
|
|
66
81
|
<h2 class="mt-6 text-lg font-semibold">Keeping personal data</h2>
|
|
67
82
|
|
|
@@ -76,40 +91,41 @@
|
|
|
76
91
|
</p>
|
|
77
92
|
|
|
78
93
|
{% set emailHint %}
|
|
79
|
-
{{ retention(form.
|
|
94
|
+
{{ retention(form.comment_email_retention_days) }}
|
|
80
95
|
Past this a comment loses its author's email. The comment, its place in
|
|
81
96
|
the thread and its moderation status stay; the author is no longer told
|
|
82
97
|
about replies, and their next comment waits for a moderator. Recommended:
|
|
83
98
|
<code>180</code>.
|
|
84
99
|
{% endset %}
|
|
85
|
-
{{ field.text('settings-comment-email-retention', fields.
|
|
86
|
-
'Keep commenter emails for', form.
|
|
87
|
-
step='1', error=problems.
|
|
100
|
+
{{ field.text('settings-comment-email-retention', fields.comment_email_retention_days,
|
|
101
|
+
'Keep commenter emails for', form.comment_email_retention_days, type='number', min='0',
|
|
102
|
+
step='1', error=problems.comment_email_retention_days, hintHtml=emailHint) }}
|
|
88
103
|
|
|
89
104
|
{% set hashHint %}
|
|
90
|
-
{{ retention(form.
|
|
105
|
+
{{ retention(form.address_hash_retention_days) }}
|
|
91
106
|
The salted hash of the address a comment, webmention or contact message
|
|
92
107
|
came from, which shows a moderator that two came from one place.
|
|
93
108
|
Recommended: <code>30</code>.
|
|
94
109
|
{% endset %}
|
|
95
|
-
{{ field.text('settings-address-hash-retention', fields.
|
|
96
|
-
'Keep address hashes for', form.
|
|
97
|
-
step='1', error=problems.
|
|
110
|
+
{{ field.text('settings-address-hash-retention', fields.address_hash_retention_days,
|
|
111
|
+
'Keep address hashes for', form.address_hash_retention_days, type='number', min='0',
|
|
112
|
+
step='1', error=problems.address_hash_retention_days, hintHtml=hashHint) }}
|
|
98
113
|
|
|
99
114
|
{% set contactHint %}
|
|
100
|
-
{{ retention(form.
|
|
115
|
+
{{ retention(form.contact_message_retention_days) }}
|
|
101
116
|
Past this a contact message is deleted from the Messages screen and from
|
|
102
117
|
<code>data/contact/</code>. Recommended: <code>365</code>.
|
|
103
118
|
{% endset %}
|
|
104
|
-
{{ field.text('settings-contact-message-retention', fields.
|
|
105
|
-
'Keep contact messages for', form.
|
|
106
|
-
step='1', error=problems.
|
|
119
|
+
{{ field.text('settings-contact-message-retention', fields.contact_message_retention_days,
|
|
120
|
+
'Keep contact messages for', form.contact_message_retention_days, type='number', min='0',
|
|
121
|
+
step='1', error=problems.contact_message_retention_days, hintHtml=contactHint) }}
|
|
107
122
|
{% endblock %}
|
|
108
123
|
|
|
109
124
|
{% block settingsPanels %}
|
|
110
125
|
{# Akismet is its own pair of forms for the reason the avatar is: the key is
|
|
111
|
-
|
|
112
|
-
a key Akismet will not take must not lose an edit to the
|
|
126
|
+
the secret akismet.key setting in data/akismet.json rather than a setting
|
|
127
|
+
in site.json, and a key Akismet will not take must not lose an edit to the
|
|
128
|
+
fields above. #}
|
|
113
129
|
{% call card(title='Spam checking') %}
|
|
114
130
|
<p>
|
|
115
131
|
{% if akismetState == 'valid' %}
|
|
@@ -124,30 +140,43 @@
|
|
|
124
140
|
</p>
|
|
125
141
|
<p class="text-sm">{{ akismetHint }}</p>
|
|
126
142
|
|
|
127
|
-
|
|
128
|
-
<
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
{%
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
{{
|
|
138
|
-
|
|
139
|
-
|
|
143
|
+
{% if akismetSetBy %}
|
|
144
|
+
<p class="text-sm">The key is set by <code>{{ akismetSetBy }}</code> and cannot be changed here.</p>
|
|
145
|
+
{% else %}
|
|
146
|
+
<form method="post" action="{{ akismetUrl }}">
|
|
147
|
+
<input type="hidden" name="csrf_token" value="{{ csrfToken }}" />
|
|
148
|
+
{% if akismetPresent %}
|
|
149
|
+
{% set akismetPlaceholder = 'Replace the stored key' %}
|
|
150
|
+
{% else %}
|
|
151
|
+
{% set akismetPlaceholder = 'Paste your key' %}
|
|
152
|
+
{% endif %}
|
|
153
|
+
{{ field.password('settings-akismet-key', akismetFields.key, 'Akismet API key',
|
|
154
|
+
autocomplete='off', spellcheck='false', placeholder=akismetPlaceholder) }}
|
|
155
|
+
<div class="mt-2">
|
|
156
|
+
{{ button('Replace key' if akismetPresent else 'Save key', type='submit', color='primary') }}
|
|
157
|
+
</div>
|
|
158
|
+
</form>
|
|
159
|
+
{% endif %}
|
|
160
|
+
|
|
161
|
+
{% if akismetPresent %}
|
|
162
|
+
<form method="post" action="{{ akismetUrl }}">
|
|
163
|
+
<input type="hidden" name="csrf_token" value="{{ csrfToken }}" />
|
|
164
|
+
<input type="hidden" name="{{ akismetFields.action }}" value="{{ akismetVerify }}" />
|
|
165
|
+
<div class="mt-2">{{ button('Check key with Akismet', type='submit') }}</div>
|
|
166
|
+
</form>
|
|
167
|
+
{% endif %}
|
|
140
168
|
|
|
141
169
|
<p class="text-sm">
|
|
142
170
|
A key from <a class="link" href="https://akismet.com/">akismet.com</a> turns on spam
|
|
143
171
|
checking for native comments and incoming webmentions. It is checked with
|
|
144
172
|
Akismet when it is saved and kept in <code>data/akismet.json</code>, never
|
|
145
|
-
in <code>site.json</code> and never on the public site.
|
|
173
|
+
in <code>site.json</code> and never on the public site. A deployment can
|
|
174
|
+
set it instead with <code>GEEKITY_AKISMET__KEY</code>. Marking something
|
|
146
175
|
spam or not spam on the Comments screen tells Akismet, which is the only
|
|
147
176
|
way it learns. Fediverse replies are never sent to it.
|
|
148
177
|
</p>
|
|
149
178
|
|
|
150
|
-
{% if akismetPresent %}
|
|
179
|
+
{% if akismetPresent and not akismetSetBy %}
|
|
151
180
|
<form method="post" action="{{ akismetUrl }}">
|
|
152
181
|
<input type="hidden" name="csrf_token" value="{{ csrfToken }}" />
|
|
153
182
|
<input type="hidden" name="{{ akismetFields.action }}" value="{{ akismetRemove }}" />
|
|
@@ -7,13 +7,13 @@
|
|
|
7
7
|
{% from "components/card.njk" import card, cardActions %}
|
|
8
8
|
|
|
9
9
|
{% block settingsProblems %}
|
|
10
|
-
{{ field.problem('settings-mail-provider', problems.
|
|
11
|
-
{{ field.problem('settings-mail-from-address', problems.
|
|
12
|
-
{{ field.problem('settings-mail-reply-to', problems.
|
|
13
|
-
{{ field.problem('settings-contact-email', problems.
|
|
14
|
-
{{ field.problem('settings-security-contacts', problems.
|
|
15
|
-
{{ field.problem('settings-security-policy', problems.
|
|
16
|
-
{{ field.problem('settings-security-languages', problems.
|
|
10
|
+
{{ field.problem('settings-mail-provider', problems.mail_provider) }}
|
|
11
|
+
{{ field.problem('settings-mail-from-address', problems.mail_from_address) }}
|
|
12
|
+
{{ field.problem('settings-mail-reply-to', problems.mail_reply_to) }}
|
|
13
|
+
{{ field.problem('settings-contact-email', problems.contact_email) }}
|
|
14
|
+
{{ field.problem('settings-security-contacts', problems.security_contacts) }}
|
|
15
|
+
{{ field.problem('settings-security-policy', problems.security_policy) }}
|
|
16
|
+
{{ field.problem('settings-security-languages', problems.security_languages) }}
|
|
17
17
|
{% endblock %}
|
|
18
18
|
|
|
19
19
|
{% block settingsFields %}
|
|
@@ -21,28 +21,28 @@
|
|
|
21
21
|
The key or password each one needs is a credential and is saved below,
|
|
22
22
|
in <code>data/mail.json</code> rather than in <code>site.json</code>.
|
|
23
23
|
{% endset %}
|
|
24
|
-
{% call field.select('settings-mail-provider', fields.
|
|
25
|
-
error=problems.
|
|
24
|
+
{% call field.select('settings-mail-provider', fields.mail_provider, 'Provider',
|
|
25
|
+
error=problems.mail_provider, hintHtml=providerHint) %}
|
|
26
26
|
{% for provider in mailProviders %}
|
|
27
|
-
<option value="{{ provider }}"{% if form.
|
|
27
|
+
<option value="{{ provider }}"{% if form.mail_provider == provider %} selected{% endif %}>
|
|
28
28
|
{% if provider == 'none' %}None — this site sends no email{% elif provider == 'brevo' %}Brevo (transactional API){% else %}SMTP{% endif %}
|
|
29
29
|
</option>
|
|
30
30
|
{% endfor %}
|
|
31
31
|
{% endcall %}
|
|
32
32
|
|
|
33
|
-
{{ field.text('settings-mail-from-name', fields.
|
|
33
|
+
{{ field.text('settings-mail-from-name', fields.mail_from_name, 'From name', form.mail_from_name,
|
|
34
34
|
hint='The name on the From line. Empty uses the site title.') }}
|
|
35
35
|
|
|
36
36
|
{% set fromAddressHint %}
|
|
37
37
|
Providers only send from an address they have verified, so this should be
|
|
38
38
|
one you own. Empty falls back to <code>no-reply@</code> at the site's host.
|
|
39
39
|
{% endset %}
|
|
40
|
-
{{ field.text('settings-mail-from-address', fields.
|
|
41
|
-
form.
|
|
40
|
+
{{ field.text('settings-mail-from-address', fields.mail_from_address, 'From address',
|
|
41
|
+
form.mail_from_address, error=problems.mail_from_address, hintHtml=fromAddressHint,
|
|
42
42
|
inputmode='email') }}
|
|
43
43
|
|
|
44
|
-
{{ field.text('settings-mail-reply-to', fields.
|
|
45
|
-
error=problems.
|
|
44
|
+
{{ field.text('settings-mail-reply-to', fields.mail_reply_to, 'Reply-to', form.mail_reply_to,
|
|
45
|
+
error=problems.mail_reply_to, inputmode='email',
|
|
46
46
|
hint='Where a reply goes. Empty replies to the From address.') }}
|
|
47
47
|
|
|
48
48
|
{% set contactHint %}
|
|
@@ -50,8 +50,8 @@
|
|
|
50
50
|
wrote it. Empty writes to the first admin with an email address. It is read when a
|
|
51
51
|
message arrives and never appears on the public site.
|
|
52
52
|
{% endset %}
|
|
53
|
-
{{ field.text('settings-contact-email', fields.
|
|
54
|
-
form.
|
|
53
|
+
{{ field.text('settings-contact-email', fields.contact_email, 'Contact address',
|
|
54
|
+
form.contact_email, error=problems.contact_email, hintHtml=contactHint, inputmode='email') }}
|
|
55
55
|
|
|
56
56
|
<h2 class="mt-6 text-lg font-semibold">Security contact</h2>
|
|
57
57
|
|
|
@@ -61,24 +61,24 @@
|
|
|
61
61
|
published at <a href="/.well-known/security.txt"><code>/.well-known/security.txt</code></a>,
|
|
62
62
|
which is not served at all while this is empty.
|
|
63
63
|
{% endset %}
|
|
64
|
-
{{ field.textarea('settings-security-contacts', fields.
|
|
65
|
-
form.
|
|
64
|
+
{{ field.textarea('settings-security-contacts', fields.security_contacts, 'Contacts',
|
|
65
|
+
form.security_contacts, error=problems.security_contacts, hintHtml=securityContactsHint,
|
|
66
66
|
rows='2', spellcheck='false') }}
|
|
67
67
|
|
|
68
|
-
{{ field.text('settings-security-policy', fields.
|
|
69
|
-
form.
|
|
68
|
+
{{ field.text('settings-security-policy', fields.security_policy, 'Disclosure policy',
|
|
69
|
+
form.security_policy, error=problems.security_policy, inputmode='url',
|
|
70
70
|
hint='Optional. An https:// URL for the page that says how reports are handled.') }}
|
|
71
71
|
|
|
72
|
-
{{ field.text('settings-security-languages', fields.
|
|
73
|
-
form.
|
|
72
|
+
{{ field.text('settings-security-languages', fields.security_languages, 'Preferred languages',
|
|
73
|
+
form.security_languages, error=problems.security_languages,
|
|
74
74
|
hint='Optional. The languages a report may be written in, such as en, fr.') }}
|
|
75
75
|
{% endblock %}
|
|
76
76
|
|
|
77
77
|
{% block settingsPanels %}
|
|
78
78
|
{# The mail credential is its own pair of forms for the reason the Akismet
|
|
79
|
-
key is: an API key and an SMTP password
|
|
80
|
-
the public site.json, and a mistyped one must not
|
|
81
|
-
From line. #}
|
|
79
|
+
key is: an API key and an SMTP password are the mail settings, kept in
|
|
80
|
+
data/mail.json, not in the public site.json, and a mistyped one must not
|
|
81
|
+
lose an edit to the From line. #}
|
|
82
82
|
{% call card(title='Mail credentials') %}
|
|
83
83
|
|
|
84
84
|
<p>
|
|
@@ -125,40 +125,64 @@
|
|
|
125
125
|
|
|
126
126
|
{% if mailProvider == 'brevo' %}
|
|
127
127
|
<h3 class="font-semibold">Brevo</h3>
|
|
128
|
-
{% if
|
|
129
|
-
<p class="text-sm">
|
|
130
|
-
{% set brevoPlaceholder = 'Leave blank to keep the stored key' %}
|
|
128
|
+
{% if mailSetBy.brevo_api_key %}
|
|
129
|
+
<p class="text-sm">The API key is set by <code>{{ mailSetBy.brevo_api_key }}</code> and cannot be changed here.</p>
|
|
131
130
|
{% else %}
|
|
132
|
-
{%
|
|
131
|
+
{% if mailBrevoPresent %}
|
|
132
|
+
<p class="text-sm">A key is stored, ending {{ mailBrevoKeyHint }}.</p>
|
|
133
|
+
{% set brevoPlaceholder = 'Leave blank to keep the stored key' %}
|
|
134
|
+
{% else %}
|
|
135
|
+
{% set brevoPlaceholder = 'Paste your key' %}
|
|
136
|
+
{% endif %}
|
|
137
|
+
{{ field.password('settings-mail-brevo-key', mailFields.brevoApiKey, 'API key',
|
|
138
|
+
autocomplete='off', spellcheck='false', placeholder=brevoPlaceholder) }}
|
|
133
139
|
{% endif %}
|
|
134
|
-
{{ field.password('settings-mail-brevo-key', mailFields.brevoApiKey, 'API key',
|
|
135
|
-
autocomplete='off', spellcheck='false', placeholder=brevoPlaceholder) }}
|
|
136
140
|
{% else %}
|
|
137
141
|
<h3 class="font-semibold">SMTP</h3>
|
|
138
|
-
{
|
|
139
|
-
|
|
142
|
+
{% if mailSetBy.smtp_host %}
|
|
143
|
+
<p class="text-sm">Host {{ mailSmtp.host }}, set by <code>{{ mailSetBy.smtp_host }}</code>.</p>
|
|
144
|
+
{% else %}
|
|
145
|
+
{{ field.text('settings-mail-smtp-host', mailFields.smtpHost, 'Host', mailSmtp.host,
|
|
146
|
+
autocomplete='off') }}
|
|
147
|
+
{% endif %}
|
|
140
148
|
|
|
141
|
-
{
|
|
142
|
-
|
|
149
|
+
{% if mailSetBy.smtp_port %}
|
|
150
|
+
<p class="text-sm">Port {{ mailSmtp.port }}, set by <code>{{ mailSetBy.smtp_port }}</code>.</p>
|
|
151
|
+
{% else %}
|
|
152
|
+
{{ field.text('settings-mail-smtp-port', mailFields.smtpPort, 'Port',
|
|
153
|
+
mailSmtp.port if mailSmtp else 587, inputmode='numeric') }}
|
|
154
|
+
{% endif %}
|
|
143
155
|
|
|
144
156
|
{# Its own box with the sentence beside it, like every other switch in
|
|
145
157
|
the admin. It used to be a label wrapped round the tick in a class the
|
|
146
158
|
stylesheet has never heard of, so it was the one switch here that
|
|
147
159
|
rendered unstyled. #}
|
|
148
|
-
{
|
|
149
|
-
|
|
150
|
-
|
|
160
|
+
{% if mailSetBy.smtp_secure %}
|
|
161
|
+
<p class="text-sm">TLS from the first byte {{ 'on' if mailSmtp.secure else 'off' }}, set by <code>{{ mailSetBy.smtp_secure }}</code>.</p>
|
|
162
|
+
{% else %}
|
|
163
|
+
{{ field.checkbox('settings-mail-smtp-secure', mailFields.smtpSecure,
|
|
164
|
+
'TLS from the first byte (port 465)', checked=mailSmtp.secure,
|
|
165
|
+
hint='Leave this off for port 587, which upgrades with STARTTLS.') }}
|
|
166
|
+
{% endif %}
|
|
151
167
|
|
|
152
|
-
{
|
|
153
|
-
|
|
168
|
+
{% if mailSetBy.smtp_user %}
|
|
169
|
+
<p class="text-sm">Username {{ mailSmtp.user }}, set by <code>{{ mailSetBy.smtp_user }}</code>.</p>
|
|
170
|
+
{% else %}
|
|
171
|
+
{{ field.text('settings-mail-smtp-user', mailFields.smtpUser, 'Username', mailSmtp.user,
|
|
172
|
+
autocomplete='off') }}
|
|
173
|
+
{% endif %}
|
|
154
174
|
|
|
155
|
-
{% if
|
|
156
|
-
|
|
175
|
+
{% if mailSetBy.smtp_password %}
|
|
176
|
+
<p class="text-sm">The password is set by <code>{{ mailSetBy.smtp_password }}</code> and cannot be changed here.</p>
|
|
157
177
|
{% else %}
|
|
158
|
-
{%
|
|
178
|
+
{% if mailSmtp.hasPassword %}
|
|
179
|
+
{% set smtpPlaceholder = 'Leave blank to keep the stored password' %}
|
|
180
|
+
{% else %}
|
|
181
|
+
{% set smtpPlaceholder = 'The SMTP password' %}
|
|
182
|
+
{% endif %}
|
|
183
|
+
{{ field.password('settings-mail-smtp-password', mailFields.smtpPassword, 'Password',
|
|
184
|
+
autocomplete='off', spellcheck='false', placeholder=smtpPlaceholder) }}
|
|
159
185
|
{% endif %}
|
|
160
|
-
{{ field.password('settings-mail-smtp-password', mailFields.smtpPassword, 'Password',
|
|
161
|
-
autocomplete='off', spellcheck='false', placeholder=smtpPlaceholder) }}
|
|
162
186
|
{% endif %}
|
|
163
187
|
|
|
164
188
|
<div class="mt-2">{{ button('Save credentials', type='submit', color='primary') }}</div>
|
|
@@ -225,7 +249,11 @@
|
|
|
225
249
|
page. Both are kept in <code>data/mail.json</code> at mode
|
|
226
250
|
<code>0600</code>, beside the password hashes and the actor's private
|
|
227
251
|
keys, and never in <code>site.json</code>, which is public and in git.
|
|
228
|
-
Leaving a secret blank keeps the one already stored.
|
|
252
|
+
Leaving a secret blank keeps the one already stored. A deployment can set
|
|
253
|
+
any of them instead with <code>GEEKITY_MAIL__BREVO_API_KEY</code>,
|
|
254
|
+
<code>GEEKITY_MAIL__SMTP_PASSWORD</code> and the other
|
|
255
|
+
<code>GEEKITY_MAIL__*</code> variables, and then this page shows what sets
|
|
256
|
+
them.
|
|
229
257
|
</p>
|
|
230
258
|
{% endcall %}
|
|
231
259
|
{% endblock %}
|
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
|
|
5
5
|
{% block settingsProblems %}
|
|
6
6
|
{{ field.problem('settings-title', problems.title) }}
|
|
7
|
-
{{ field.problem('settings-base-url', problems.
|
|
7
|
+
{{ field.problem('settings-base-url', problems.base_url) }}
|
|
8
8
|
{{ field.problem('settings-timezone', problems.timezone) }}
|
|
9
9
|
{{ field.problem('settings-language', problems.language) }}
|
|
10
10
|
{{ field.problem('settings-locale', problems.locale) }}
|
|
11
11
|
{{ field.problem('settings-icon', problems.icon) }}
|
|
12
12
|
{{ field.problem('settings-license', problems.license) }}
|
|
13
|
-
{{ field.problem('settings-license-url', problems.
|
|
14
|
-
{{ field.problem('settings-license-name', problems.
|
|
13
|
+
{{ field.problem('settings-license-url', problems.license_url) }}
|
|
14
|
+
{{ field.problem('settings-license-name', problems.license_name) }}
|
|
15
15
|
{% endblock %}
|
|
16
16
|
|
|
17
17
|
{% block settingsFields %}
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
hint='One line, shown under the title and used as the feed subtitle.') }}
|
|
23
23
|
|
|
24
24
|
{% set authorHint %}A user makes this their blog: the homepage shows their bio and links, claims their author archive and profiles with <code>rel="me"</code>, and is their IndieAuth sign-in URL. The feeds and the footer credit them by name. Several authors credits the site title instead.{% endset %}
|
|
25
|
-
{% call field.select('settings-author', fields.author, 'Site author',
|
|
25
|
+
{% call field.select('settings-author', fields.author, 'Site author', hintHtml=authorHint) %}
|
|
26
26
|
<option value=""{% if not form.author %} selected{% endif %}>Several authors</option>
|
|
27
27
|
{% for choice in authorChoices %}
|
|
28
28
|
<option value="{{ choice.username }}"{% if choice.username == form.author %} selected{% endif %}>{{ choice.name }}</option>
|
|
@@ -30,25 +30,25 @@
|
|
|
30
30
|
{% endcall %}
|
|
31
31
|
|
|
32
32
|
{% set baseUrlHint %}In effect: <code>{{ baseUrlInEffect }}</code>. {{ baseUrlNote }}{% endset %}
|
|
33
|
-
{{ field.text('settings-base-url', fields.
|
|
34
|
-
error=problems.
|
|
33
|
+
{{ field.text('settings-base-url', fields.base_url, 'Base URL', form.base_url,
|
|
34
|
+
error=problems.base_url, hintHtml=baseUrlHint, inputmode='url',
|
|
35
35
|
readonly=baseUrlOverridden, disabled=baseUrlOverridden) }}
|
|
36
36
|
|
|
37
37
|
{% set timezoneHint %}An IANA name, such as <code>Europe/London</code> or <code>UTC</code>.{% endset %}
|
|
38
38
|
{{ field.text('settings-timezone', fields.timezone, 'Time zone', form.timezone,
|
|
39
|
-
error=problems.timezone,
|
|
39
|
+
error=problems.timezone, hintHtml=timezoneHint, required=true) }}
|
|
40
40
|
|
|
41
41
|
{% set languageHint %}A BCP 47 tag, such as <code>en</code> or <code>en-GB</code>. It is the page's <code>lang</code> and the feeds' language.{% endset %}
|
|
42
42
|
{{ field.text('settings-language', fields.language, 'Language', form.language,
|
|
43
|
-
error=problems.language,
|
|
43
|
+
error=problems.language, hintHtml=languageHint, required=true) }}
|
|
44
44
|
|
|
45
45
|
{% set localeHint %}How the public site writes dates and counts, such as <code>en-US</code> for <code>September 2, 2026</code>. Leave it empty to follow the language.{% endset %}
|
|
46
46
|
{{ field.text('settings-locale', fields.locale, 'Locale', form.locale,
|
|
47
|
-
error=problems.locale,
|
|
47
|
+
error=problems.locale, hintHtml=localeHint) }}
|
|
48
48
|
|
|
49
49
|
{% set iconHint %}A square image at least 512 pixels wide, uploaded on <a href="{{ adminUrl }}/media">Media</a>: a path such as <code>/uploads/2026/10/icon.png</code>. It is the favicon, the home screen icon, <code>/favicon.ico</code> and the web app manifest's icon. Anything not square is cropped to its middle.{% endset %}
|
|
50
50
|
{{ field.text('settings-icon', fields.icon, 'Site icon', form.icon,
|
|
51
|
-
error=problems.icon,
|
|
51
|
+
error=problems.icon, hintHtml=iconHint) }}
|
|
52
52
|
|
|
53
53
|
<div class="flex items-center gap-4">
|
|
54
54
|
{% if iconPreview %}
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
</div>
|
|
79
79
|
|
|
80
80
|
{% set licenseHint %}What readers may do with your posts. The footer links it, and the structured data and the feeds declare it. A post can name its own with <code>license</code> in its front matter.{% endset %}
|
|
81
|
-
{% call field.select('settings-license', fields.license, 'License', error=problems.license,
|
|
81
|
+
{% call field.select('settings-license', fields.license, 'License', error=problems.license, hintHtml=licenseHint) %}
|
|
82
82
|
<option value=""{% if not form.license %} selected{% endif %}>No license (all rights reserved)</option>
|
|
83
83
|
{% for choice in licenseChoices %}
|
|
84
84
|
<option value="{{ choice.key }}"{% if choice.key == form.license %} selected{% endif %}>{{ choice.name }}</option>
|
|
@@ -86,11 +86,11 @@
|
|
|
86
86
|
<option value="custom"{% if form.license == 'custom' %} selected{% endif %}>Custom license</option>
|
|
87
87
|
{% endcall %}
|
|
88
88
|
|
|
89
|
-
{{ field.text('settings-license-url', fields.
|
|
90
|
-
error=problems.
|
|
89
|
+
{{ field.text('settings-license-url', fields.license_url, 'Custom license URL', form.license_url,
|
|
90
|
+
error=problems.license_url, inputmode='url', hint='Where its terms are. Only read for a custom license.') }}
|
|
91
91
|
|
|
92
|
-
{{ field.text('settings-license-name', fields.
|
|
93
|
-
error=problems.
|
|
92
|
+
{{ field.text('settings-license-name', fields.license_name, 'Custom license name', form.license_name,
|
|
93
|
+
error=problems.license_name, hint='What the footer calls it. Only read for a custom license.') }}
|
|
94
94
|
{% endblock %}
|
|
95
95
|
|
|
96
96
|
{% block settingsPanels %}{% endblock %}
|
|
@@ -6,18 +6,18 @@
|
|
|
6
6
|
{% from "components/table.njk" import table %}
|
|
7
7
|
|
|
8
8
|
{% block settingsProblems %}
|
|
9
|
-
{{ field.problem('settings-tag-base', problems.
|
|
10
|
-
{{ field.problem('settings-category-base', problems.
|
|
9
|
+
{{ field.problem('settings-tag-base', problems.tag_base) }}
|
|
10
|
+
{{ field.problem('settings-category-base', problems.category_base) }}
|
|
11
11
|
{% endblock %}
|
|
12
12
|
|
|
13
13
|
{% block settingsFields %}
|
|
14
|
-
{% set tagBaseHint %}The tag archives live at <code>/{{ form.
|
|
15
|
-
{{ field.text('settings-tag-base', fields.
|
|
16
|
-
error=problems.
|
|
14
|
+
{% set tagBaseHint %}The tag archives live at <code>/{{ form.tag_base }}/{tag}/</code>. One path segment, no slashes.{% endset %}
|
|
15
|
+
{{ field.text('settings-tag-base', fields.tag_base, 'Tag base', form.tag_base,
|
|
16
|
+
error=problems.tag_base, hintHtml=tagBaseHint, required=true, autofocus=true) }}
|
|
17
17
|
|
|
18
|
-
{% set categoryBaseHint %}The category archives live at <code>/{{ form.
|
|
19
|
-
{{ field.text('settings-category-base', fields.
|
|
20
|
-
error=problems.
|
|
18
|
+
{% set categoryBaseHint %}The category archives live at <code>/{{ form.category_base }}/{name}/</code>.{% endset %}
|
|
19
|
+
{{ field.text('settings-category-base', fields.category_base, 'Category base', form.category_base,
|
|
20
|
+
error=problems.category_base, hintHtml=categoryBaseHint, required=true) }}
|
|
21
21
|
{% endblock %}
|
|
22
22
|
|
|
23
23
|
{% block settingsPanels %}
|