@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,239 @@
|
|
|
1
|
+
{# /admin/users/<id>: everything about one person, a panel at a time.
|
|
2
|
+
|
|
3
|
+
The table behind it says who there is; this says what they are. Every box
|
|
4
|
+
here carries a label the eye can read, because these fields used to sit in
|
|
5
|
+
a row of that table where a placeholder was the only thing telling them
|
|
6
|
+
apart — and a placeholder disappears the moment somebody types.
|
|
7
|
+
|
|
8
|
+
Four forms rather than one, for the reason there were four before: an email
|
|
9
|
+
address is private to the site and a profile is the public face, a notice
|
|
10
|
+
switch is a button and how often it arrives is a select, and a password is
|
|
11
|
+
about whoever is signed in. Each saves what its own heading is about and
|
|
12
|
+
lands back here, so a Save always shows its own result. #}
|
|
13
|
+
{% extends "layouts/shell.njk" %}
|
|
14
|
+
{% import "components/fields.njk" as field %}
|
|
15
|
+
|
|
16
|
+
{% block title %}Edit {{ account.username }}{% endblock %}
|
|
17
|
+
|
|
18
|
+
{% block content %}
|
|
19
|
+
<h1>Edit {{ account.username }}{% if account.you %} <span class="admin-status">(you)</span>{% endif %}</h1>
|
|
20
|
+
|
|
21
|
+
<p class="admin-hint"><a href="{{ usersUrl }}">Back to all users</a></p>
|
|
22
|
+
|
|
23
|
+
<form class="admin-settings" method="post" action="{{ userEmailUrl }}">
|
|
24
|
+
<input type="hidden" name="csrf_token" value="{{ csrfToken }}" />
|
|
25
|
+
<input type="hidden" name="{{ fields.userId }}" value="{{ account.id }}" />
|
|
26
|
+
|
|
27
|
+
<h2>Account</h2>
|
|
28
|
+
|
|
29
|
+
<p class="admin-field-static">
|
|
30
|
+
Signs in as <strong>{{ account.username }}</strong>, and writes at
|
|
31
|
+
<a href="{{ account.archiveUrl }}">{{ account.archiveUrl }}</a>.
|
|
32
|
+
</p>
|
|
33
|
+
<p class="admin-hint">
|
|
34
|
+
A username is not editable: it is the login, the author URL above, and
|
|
35
|
+
the actor a follower holds. Somebody who needs a different one is a new
|
|
36
|
+
account.
|
|
37
|
+
</p>
|
|
38
|
+
{# The id they were published under somewhere else (TASK-69). Read-only on
|
|
39
|
+
purpose: it is what the fediverse already holds, and changing it would
|
|
40
|
+
orphan every follow. #}
|
|
41
|
+
{% if account.storedActorId %}
|
|
42
|
+
<p class="admin-hint">
|
|
43
|
+
Also <code>{{ account.storedActorId }}</code> — what the fediverse knows
|
|
44
|
+
this user by. Set by the import or by hand in
|
|
45
|
+
<code>data/users.json</code>, never here.
|
|
46
|
+
</p>
|
|
47
|
+
{% endif %}
|
|
48
|
+
|
|
49
|
+
{% set emailHint %}
|
|
50
|
+
{% if mailConfigured %}
|
|
51
|
+
Optional, and never shown on the public site. It is what a forgotten password is recovered through and where the notices below go. Empty it to stop the site writing to this person at all.
|
|
52
|
+
{% else %}
|
|
53
|
+
Optional, and this site sends no mail yet, so nothing will be sent to one. Choose a provider on <a href="{{ adminUrl }}/settings/email">Settings › Email</a> to turn password recovery on.
|
|
54
|
+
{% endif %}
|
|
55
|
+
{% endset %}
|
|
56
|
+
{{ field.text('user-email', fields.email, 'Email address', account.email,
|
|
57
|
+
type='email', autocomplete='email', hint=emailHint) }}
|
|
58
|
+
|
|
59
|
+
<p class="admin-settings-buttons">
|
|
60
|
+
<button type="submit">Save email address</button>
|
|
61
|
+
</p>
|
|
62
|
+
</form>
|
|
63
|
+
|
|
64
|
+
{# The public face of this person (TASK-67). Anybody's, not only your own:
|
|
65
|
+
there is one role, so an admin who has just added a colleague can put a
|
|
66
|
+
name and a line about them on their archive without waiting for them to
|
|
67
|
+
sign in. After decision-14 these same fields are what their ActivityPub
|
|
68
|
+
actor carries, which is why they live beside the account rather than in
|
|
69
|
+
the site settings — and why saving them tells their followers. #}
|
|
70
|
+
<form class="admin-settings" method="post" action="{{ userProfileUrl }}">
|
|
71
|
+
<input type="hidden" name="csrf_token" value="{{ csrfToken }}" />
|
|
72
|
+
<input type="hidden" name="{{ fields.userId }}" value="{{ account.id }}" />
|
|
73
|
+
|
|
74
|
+
<h2>Profile</h2>
|
|
75
|
+
|
|
76
|
+
<p class="admin-hint">
|
|
77
|
+
A profile is public. Nothing in it is required — a user with no profile
|
|
78
|
+
still has an archive under their username — and a box left empty is a
|
|
79
|
+
field they do not have.
|
|
80
|
+
</p>
|
|
81
|
+
|
|
82
|
+
{{ field.text('profile-display-name', fields.displayName, 'Display name',
|
|
83
|
+
account.profile.displayName,
|
|
84
|
+
hint='Printed instead of the login: it heads the archive and is the byline under their posts.') }}
|
|
85
|
+
|
|
86
|
+
{{ field.textarea('profile-bio', fields.bio, 'Bio', account.profile.bio, rows='4',
|
|
87
|
+
hint='A line or two about them, shown on the archive under the name.') }}
|
|
88
|
+
|
|
89
|
+
{% set avatarHint %}A path such as <code>/uploads/2026/09/me.jpg</code>, or a full URL.{% endset %}
|
|
90
|
+
{{ field.text('profile-avatar', fields.avatar, 'Avatar', account.profile.avatar,
|
|
91
|
+
hint=avatarHint) }}
|
|
92
|
+
|
|
93
|
+
{{ field.text('profile-job-title', fields.jobTitle, 'Job title', account.profile.jobTitle,
|
|
94
|
+
hint='What they do, printed beside the name on the archive.') }}
|
|
95
|
+
|
|
96
|
+
{{ field.text('profile-location', fields.location, 'Location', account.profile.location,
|
|
97
|
+
hint='Where they are, as they write it.') }}
|
|
98
|
+
|
|
99
|
+
{% set linksHint %}
|
|
100
|
+
One per line, either <code>Label | https://example.com</code> or a bare
|
|
101
|
+
URL that labels itself.
|
|
102
|
+
{% endset %}
|
|
103
|
+
{{ field.textarea('profile-links', fields.links, 'Links', account.profile.links, rows='4',
|
|
104
|
+
hint=linksHint) }}
|
|
105
|
+
|
|
106
|
+
<p class="admin-settings-buttons">
|
|
107
|
+
<button type="submit">Save profile</button>
|
|
108
|
+
</p>
|
|
109
|
+
</form>
|
|
110
|
+
|
|
111
|
+
{# Only once there is both somewhere to write to and something to write
|
|
112
|
+
with. These switches decide what is sent to the address above, so without
|
|
113
|
+
an address, or without a mail provider on Settings > Email, every one of
|
|
114
|
+
them could be on and the site would still send this person nothing. The
|
|
115
|
+
lines below say which is missing where the panel would have been, rather
|
|
116
|
+
than letting it vanish without explanation. #}
|
|
117
|
+
{% if account.email and mailConfigured %}
|
|
118
|
+
<section class="admin-settings">
|
|
119
|
+
<h2>Email {{ account.username }} about</h2>
|
|
120
|
+
|
|
121
|
+
<p class="admin-hint">
|
|
122
|
+
What this site writes to {{ account.username }} at <code>{{ account.email }}</code>.
|
|
123
|
+
</p>
|
|
124
|
+
|
|
125
|
+
{# One form per switch, not one form with a checkbox each: a browser sends
|
|
126
|
+
no field for an unticked box, so a single form could not tell "turned
|
|
127
|
+
this off" from "left it alone". Adding a notice is one entry in the
|
|
128
|
+
registry and no change here. #}
|
|
129
|
+
{% for notice in account.notifications %}
|
|
130
|
+
<div class="admin-notice">
|
|
131
|
+
<h3>{{ notice.label }}</h3>
|
|
132
|
+
<p class="admin-hint">{{ notice.description }}</p>
|
|
133
|
+
|
|
134
|
+
<form class="admin-inline" method="post" action="{{ userNotificationsUrl }}">
|
|
135
|
+
<input type="hidden" name="csrf_token" value="{{ csrfToken }}" />
|
|
136
|
+
<input type="hidden" name="{{ fields.userId }}" value="{{ account.id }}" />
|
|
137
|
+
<input type="hidden" name="{{ fields.event }}" value="{{ notice.name }}" />
|
|
138
|
+
<input type="hidden" name="{{ fields.on }}" value="{% if notice.on %}{% else %}1{% endif %}" />
|
|
139
|
+
<span class="admin-status">{% if notice.on %}On{% else %}Off{% endif %}</span>
|
|
140
|
+
<button type="submit">{% if notice.on %}Turn off{% else %}Turn on{% endif %}</button>
|
|
141
|
+
</form>
|
|
142
|
+
|
|
143
|
+
{# And, for a notice the registry says can be batched, how often it
|
|
144
|
+
should arrive. A second form because a select needs a Save beside
|
|
145
|
+
it and the switch above is a button; the registry decides which
|
|
146
|
+
notices get one. #}
|
|
147
|
+
{% if notice.batched %}
|
|
148
|
+
<form class="admin-inline" method="post" action="{{ userNotificationModeUrl }}">
|
|
149
|
+
<input type="hidden" name="csrf_token" value="{{ csrfToken }}" />
|
|
150
|
+
<input type="hidden" name="{{ fields.userId }}" value="{{ account.id }}" />
|
|
151
|
+
<input type="hidden" name="{{ fields.event }}" value="{{ notice.name }}" />
|
|
152
|
+
{% call field.select('notice-mode-' + notice.name, fields.mode, 'How often') %}
|
|
153
|
+
{% for choice in notice.modes %}
|
|
154
|
+
<option value="{{ choice.value }}"{% if choice.chosen %} selected{% endif %}>{{ choice.label }}</option>
|
|
155
|
+
{% endfor %}
|
|
156
|
+
{% endcall %}
|
|
157
|
+
<button type="submit">Save</button>
|
|
158
|
+
</form>
|
|
159
|
+
<p class="admin-hint">
|
|
160
|
+
On an hourly or a daily digest nothing is sent as they arrive;
|
|
161
|
+
instead one message a window lists everything still waiting, and
|
|
162
|
+
no message goes at all when nothing is.
|
|
163
|
+
</p>
|
|
164
|
+
{% endif %}
|
|
165
|
+
</div>
|
|
166
|
+
{% endfor %}
|
|
167
|
+
</section>
|
|
168
|
+
{% else %}
|
|
169
|
+
<section class="admin-settings">
|
|
170
|
+
<h2>Email {{ account.username }} about</h2>
|
|
171
|
+
|
|
172
|
+
{% if not mailConfigured %}
|
|
173
|
+
<p class="admin-hint">
|
|
174
|
+
Nothing, while this site has no mail provider: there is nothing to send
|
|
175
|
+
with. Choose one on <a href="{{ adminUrl }}/settings/email">Settings
|
|
176
|
+
› Email</a> and what to send comes back here.
|
|
177
|
+
</p>
|
|
178
|
+
{% else %}
|
|
179
|
+
<p class="admin-hint">
|
|
180
|
+
Nothing, while the box above is empty: there is nowhere to write to.
|
|
181
|
+
Give {% if account.you %}yourself{% else %}this account{% endif %} an
|
|
182
|
+
address and what to send comes back here.
|
|
183
|
+
</p>
|
|
184
|
+
{% endif %}
|
|
185
|
+
</section>
|
|
186
|
+
{% endif %}
|
|
187
|
+
|
|
188
|
+
{# Only on your own page: it asks for the current password, so it is about
|
|
189
|
+
whoever is signed in and means nothing on somebody else's screen.
|
|
190
|
+
Resetting a colleague's password from under them is deliberately not
|
|
191
|
+
offered — a fresh account is what that is for. #}
|
|
192
|
+
{% if account.you %}
|
|
193
|
+
<form class="admin-settings" method="post" action="{{ changePasswordUrl }}">
|
|
194
|
+
<input type="hidden" name="csrf_token" value="{{ csrfToken }}" />
|
|
195
|
+
|
|
196
|
+
<h2>Change your password</h2>
|
|
197
|
+
|
|
198
|
+
{% if passwordProblems.currentPassword or passwordProblems.newPassword %}
|
|
199
|
+
<p class="admin-error">Your password was not changed. Fix the fields marked below and try again.</p>
|
|
200
|
+
{% endif %}
|
|
201
|
+
|
|
202
|
+
{{ field.password('current-password', fields.currentPassword, 'Current password',
|
|
203
|
+
error=passwordProblems.currentPassword, autocomplete='current-password',
|
|
204
|
+
required=true) }}
|
|
205
|
+
|
|
206
|
+
{{ field.password('new-password', fields.newPassword, 'New password',
|
|
207
|
+
error=passwordProblems.newPassword, autocomplete='new-password', required=true) }}
|
|
208
|
+
|
|
209
|
+
{{ field.password('new-password-confirmation', fields.newPasswordConfirmation,
|
|
210
|
+
'New password again', autocomplete='new-password', required=true) }}
|
|
211
|
+
|
|
212
|
+
<p class="admin-hint">Every other browser signed in as you is signed out. This one stays.</p>
|
|
213
|
+
|
|
214
|
+
<p class="admin-settings-buttons">
|
|
215
|
+
<button type="submit">Change password</button>
|
|
216
|
+
</p>
|
|
217
|
+
</form>
|
|
218
|
+
{% endif %}
|
|
219
|
+
|
|
220
|
+
<section class="admin-settings">
|
|
221
|
+
<h2>Delete</h2>
|
|
222
|
+
|
|
223
|
+
{# Either the button or the reason there is none, never both: the screen
|
|
224
|
+
does not offer an action it is about to refuse. #}
|
|
225
|
+
{% if deleteRefusal %}
|
|
226
|
+
<p class="admin-hint">{{ deleteRefusal }}</p>
|
|
227
|
+
{% else %}
|
|
228
|
+
<p class="admin-hint">
|
|
229
|
+
Deleting {{ account.username }} signs out every browser they are in and
|
|
230
|
+
cannot be undone. What they have written stays where it is.
|
|
231
|
+
</p>
|
|
232
|
+
<form method="post" action="{{ deleteUserUrl }}">
|
|
233
|
+
<input type="hidden" name="csrf_token" value="{{ csrfToken }}" />
|
|
234
|
+
<input type="hidden" name="{{ fields.userId }}" value="{{ account.id }}" />
|
|
235
|
+
<button type="submit">Delete {{ account.username }}</button>
|
|
236
|
+
</form>
|
|
237
|
+
{% endif %}
|
|
238
|
+
</section>
|
|
239
|
+
{% endblock %}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{# /admin/users: who can sign in.
|
|
2
|
+
|
|
3
|
+
A listing and nothing else (TASK-97). Every field a user has is edited on
|
|
4
|
+
that user's own screen, which the Edit link in each row goes to, so no box
|
|
5
|
+
in this table can be mistaken for another one. Adding somebody is its own
|
|
6
|
+
screen next door, `new.njk`, because Users > Add new is its own menu entry.
|
|
7
|
+
#}
|
|
8
|
+
{% extends "layouts/shell.njk" %}
|
|
9
|
+
|
|
10
|
+
{% block title %}Users{% endblock %}
|
|
11
|
+
|
|
12
|
+
{% block content %}
|
|
13
|
+
<h1>Users <a class="admin-button admin-button-small" href="{{ addUserUrl }}">Add new</a></h1>
|
|
14
|
+
|
|
15
|
+
<table class="admin-list">
|
|
16
|
+
<thead>
|
|
17
|
+
<tr>
|
|
18
|
+
<th scope="col">Username</th>
|
|
19
|
+
<th scope="col">Email</th>
|
|
20
|
+
<th scope="col">Created</th>
|
|
21
|
+
<th scope="col">Actions</th>
|
|
22
|
+
</tr>
|
|
23
|
+
</thead>
|
|
24
|
+
<tbody>
|
|
25
|
+
{% for entry in users %}
|
|
26
|
+
<tr>
|
|
27
|
+
<td>
|
|
28
|
+
<a href="{{ entry.editUrl }}">{{ entry.username }}</a>{% if entry.you %} <span class="admin-status">(you)</span>{% endif %}
|
|
29
|
+
</td>
|
|
30
|
+
<td>{% if entry.email %}{{ entry.email }}{% else %}<span class="admin-status">None</span>{% endif %}</td>
|
|
31
|
+
<td>{{ entry.createdAt | date('html') }}</td>
|
|
32
|
+
{# Edit, then what can be done, then View: the order and the shape
|
|
33
|
+
`pages/documents/list.njk` uses, down to Edit being a plain link
|
|
34
|
+
rather than a button. A row here is a row there. #}
|
|
35
|
+
<td class="admin-actions">
|
|
36
|
+
<a href="{{ entry.editUrl }}">Edit</a>
|
|
37
|
+
{% if entry.deletable %}
|
|
38
|
+
<form method="post" action="{{ deleteUserUrl }}">
|
|
39
|
+
<input type="hidden" name="csrf_token" value="{{ csrfToken }}" />
|
|
40
|
+
<input type="hidden" name="{{ fields.userId }}" value="{{ entry.id }}" />
|
|
41
|
+
<button type="submit">Delete</button>
|
|
42
|
+
</form>
|
|
43
|
+
{% endif %}
|
|
44
|
+
<a href="{{ entry.archiveUrl }}">View</a>
|
|
45
|
+
</td>
|
|
46
|
+
</tr>
|
|
47
|
+
{% endfor %}
|
|
48
|
+
</tbody>
|
|
49
|
+
</table>
|
|
50
|
+
|
|
51
|
+
{% endblock %}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{# /admin/users/new: add somebody who can sign in.
|
|
2
|
+
|
|
3
|
+
The other half of what the listing used to hold: one form, the same chrome,
|
|
4
|
+
and its own menu entry under Users. A refused add comes back here with what
|
|
5
|
+
was typed still in the boxes, so nothing is retyped to fix one field.
|
|
6
|
+
#}
|
|
7
|
+
{% extends "layouts/shell.njk" %}
|
|
8
|
+
{% import "components/fields.njk" as field %}
|
|
9
|
+
|
|
10
|
+
{% block title %}Add new user{% endblock %}
|
|
11
|
+
|
|
12
|
+
{% block content %}
|
|
13
|
+
<h1>Add new user</h1>
|
|
14
|
+
|
|
15
|
+
<form class="admin-settings" method="post" action="{{ addUserUrl }}">
|
|
16
|
+
<input type="hidden" name="csrf_token" value="{{ csrfToken }}" />
|
|
17
|
+
|
|
18
|
+
{% if addProblems.username or addProblems.password or addProblems.email %}
|
|
19
|
+
<p class="admin-error">Nobody was added. Fix the fields marked below and try again.</p>
|
|
20
|
+
{% endif %}
|
|
21
|
+
|
|
22
|
+
{{ field.text('add-username', fields.username, 'Username', addForm.username,
|
|
23
|
+
error=addProblems.username, required=true) }}
|
|
24
|
+
|
|
25
|
+
{{ field.text('add-email', fields.email, 'Email <span class="admin-status">(optional)</span>',
|
|
26
|
+
addForm.email, type='email', autocomplete='email', error=addProblems.email) }}
|
|
27
|
+
|
|
28
|
+
{{ field.password('add-password', fields.password, 'Password',
|
|
29
|
+
error=addProblems.password, autocomplete='new-password') }}
|
|
30
|
+
|
|
31
|
+
{{ field.checkbox('add-generate', fields.generate,
|
|
32
|
+
'Generate one instead, and show it to me once', checked=addForm.generate,
|
|
33
|
+
hint='A generated password is shown on the next page and nowhere else. Copy it before you leave.') }}
|
|
34
|
+
|
|
35
|
+
<p class="admin-settings-buttons">
|
|
36
|
+
<button type="submit">Add user</button>
|
|
37
|
+
</p>
|
|
38
|
+
</form>
|
|
39
|
+
|
|
40
|
+
<p class="admin-hint"><a href="{{ usersUrl }}">Back to all users</a></p>
|
|
41
|
+
{% endblock %}
|