@geekity/cms 0.17.0 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +163 -50
- package/admin/components/public-admin-bar.njk +3 -1
- package/admin/pages/documents/editor.njk +286 -158
- package/admin/pages/documents/list.njk +2 -0
- package/admin/pages/indieauth/consent.njk +4 -0
- package/admin/pages/settings/privacy.njk +37 -0
- package/admin/pages/users/apps.njk +109 -3
- package/admin/static/admin.css +37 -14
- package/dist/admin/documents.d.ts +34 -4
- package/dist/admin/documents.d.ts.map +1 -1
- package/dist/admin/documents.js +161 -23
- package/dist/admin/documents.js.map +1 -1
- package/dist/admin/editor-layout.d.ts +13 -0
- package/dist/admin/editor-layout.d.ts.map +1 -0
- package/dist/admin/editor-layout.js +61 -0
- package/dist/admin/editor-layout.js.map +1 -0
- package/dist/admin/enclosure-field.d.ts +2 -3
- package/dist/admin/enclosure-field.d.ts.map +1 -1
- package/dist/admin/enclosure-field.js +27 -7
- package/dist/admin/enclosure-field.js.map +1 -1
- package/dist/admin/index.d.ts +1 -0
- package/dist/admin/index.d.ts.map +1 -1
- package/dist/admin/index.js +1 -0
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/location-field.d.ts +27 -0
- package/dist/admin/location-field.d.ts.map +1 -0
- package/dist/admin/location-field.js +98 -0
- package/dist/admin/location-field.js.map +1 -0
- package/dist/admin/menu.d.ts.map +1 -1
- package/dist/admin/menu.js +1 -0
- package/dist/admin/menu.js.map +1 -1
- package/dist/admin/photo-field.d.ts +2 -3
- package/dist/admin/photo-field.d.ts.map +1 -1
- package/dist/admin/photo-field.js +4 -2
- package/dist/admin/photo-field.js.map +1 -1
- package/dist/admin/preview.d.ts.map +1 -1
- package/dist/admin/preview.js +18 -5
- package/dist/admin/preview.js.map +1 -1
- package/dist/admin/read-field.d.ts +22 -0
- package/dist/admin/read-field.d.ts.map +1 -0
- package/dist/admin/read-field.js +61 -0
- package/dist/admin/read-field.js.map +1 -0
- package/dist/admin/settings-page.d.ts +3 -3
- package/dist/admin/settings-page.js +2 -2
- package/dist/admin/settings-pages.d.ts +2 -2
- package/dist/admin/settings-pages.d.ts.map +1 -1
- package/dist/admin/settings-pages.js +4 -2
- package/dist/admin/settings-pages.js.map +1 -1
- package/dist/admin/settings-privacy.d.ts +3 -0
- package/dist/admin/settings-privacy.d.ts.map +1 -0
- package/dist/admin/settings-privacy.js +10 -0
- package/dist/admin/settings-privacy.js.map +1 -0
- package/dist/admin/settings-reading.js +2 -2
- package/dist/admin/settings-reading.js.map +1 -1
- package/dist/admin/settings.d.ts +18 -2
- package/dist/admin/settings.d.ts.map +1 -1
- package/dist/admin/settings.js +27 -0
- package/dist/admin/settings.js.map +1 -1
- package/dist/admin/templates.d.ts +1 -0
- package/dist/admin/templates.d.ts.map +1 -1
- package/dist/admin/templates.js +1 -0
- package/dist/admin/templates.js.map +1 -1
- package/dist/admin/uploads.d.ts.map +1 -1
- package/dist/admin/uploads.js +14 -1
- package/dist/admin/uploads.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +34 -0
- package/dist/cli.js.map +1 -1
- package/dist/comments/routes.js +2 -2
- package/dist/comments/routes.js.map +1 -1
- package/dist/contact/routes.js +2 -2
- package/dist/contact/routes.js.map +1 -1
- package/dist/content/kept-properties.d.ts +5 -0
- package/dist/content/kept-properties.d.ts.map +1 -0
- package/dist/content/kept-properties.js +12 -0
- package/dist/content/kept-properties.js.map +1 -0
- package/dist/content/location.d.ts +62 -0
- package/dist/content/location.d.ts.map +1 -0
- package/dist/content/location.js +240 -0
- package/dist/content/location.js.map +1 -0
- package/dist/content/locations.d.ts +6 -0
- package/dist/content/locations.d.ts.map +1 -0
- package/dist/content/locations.js +7 -0
- package/dist/content/locations.js.map +1 -0
- package/dist/content/metadata/gif.d.ts +3 -0
- package/dist/content/metadata/gif.d.ts.map +1 -0
- package/dist/content/metadata/gif.js +65 -0
- package/dist/content/metadata/gif.js.map +1 -0
- package/dist/content/metadata/index.d.ts +6 -0
- package/dist/content/metadata/index.d.ts.map +1 -0
- package/dist/content/metadata/index.js +24 -0
- package/dist/content/metadata/index.js.map +1 -0
- package/dist/content/metadata/isobmff.d.ts +22 -0
- package/dist/content/metadata/isobmff.d.ts.map +1 -0
- package/dist/content/metadata/isobmff.js +215 -0
- package/dist/content/metadata/isobmff.js.map +1 -0
- package/dist/content/metadata/jpeg.d.ts +3 -0
- package/dist/content/metadata/jpeg.d.ts.map +1 -0
- package/dist/content/metadata/jpeg.js +117 -0
- package/dist/content/metadata/jpeg.js.map +1 -0
- package/dist/content/metadata/png.d.ts +3 -0
- package/dist/content/metadata/png.d.ts.map +1 -0
- package/dist/content/metadata/png.js +74 -0
- package/dist/content/metadata/png.js.map +1 -0
- package/dist/content/metadata/shared.d.ts +17 -0
- package/dist/content/metadata/shared.d.ts.map +1 -0
- package/dist/content/metadata/shared.js +42 -0
- package/dist/content/metadata/shared.js.map +1 -0
- package/dist/content/metadata/sweep.d.ts +14 -0
- package/dist/content/metadata/sweep.d.ts.map +1 -0
- package/dist/content/metadata/sweep.js +54 -0
- package/dist/content/metadata/sweep.js.map +1 -0
- package/dist/content/metadata/tiff.d.ts +7 -0
- package/dist/content/metadata/tiff.d.ts.map +1 -0
- package/dist/content/metadata/tiff.js +56 -0
- package/dist/content/metadata/tiff.js.map +1 -0
- package/dist/content/metadata/webp.d.ts +3 -0
- package/dist/content/metadata/webp.d.ts.map +1 -0
- package/dist/content/metadata/webp.js +67 -0
- package/dist/content/metadata/webp.js.map +1 -0
- package/dist/content/permalink-file.d.ts +7 -0
- package/dist/content/permalink-file.d.ts.map +1 -0
- package/dist/content/permalink-file.js +77 -0
- package/dist/content/permalink-file.js.map +1 -0
- package/dist/content/post-type.d.ts +4 -2
- package/dist/content/post-type.d.ts.map +1 -1
- package/dist/content/post-type.js +9 -1
- package/dist/content/post-type.js.map +1 -1
- package/dist/content/read.d.ts +22 -0
- package/dist/content/read.d.ts.map +1 -0
- package/dist/content/read.js +67 -0
- package/dist/content/read.js.map +1 -0
- package/dist/content/store.d.ts +4 -4
- package/dist/content/store.d.ts.map +1 -1
- package/dist/content/store.js +19 -39
- package/dist/content/store.js.map +1 -1
- package/dist/content/sync.d.ts.map +1 -1
- package/dist/content/sync.js +3 -13
- package/dist/content/sync.js.map +1 -1
- package/dist/content/visibility.d.ts +11 -0
- package/dist/content/visibility.d.ts.map +1 -0
- package/dist/content/visibility.js +14 -0
- package/dist/content/visibility.js.map +1 -0
- package/dist/federation/article.d.ts +4 -3
- package/dist/federation/article.d.ts.map +1 -1
- package/dist/federation/article.js +66 -20
- package/dist/federation/article.js.map +1 -1
- package/dist/federation/citations.d.ts +7 -6
- package/dist/federation/citations.d.ts.map +1 -1
- package/dist/federation/citations.js +44 -28
- package/dist/federation/citations.js.map +1 -1
- package/dist/federation/delivery.d.ts +3 -1
- package/dist/federation/delivery.d.ts.map +1 -1
- package/dist/federation/delivery.js +29 -21
- package/dist/federation/delivery.js.map +1 -1
- package/dist/federation/mount.d.ts.map +1 -1
- package/dist/federation/mount.js +3 -1
- package/dist/federation/mount.js.map +1 -1
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/indexnow.js +2 -2
- package/dist/indexnow.js.map +1 -1
- package/dist/indieauth/activity-log.d.ts +2 -0
- package/dist/indieauth/activity-log.d.ts.map +1 -1
- package/dist/indieauth/activity-log.js +12 -2
- package/dist/indieauth/activity-log.js.map +1 -1
- package/dist/indieauth/app-activity.js +5 -1
- package/dist/indieauth/app-activity.js.map +1 -1
- package/dist/indieauth/bearer.d.ts +10 -6
- package/dist/indieauth/bearer.d.ts.map +1 -1
- package/dist/indieauth/bearer.js +28 -25
- package/dist/indieauth/bearer.js.map +1 -1
- package/dist/indieauth/client-id.d.ts +10 -0
- package/dist/indieauth/client-id.d.ts.map +1 -0
- package/dist/indieauth/client-id.js +30 -0
- package/dist/indieauth/client-id.js.map +1 -0
- package/dist/indieauth/connected-apps.d.ts +4 -0
- package/dist/indieauth/connected-apps.d.ts.map +1 -1
- package/dist/indieauth/connected-apps.js +149 -20
- package/dist/indieauth/connected-apps.js.map +1 -1
- package/dist/indieauth/consent.d.ts.map +1 -1
- package/dist/indieauth/consent.js +5 -1
- package/dist/indieauth/consent.js.map +1 -1
- package/dist/indieauth/grants.d.ts +2 -7
- package/dist/indieauth/grants.d.ts.map +1 -1
- package/dist/indieauth/grants.js.map +1 -1
- package/dist/indieauth/redeem.d.ts.map +1 -1
- package/dist/indieauth/redeem.js +10 -5
- package/dist/indieauth/redeem.js.map +1 -1
- package/dist/indieauth/request.d.ts +8 -4
- package/dist/indieauth/request.d.ts.map +1 -1
- package/dist/indieauth/request.js +29 -30
- package/dist/indieauth/request.js.map +1 -1
- package/dist/indieauth/token.js +2 -2
- package/dist/indieauth/token.js.map +1 -1
- package/dist/indieauth/tokens.d.ts +28 -7
- package/dist/indieauth/tokens.d.ts.map +1 -1
- package/dist/indieauth/tokens.js +26 -5
- package/dist/indieauth/tokens.js.map +1 -1
- package/dist/micropub/create.d.ts +26 -0
- package/dist/micropub/create.d.ts.map +1 -1
- package/dist/micropub/create.js +158 -13
- package/dist/micropub/create.js.map +1 -1
- package/dist/micropub/endpoint.d.ts +4 -5
- package/dist/micropub/endpoint.d.ts.map +1 -1
- package/dist/micropub/endpoint.js +83 -25
- package/dist/micropub/endpoint.js.map +1 -1
- package/dist/micropub/media.d.ts +6 -2
- package/dist/micropub/media.d.ts.map +1 -1
- package/dist/micropub/media.js +43 -37
- package/dist/micropub/media.js.map +1 -1
- package/dist/micropub/update.d.ts +13 -3
- package/dist/micropub/update.d.ts.map +1 -1
- package/dist/micropub/update.js +60 -7
- package/dist/micropub/update.js.map +1 -1
- package/dist/notify.d.ts.map +1 -1
- package/dist/notify.js +2 -5
- package/dist/notify.js.map +1 -1
- package/dist/web/absolute-urls.d.ts +2 -0
- package/dist/web/absolute-urls.d.ts.map +1 -0
- package/dist/web/absolute-urls.js +22 -0
- package/dist/web/absolute-urls.js.map +1 -0
- package/dist/web/admin-bar.d.ts.map +1 -1
- package/dist/web/admin-bar.js +25 -0
- package/dist/web/admin-bar.js.map +1 -1
- package/dist/web/context.d.ts +29 -1
- package/dist/web/context.d.ts.map +1 -1
- package/dist/web/context.js +33 -0
- package/dist/web/context.js.map +1 -1
- package/dist/web/conversation.d.ts.map +1 -1
- package/dist/web/conversation.js +5 -4
- package/dist/web/conversation.js.map +1 -1
- package/dist/web/documents.d.ts +34 -10
- package/dist/web/documents.d.ts.map +1 -1
- package/dist/web/documents.js +41 -15
- package/dist/web/documents.js.map +1 -1
- package/dist/web/feed-item.d.ts +25 -6
- package/dist/web/feed-item.d.ts.map +1 -1
- package/dist/web/feed-item.js +31 -7
- package/dist/web/feed-item.js.map +1 -1
- package/dist/web/feed-json.d.ts +3 -1
- package/dist/web/feed-json.d.ts.map +1 -1
- package/dist/web/feed-json.js +2 -0
- package/dist/web/feed-json.js.map +1 -1
- package/dist/web/feed-source.d.ts +6 -0
- package/dist/web/feed-source.d.ts.map +1 -1
- package/dist/web/feed-source.js.map +1 -1
- package/dist/web/feeds.d.ts.map +1 -1
- package/dist/web/feeds.js +2 -0
- package/dist/web/feeds.js.map +1 -1
- package/dist/web/html-attributes.d.ts +3 -0
- package/dist/web/html-attributes.d.ts.map +1 -0
- package/dist/web/html-attributes.js +15 -0
- package/dist/web/html-attributes.js.map +1 -0
- package/dist/web/index.d.ts +1 -1
- package/dist/web/index.d.ts.map +1 -1
- package/dist/web/index.js +1 -1
- package/dist/web/index.js.map +1 -1
- package/dist/web/negotiate.d.ts +2 -0
- package/dist/web/negotiate.d.ts.map +1 -1
- package/dist/web/negotiate.js +2 -1
- package/dist/web/negotiate.js.map +1 -1
- package/dist/web/render.d.ts +13 -4
- package/dist/web/render.d.ts.map +1 -1
- package/dist/web/render.js +25 -12
- package/dist/web/render.js.map +1 -1
- package/dist/web/routes.d.ts.map +1 -1
- package/dist/web/routes.js +26 -11
- package/dist/web/routes.js.map +1 -1
- package/dist/webmention/fetch-public.d.ts +3 -1
- package/dist/webmention/fetch-public.d.ts.map +1 -1
- package/dist/webmention/fetch-public.js +17 -11
- package/dist/webmention/fetch-public.js.map +1 -1
- package/dist/webmention/reply-context.d.ts +18 -5
- package/dist/webmention/reply-context.d.ts.map +1 -1
- package/dist/webmention/reply-context.js +118 -19
- package/dist/webmention/reply-context.js.map +1 -1
- package/dist/webmention/reply-contexts.d.ts +17 -14
- package/dist/webmention/reply-contexts.d.ts.map +1 -1
- package/dist/webmention/reply-contexts.js +32 -21
- package/dist/webmention/reply-contexts.js.map +1 -1
- package/dist/webmention/service.d.ts.map +1 -1
- package/dist/webmention/service.js +7 -2
- package/dist/webmention/service.js.map +1 -1
- package/package.json +9 -9
- package/themes/default/README.md +45 -7
- package/themes/default/layouts/base.njk +2 -0
- package/themes/default/layouts/post.njk +12 -7
- package/themes/default/partials/citations.njk +12 -3
- package/themes/default/partials/cited-page.njk +41 -0
- package/themes/default/partials/location.njk +12 -0
- package/themes/default/partials/post-list.njk +10 -5
- package/themes/default/partials/read.njk +5 -0
- package/themes/default/partials/reply-context.njk +2 -9
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
Only your own connections, each with a Revoke button that names the app,
|
|
4
4
|
so a screen reader moving between buttons hears which one it is on. #}
|
|
5
5
|
{% extends "layouts/shell.njk" %}
|
|
6
|
+
{% import "components/fields.njk" as field %}
|
|
6
7
|
|
|
7
8
|
{% block title %}Connected apps{% endblock %}
|
|
8
9
|
|
|
@@ -13,8 +14,9 @@
|
|
|
13
14
|
<p class="admin-hint">
|
|
14
15
|
These apps signed in as you and can act as you, within the permissions
|
|
15
16
|
listed. An app that keeps using its connection stays connected; one left
|
|
16
|
-
unused is disconnected on the date shown.
|
|
17
|
-
|
|
17
|
+
unused is disconnected on the date shown. A token you created works
|
|
18
|
+
until the date shown. Revoking disconnects it now: its next request is
|
|
19
|
+
refused, and it has to ask you again.
|
|
18
20
|
</p>
|
|
19
21
|
|
|
20
22
|
<table class="admin-list">
|
|
@@ -32,7 +34,13 @@
|
|
|
32
34
|
<tbody>
|
|
33
35
|
{% for connection in connections %}
|
|
34
36
|
<tr>
|
|
35
|
-
<td
|
|
37
|
+
<td>
|
|
38
|
+
{% if connection.url %}
|
|
39
|
+
<a href="{{ connection.url }}">{{ connection.name }}</a>
|
|
40
|
+
{% else %}
|
|
41
|
+
{{ connection.name }} <span class="admin-status">Token you created</span>
|
|
42
|
+
{% endif %}
|
|
43
|
+
</td>
|
|
36
44
|
<td>
|
|
37
45
|
<ul>
|
|
38
46
|
{% for scope in connection.scopes %}
|
|
@@ -71,4 +79,102 @@
|
|
|
71
79
|
is listed here, with a button to disconnect it.
|
|
72
80
|
</p>
|
|
73
81
|
{% endif %}
|
|
82
|
+
|
|
83
|
+
<h2 id="create-token">Create a token</h2>
|
|
84
|
+
|
|
85
|
+
{% if createToken.created %}
|
|
86
|
+
<div class="admin-flash" role="status">
|
|
87
|
+
{{ field.text('created-token', 'created-token', 'Token for ' ~ createToken.created.name, createToken.created.token,
|
|
88
|
+
readonly=true, spellcheck='false',
|
|
89
|
+
hint='Copy it now. It will not be shown again: the site keeps only a fingerprint of it.') }}
|
|
90
|
+
</div>
|
|
91
|
+
{% endif %}
|
|
92
|
+
|
|
93
|
+
{% if createToken.problems.name or createToken.problems.scopes or createToken.problems.expires %}
|
|
94
|
+
{% call field.summary('Nothing was saved. Fix the fields marked below and try again.') %}
|
|
95
|
+
{{ field.problem('create-token-name', createToken.problems.name) }}
|
|
96
|
+
{{ field.problem('create-token-scope-profile', createToken.problems.scopes) }}
|
|
97
|
+
{{ field.problem('create-token-expires', createToken.problems.expires) }}
|
|
98
|
+
{% endcall %}
|
|
99
|
+
{% endif %}
|
|
100
|
+
|
|
101
|
+
<p class="admin-hint">
|
|
102
|
+
Some tools and scripts cannot sign in, but accept a token you paste in,
|
|
103
|
+
such as the Manual tab of micropub.rocks. A token acts as you on this
|
|
104
|
+
site's Micropub endpoint, with only the permissions you tick, until it
|
|
105
|
+
expires or you revoke it above.
|
|
106
|
+
</p>
|
|
107
|
+
|
|
108
|
+
<form method="post" action="{{ createToken.url }}">
|
|
109
|
+
<input type="hidden" name="csrf_token" value="{{ csrfToken }}" />
|
|
110
|
+
{{ field.text('create-token-name', 'name', 'Name', createToken.name,
|
|
111
|
+
error=createToken.problems.name, required=true,
|
|
112
|
+
hint='What will use it, such as Publishing script.') }}
|
|
113
|
+
<fieldset>
|
|
114
|
+
<legend>It may</legend>
|
|
115
|
+
{% for scope in createToken.scopes %}
|
|
116
|
+
{{ field.checkbox('create-token-scope-' ~ scope.name, 'scope', scope.label, checked=scope.checked, value=scope.name,
|
|
117
|
+
error=(createToken.problems.scopes if loop.first else '')) }}
|
|
118
|
+
{% endfor %}
|
|
119
|
+
</fieldset>
|
|
120
|
+
{% call field.select('create-token-expires', 'expires', 'Expires after', error=createToken.problems.expires) %}
|
|
121
|
+
{% for expiry in createToken.expiries %}
|
|
122
|
+
<option value="{{ expiry.days }}"{% if expiry.selected %} selected{% endif %}>{% if expiry.days == 365 %}1 year{% else %}{{ expiry.days }} days{% endif %}</option>
|
|
123
|
+
{% endfor %}
|
|
124
|
+
{% endcall %}
|
|
125
|
+
<button type="submit">Create token</button>
|
|
126
|
+
</form>
|
|
127
|
+
|
|
128
|
+
<h2 id="without-pkce">Apps allowed without PKCE</h2>
|
|
129
|
+
|
|
130
|
+
{% if withoutPkce.problem %}
|
|
131
|
+
{% call field.summary('Nothing was saved. Fix the field marked below and try again.') %}
|
|
132
|
+
{{ field.problem('without-pkce-client', withoutPkce.problem) }}
|
|
133
|
+
{% endcall %}
|
|
134
|
+
{% endif %}
|
|
135
|
+
|
|
136
|
+
<p class="admin-hint">
|
|
137
|
+
PKCE protects a sign-in when somebody intercepts the one-time code an app
|
|
138
|
+
is handed: without the secret the app kept, the code is useless. Every app
|
|
139
|
+
must use it, unless you list it here. List only an app you trust that
|
|
140
|
+
cannot sign in otherwise, such as iA Writer. A listed app is let in without
|
|
141
|
+
PKCE only when it sends you back to an https address on its own host, and
|
|
142
|
+
the consent screen tells you when it is.
|
|
143
|
+
</p>
|
|
144
|
+
|
|
145
|
+
{% if withoutPkce.clients | length %}
|
|
146
|
+
<table class="admin-list">
|
|
147
|
+
<caption class="admin-visually-hidden">Apps allowed without PKCE</caption>
|
|
148
|
+
<thead>
|
|
149
|
+
<tr>
|
|
150
|
+
<th scope="col">client_id</th>
|
|
151
|
+
<th scope="col">Actions</th>
|
|
152
|
+
</tr>
|
|
153
|
+
</thead>
|
|
154
|
+
<tbody>
|
|
155
|
+
{% for client in withoutPkce.clients %}
|
|
156
|
+
<tr>
|
|
157
|
+
<td><code>{{ client }}</code></td>
|
|
158
|
+
<td class="admin-actions">
|
|
159
|
+
<form method="post" action="{{ withoutPkce.removeUrl }}">
|
|
160
|
+
<input type="hidden" name="csrf_token" value="{{ csrfToken }}" />
|
|
161
|
+
<input type="hidden" name="{{ withoutPkce.field }}" value="{{ client }}" />
|
|
162
|
+
<button type="submit">Remove {{ client }}</button>
|
|
163
|
+
</form>
|
|
164
|
+
</td>
|
|
165
|
+
</tr>
|
|
166
|
+
{% endfor %}
|
|
167
|
+
</tbody>
|
|
168
|
+
</table>
|
|
169
|
+
{% else %}
|
|
170
|
+
<p>No apps are listed. Every app must use PKCE to sign in.</p>
|
|
171
|
+
{% endif %}
|
|
172
|
+
|
|
173
|
+
<form method="post" action="{{ withoutPkce.addUrl }}">
|
|
174
|
+
<input type="hidden" name="csrf_token" value="{{ csrfToken }}" />
|
|
175
|
+
{{ field.text('without-pkce-client', withoutPkce.field, 'App’s client_id', withoutPkce.value,
|
|
176
|
+
error=withoutPkce.problem, inputmode='url', spellcheck='false', required=true,
|
|
177
|
+
hint='The URL the app names itself by when it signs in, as App activity shows it, such as <code>https://ia.net/writer</code>.') }}
|
|
178
|
+
<button type="submit">Allow without PKCE</button>
|
|
179
|
+
</form>
|
|
74
180
|
{% endblock %}
|
package/admin/static/admin.css
CHANGED
|
@@ -490,37 +490,60 @@ button[type='submit']:hover,
|
|
|
490
490
|
min-height: 28rem;
|
|
491
491
|
}
|
|
492
492
|
|
|
493
|
-
.admin-editor-
|
|
493
|
+
.admin-editor-group {
|
|
494
494
|
margin: 1.25rem 0 0;
|
|
495
|
-
padding: 0.75rem 1rem 1rem;
|
|
496
495
|
border: 1px solid var(--admin-border);
|
|
497
496
|
}
|
|
498
497
|
|
|
499
|
-
.admin-editor-
|
|
500
|
-
margin:
|
|
501
|
-
padding: 0.75rem 1rem 1rem;
|
|
502
|
-
border: 1px solid var(--admin-border);
|
|
498
|
+
.admin-editor-side > .admin-editor-group:first-child {
|
|
499
|
+
margin-top: 0;
|
|
503
500
|
}
|
|
504
501
|
|
|
505
|
-
.admin-editor-
|
|
506
|
-
|
|
507
|
-
font-
|
|
502
|
+
.admin-editor-group > summary {
|
|
503
|
+
padding: 0.5rem 0.75rem;
|
|
504
|
+
font-weight: 600;
|
|
505
|
+
cursor: pointer;
|
|
508
506
|
}
|
|
509
507
|
|
|
510
|
-
.admin-editor-
|
|
508
|
+
.admin-editor-group > summary:focus-visible {
|
|
509
|
+
outline: 2px solid var(--admin-link);
|
|
510
|
+
outline-offset: 2px;
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
.admin-editor-group > fieldset {
|
|
514
|
+
min-width: 0;
|
|
515
|
+
margin: 0;
|
|
516
|
+
padding: 0 0.75rem 0.75rem;
|
|
517
|
+
border: 0;
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
.admin-editor-group > fieldset > label:first-of-type {
|
|
521
|
+
margin-top: 0.25rem;
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
.admin-editor-row {
|
|
525
|
+
margin-top: 0.75rem;
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
.admin-editor-row > fieldset {
|
|
511
529
|
display: grid;
|
|
512
530
|
grid-template-columns: max-content minmax(0, 1fr);
|
|
513
531
|
gap: 0.4rem 0.75rem;
|
|
514
532
|
align-items: center;
|
|
515
|
-
margin: 0.75rem 0 0;
|
|
516
|
-
padding: 0.5rem 0.75rem 0.75rem;
|
|
517
|
-
border: 1px solid var(--admin-border);
|
|
518
533
|
}
|
|
519
534
|
|
|
520
|
-
.admin-editor-
|
|
535
|
+
.admin-editor-row > fieldset > label:first-of-type {
|
|
536
|
+
margin-top: 0;
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
.admin-editor-row label {
|
|
521
540
|
margin: 0;
|
|
522
541
|
}
|
|
523
542
|
|
|
543
|
+
.admin-editor-row .admin-field-error {
|
|
544
|
+
grid-column: 1 / -1;
|
|
545
|
+
}
|
|
546
|
+
|
|
524
547
|
.admin-hint {
|
|
525
548
|
margin: 0.25rem 0 0;
|
|
526
549
|
color: var(--admin-muted);
|
|
@@ -2,13 +2,19 @@ import type { Context, Hono } from 'hono';
|
|
|
2
2
|
import type { Document, DocumentType } from '../content/document.ts';
|
|
3
3
|
import type { Enclosure } from '../content/enclosure.ts';
|
|
4
4
|
import type { Photo } from '../content/photo.ts';
|
|
5
|
+
import type { PostLocation } from '../content/location.ts';
|
|
6
|
+
import type { KeptProperties } from '../content/kept-properties.ts';
|
|
5
7
|
import type { ContentStore, ListAllOptions } from '../content/store.ts';
|
|
8
|
+
import type { StoredVisibility } from '../content/visibility.ts';
|
|
6
9
|
import type { ResolvedConfig } from '../config.ts';
|
|
7
10
|
import type { DocumentChange } from '../content/sync.ts';
|
|
8
11
|
import type { GeekityEnv } from '../env.ts';
|
|
9
12
|
import type { UndescribedImage } from '../images/alt-text.ts';
|
|
10
13
|
import type { EnclosureForm } from './enclosure-field.ts';
|
|
14
|
+
import type { Refusal } from './editor-layout.ts';
|
|
15
|
+
import type { LocationForm } from './location-field.ts';
|
|
11
16
|
import type { PhotoRow } from './photo-field.ts';
|
|
17
|
+
import type { ReadOfForm } from './read-field.ts';
|
|
12
18
|
/**
|
|
13
19
|
* Everything that differs between the posts screens and the pages screens.
|
|
14
20
|
*
|
|
@@ -129,6 +135,7 @@ export interface DocumentWrite {
|
|
|
129
135
|
readonly form: EditorForm;
|
|
130
136
|
/** Whether it is saved as a draft, which the editor's buttons decide. */
|
|
131
137
|
readonly draft: boolean;
|
|
138
|
+
readonly keptProperties?: KeptProperties | undefined;
|
|
132
139
|
}
|
|
133
140
|
/** What came of a {@link writeDocument}. */
|
|
134
141
|
export type WriteOutcome = {
|
|
@@ -136,10 +143,9 @@ export type WriteOutcome = {
|
|
|
136
143
|
readonly saved: Document;
|
|
137
144
|
/** Images published without alt text, which the editor warns about. */
|
|
138
145
|
readonly undescribed: readonly UndescribedImage[];
|
|
139
|
-
} | {
|
|
146
|
+
} | ({
|
|
140
147
|
readonly outcome: 'refused';
|
|
141
|
-
|
|
142
|
-
} | {
|
|
148
|
+
} & Refusal) | {
|
|
143
149
|
readonly outcome: 'conflict';
|
|
144
150
|
/** The document as the form loaded it, which only an edit has. */
|
|
145
151
|
readonly document: Document;
|
|
@@ -258,9 +264,21 @@ export interface EditorForm {
|
|
|
258
264
|
likeOf: string;
|
|
259
265
|
/** The page this one bookmarks, the mf2 `bookmark-of` (TASK-169). Posts only. */
|
|
260
266
|
bookmarkOf: string;
|
|
267
|
+
/**
|
|
268
|
+
* How far the post's author got with what they read, the mf2 `read-status`
|
|
269
|
+
* (TASK-229), as the file or the form spells it. Posts only.
|
|
270
|
+
*/
|
|
271
|
+
readStatus: string;
|
|
272
|
+
/** What was read, the mf2 `read-of` (TASK-229). Posts only. */
|
|
273
|
+
readOf: ReadOfForm;
|
|
261
274
|
/** The language it is written in, the `lang` key; empty for the site's. */
|
|
262
275
|
lang: string;
|
|
263
276
|
draft: boolean;
|
|
277
|
+
/**
|
|
278
|
+
* Whether the document is listed or only served at its URL (TASK-227), or a
|
|
279
|
+
* value the site does not recognize, which hides it until one is chosen.
|
|
280
|
+
*/
|
|
281
|
+
visibility: StoredVisibility;
|
|
264
282
|
/** Whether `eleventyExcludeFromCollections` is set. Pages only. */
|
|
265
283
|
exclude: boolean;
|
|
266
284
|
/** Whether the page offers a contact form. Pages only. */
|
|
@@ -280,6 +298,12 @@ export interface EditorForm {
|
|
|
280
298
|
enclosure: EnclosureForm;
|
|
281
299
|
/** The post's photos (TASK-166), without the blank row the editor adds. Posts only. */
|
|
282
300
|
photos: PhotoRow[];
|
|
301
|
+
/**
|
|
302
|
+
* Where the post was written (TASK-223). Posts only; blank on a page. It is
|
|
303
|
+
* the one field that is not written into the file: the save puts it in
|
|
304
|
+
* `data/locations.json` under the post's permalink (decision-29).
|
|
305
|
+
*/
|
|
306
|
+
location: LocationForm;
|
|
283
307
|
/** The ids of the declared syndication targets it selects (TASK-155). Posts only. */
|
|
284
308
|
syndicateTo: string[];
|
|
285
309
|
body: string;
|
|
@@ -301,8 +325,12 @@ export declare function blankForm(kind: DocumentKind, timezone?: string, now?: D
|
|
|
301
325
|
* {@link wallClockIn} keeps whatever precision the instant has, so a form
|
|
302
326
|
* submitted with the field untouched writes back the very instant it was
|
|
303
327
|
* filled in from.
|
|
328
|
+
*
|
|
329
|
+
* `location` is what `data/locations.json` holds for the post (decision-29),
|
|
330
|
+
* which a document does not carry. It is required because a form loaded
|
|
331
|
+
* without it would remove the stored location on save.
|
|
304
332
|
*/
|
|
305
|
-
export declare function formFor(document: Document, timezone
|
|
333
|
+
export declare function formFor(document: Document, timezone: string, location: PostLocation | undefined): EditorForm;
|
|
306
334
|
/**
|
|
307
335
|
* The document of this kind with this slug.
|
|
308
336
|
*
|
|
@@ -327,6 +355,8 @@ export interface DocumentRow {
|
|
|
327
355
|
trashed: boolean;
|
|
328
356
|
/** Whether its date has not arrived, so the public site is holding it back. */
|
|
329
357
|
scheduled: boolean;
|
|
358
|
+
/** Whether its `visibility` is one the site does not recognize, so it is not served. */
|
|
359
|
+
hidden: boolean;
|
|
330
360
|
/** Where the editor for it lives. */
|
|
331
361
|
editUrl: string;
|
|
332
362
|
/** Its public URL, or `undefined` when the public site would not serve it. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documents.d.ts","sourceRoot":"","sources":["../../src/admin/documents.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAI1C,OAAO,KAAK,EAAE,QAAQ,EAAmB,YAAY,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"documents.d.ts","sourceRoot":"","sources":["../../src/admin/documents.ts"],"names":[],"mappings":"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"}
|