domma-cms 0.92.1 → 0.94.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.
Files changed (177) hide show
  1. package/CLAUDE.md +5 -3
  2. package/admin/css/admin.css +1 -1
  3. package/admin/js/app.js +2 -2
  4. package/admin/js/lib/action-editor-arrange.js +1 -1
  5. package/admin/js/lib/api-tokens-arrange.js +2 -2
  6. package/admin/js/lib/block-editor-arrange.js +1 -1
  7. package/admin/js/lib/blocks-arrange.js +1 -1
  8. package/admin/js/lib/collection-entries-arrange.js +1 -1
  9. package/admin/js/lib/components-arrange.js +1 -1
  10. package/admin/js/lib/dashboard-arrange.js +1 -1
  11. package/admin/js/lib/dates.js +1 -0
  12. package/admin/js/lib/forms-arrange.js +1 -1
  13. package/admin/js/lib/media-arrange.js +1 -1
  14. package/admin/js/lib/notifications-arrange.js +1 -1
  15. package/admin/js/lib/pages-arrange.js +1 -1
  16. package/admin/js/lib/related.js +1 -1
  17. package/admin/js/lib/timeline-builder.js +2 -2
  18. package/admin/js/templates/action-editor.html +6 -5
  19. package/admin/js/templates/actions-list.html +1 -1
  20. package/admin/js/templates/contacts.html +1 -1
  21. package/admin/js/templates/docs/api-actions.html +86 -60
  22. package/admin/js/templates/docs/api-authentication.html +159 -123
  23. package/admin/js/templates/docs/api-builder.html +197 -0
  24. package/admin/js/templates/docs/api-collections.html +199 -259
  25. package/admin/js/templates/docs/api-external.html +225 -0
  26. package/admin/js/templates/docs/api-forms.html +268 -0
  27. package/admin/js/templates/docs/api-layouts.html +70 -45
  28. package/admin/js/templates/docs/api-media.html +57 -80
  29. package/admin/js/templates/docs/api-navigation.html +66 -22
  30. package/admin/js/templates/docs/api-pages.html +109 -129
  31. package/admin/js/templates/docs/api-plugins.html +123 -61
  32. package/admin/js/templates/docs/api-scaffold.html +185 -0
  33. package/admin/js/templates/docs/api-settings.html +72 -64
  34. package/admin/js/templates/docs/api-users.html +74 -107
  35. package/admin/js/templates/docs/api-views.html +68 -54
  36. package/admin/js/templates/docs/components-howto.html +20 -17
  37. package/admin/js/templates/docs/components-reference.html +13 -16
  38. package/admin/js/templates/docs/components-rules.html +7 -6
  39. package/admin/js/templates/docs/components-walkthrough.html +19 -19
  40. package/admin/js/templates/docs/tutorial-crud.html +71 -40
  41. package/admin/js/templates/docs/tutorial-forms.html +51 -35
  42. package/admin/js/templates/docs/tutorial-plugin.html +132 -56
  43. package/admin/js/templates/docs/usage-actions.html +61 -15
  44. package/admin/js/templates/docs/usage-collections.html +108 -0
  45. package/admin/js/templates/docs/usage-cta-shortcode.html +14 -3
  46. package/admin/js/templates/docs/usage-dconfig.html +0 -3
  47. package/admin/js/templates/docs/usage-editions.html +213 -0
  48. package/admin/js/templates/docs/usage-media.html +22 -6
  49. package/admin/js/templates/docs/usage-navigation.html +74 -18
  50. package/admin/js/templates/docs/usage-pages.html +60 -20
  51. package/admin/js/templates/docs/usage-plugins.html +89 -17
  52. package/admin/js/templates/docs/usage-shortcodes.html +123 -70
  53. package/admin/js/templates/docs/usage-site-settings.html +50 -18
  54. package/admin/js/templates/docs/usage-tools.html +73 -0
  55. package/admin/js/templates/docs/usage-users-roles.html +99 -20
  56. package/admin/js/templates/docs/usage-views.html +36 -19
  57. package/admin/js/templates/documentation.html +153 -32
  58. package/admin/js/templates/page-editor.html +0 -5
  59. package/admin/js/templates/plugin-guide.html +15 -0
  60. package/admin/js/templates/plugin-guides.html +21 -0
  61. package/admin/js/templates/pro-docs.html +53 -234
  62. package/admin/js/templates/tutorials.html +5 -4
  63. package/admin/js/views/actions-list.js +3 -3
  64. package/admin/js/views/analytics.js +5 -5
  65. package/admin/js/views/api-endpoint-editor.js +2 -2
  66. package/admin/js/views/block-editor.js +4 -4
  67. package/admin/js/views/blocks.js +4 -4
  68. package/admin/js/views/collection-editor.js +4 -4
  69. package/admin/js/views/collection-entries.js +7 -7
  70. package/admin/js/views/component-editor.js +2 -2
  71. package/admin/js/views/contacts.js +22 -20
  72. package/admin/js/views/context-menu-editor.js +5 -5
  73. package/admin/js/views/doc-pages.js +1 -1
  74. package/admin/js/views/form-editor.js +4 -4
  75. package/admin/js/views/form-submissions.js +2 -2
  76. package/admin/js/views/index.js +1 -1
  77. package/admin/js/views/media.js +3 -3
  78. package/admin/js/views/menu-editor.js +13 -13
  79. package/admin/js/views/menu-locations.js +2 -2
  80. package/admin/js/views/my-profile.js +1 -1
  81. package/admin/js/views/page-editor.js +8 -8
  82. package/admin/js/views/plugin-guides.js +5 -0
  83. package/admin/js/views/project-detail.js +2 -2
  84. package/admin/js/views/project-settings.js +1 -1
  85. package/admin/js/views/role-editor.js +4 -4
  86. package/admin/js/views/search.js +2 -2
  87. package/admin/js/views/seo.js +17 -17
  88. package/admin/js/views/settings.js +3 -3
  89. package/admin/js/views/theme.js +3 -3
  90. package/admin/js/views/user-editor.js +1 -1
  91. package/admin/js/views/users.js +2 -2
  92. package/admin/js/views/view-editor.js +1 -1
  93. package/bin/cli.js +13 -13
  94. package/bin/lib/node-version.js +29 -0
  95. package/package.json +1 -1
  96. package/plugins/_lib/admin/mail/compose-window.js +3 -2
  97. package/plugins/_lib/admin/mail/reader-view.js +7 -6
  98. package/plugins/_lib/admin/mail/scheduling.js +4 -2
  99. package/plugins/_lib/admin/mail/templates.js +4 -4
  100. package/plugins/_lib/admin/ui/dates.js +85 -0
  101. package/plugins/blog/CLAUDE.md +31 -22
  102. package/plugins/blog/admin/views/blog.js +3 -2
  103. package/plugins/blog/admin/views/comments.js +2 -1
  104. package/plugins/blog/admin/views/post-editor.js +4 -4
  105. package/plugins/blog/blocks/blog-card-row.html +1 -1
  106. package/plugins/blog/blocks/blog-card.html +2 -2
  107. package/plugins/blog/blocks/blog-post-classic.html +2 -2
  108. package/plugins/blog/blocks/blog-post-essay.html +2 -2
  109. package/plugins/blog/blocks/blog-post-feature.html +2 -2
  110. package/plugins/blog/blocks/blog-post-minimal.html +2 -2
  111. package/plugins/blog/blocks/blog-post-sidebar.html +2 -2
  112. package/plugins/blog/blocks/blog-post-split.html +2 -2
  113. package/plugins/blog/docs/guide.md +205 -0
  114. package/plugins/blog/lib/layouts.js +3 -3
  115. package/plugins/blog/lib/page.js +2 -1
  116. package/plugins/blog/plugin.js +3 -3
  117. package/plugins/blog/plugin.json +4 -4
  118. package/plugins/blog/tests/layouts.test.js +6 -0
  119. package/plugins/feedback/CLAUDE.md +22 -3
  120. package/plugins/feedback/admin/lib/kit.js +6 -7
  121. package/plugins/feedback/admin/views/feedback.js +79 -10
  122. package/plugins/feedback/admin/views/send.js +28 -6
  123. package/plugins/feedback/docs/guide.md +95 -0
  124. package/plugins/feedback/lib/receiver.js +9 -2
  125. package/plugins/feedback/lib/sender.js +3 -2
  126. package/plugins/feedback/plugin.js +54 -6
  127. package/plugins/feedback/plugin.json +4 -4
  128. package/plugins/feedback/tests/api.test.js +74 -2
  129. package/plugins/free-tier.lock.json +49 -44
  130. package/plugins/mail-reader/CLAUDE.md +33 -18
  131. package/plugins/mail-reader/docs/guide.md +147 -0
  132. package/plugins/mail-reader/plugin.json +1 -1
  133. package/plugins/security/CLAUDE.md +4 -1
  134. package/plugins/security/admin/views/security.js +5 -5
  135. package/plugins/security/docs/guide.md +170 -0
  136. package/plugins/security/plugin.js +2 -1
  137. package/plugins/security/plugin.json +2 -1
  138. package/plugins/shopping-cart/CLAUDE.md +7 -1
  139. package/plugins/shopping-cart/admin/lib/kit.js +5 -2
  140. package/plugins/shopping-cart/admin/views/orders.js +4 -4
  141. package/plugins/shopping-cart/admin/views/overview.js +2 -2
  142. package/plugins/shopping-cart/docs/guide.md +191 -0
  143. package/plugins/shopping-cart/lib/render.js +2 -1
  144. package/plugins/shopping-cart/plugin.json +3 -3
  145. package/public/js/collection-browser.js +2 -2
  146. package/public/js/site.js +1 -1
  147. package/scripts/gen-instance-secret.js +3 -1
  148. package/scripts/setup.js +3 -1
  149. package/server/middleware/auth.js +2 -1
  150. package/server/routes/api/actions.js +47 -27
  151. package/server/routes/api/blocks.js +2 -1
  152. package/server/routes/api/collections.js +16 -52
  153. package/server/routes/api/contacts.js +66 -3
  154. package/server/routes/api/documentation.js +42 -0
  155. package/server/routes/api/notifications.js +3 -2
  156. package/server/routes/api/users.js +10 -6
  157. package/server/server.js +16 -1
  158. package/server/services/actions.js +110 -34
  159. package/server/services/adapterRegistry.js +169 -16
  160. package/server/services/adapters/FileAdapter.js +25 -0
  161. package/server/services/adapters/MongoAdapter.js +23 -0
  162. package/server/services/collections.js +104 -1
  163. package/server/services/connectionManager.js +12 -0
  164. package/server/services/dates.js +81 -0
  165. package/server/services/docs.js +13 -2
  166. package/server/services/markdown.js +75 -26
  167. package/server/services/notification-sources.js +6 -5
  168. package/server/services/passwordReset.js +2 -1
  169. package/server/services/permissionRegistry.js +3 -2
  170. package/server/services/pluginGuides.js +255 -0
  171. package/server/services/pluginInstaller.js +54 -13
  172. package/server/services/plugins.js +29 -1
  173. package/server/services/presetCollections.js +31 -5
  174. package/server/services/renderer.js +2 -2
  175. package/server/services/sidebarBadges.js +3 -1
  176. package/server/services/tools.js +4 -2
  177. package/server/templates/page.html +2 -2
@@ -22,14 +22,14 @@
22
22
  <li><strong>Pipeline tab</strong> - add aggregation stages in order. Each stage has a type and a
23
23
  JSON config object.
24
24
  </li>
25
- <li><strong>Display tab</strong> - choose table or list mode, set page size, and optionally define
26
- column definitions.
25
+ <li><strong>Display tab</strong> - choose table, list or block mode, set the page size (1 to 200)
26
+ and pick the table's columns.
27
27
  </li>
28
- <li><strong>Access tab</strong> - select which roles can access this view and whether it is
29
- publicly accessible.
28
+ <li><strong>Access tab</strong> - choose which roles can read the view's results, whether it is
29
+ public, and an optional row-level rule.
30
30
  </li>
31
- <li>Click <strong>Save View</strong>, then use <strong>Preview</strong> to execute and inspect the
32
- results.
31
+ <li>Save the view. The <strong>Results</strong> tab runs the pipeline as it stands, saved or
32
+ not, and shows the first rows.
33
33
  </li>
34
34
  </ol>
35
35
 
@@ -87,20 +87,37 @@
87
87
  <p>Forbidden stages (<code>$out</code>, <code>$merge</code>, <code>$function</code>, <code>$accumulator</code>,
88
88
  <code>$graphLookup</code>) are rejected at save and execution time.</p>
89
89
 
90
- <h3>Column Definitions</h3>
91
- <p>On the Display tab, column definitions are a JSON array. Each object has a <code>key</code>
92
- (dot-path into the result document) and a <code>label</code>.</p>
93
- <pre class="code-block"><code>[
94
- { "key": "data.name", "label": "Name" },
95
- { "key": "data.email", "label": "Email" },
96
- { "key": "orders", "label": "Orders" }
97
- ]</code></pre>
98
- <p>If no columns are defined, the preview auto-generates columns from the first result document.</p>
90
+ <h3>Columns</h3>
91
+ <p>On the Display tab, pick which fields the table shows, in order, and what each heading says. The
92
+ field lists come from the source collection. With none chosen, the first six fields of the
93
+ first result are shown.</p>
99
94
 
100
- <h3>Public Access</h3>
101
- <p>Tick <strong>Public</strong> on the Access tab to expose the view via
102
- <code>GET /api/views/:slug/public</code> without requiring a login.
103
- Leave it unticked to require JWT authentication with one of the allowed roles.</p>
95
+ <h3>Who can read a view</h3>
96
+ <p>The Access tab decides who sees the view's results, both on pages (<code>[view]</code>) and at
97
+ <code>GET /api/views/:slug/public</code>:</p>
98
+ <ul>
99
+ <li><strong>Public</strong> - anyone, signed in or not.</li>
100
+ <li><strong>Roles</strong> - signed-in users holding any listed role, and everyone more senior
101
+ (the same ladder as page visibility; <code>=role</code> means that role only). A role the
102
+ site no longer has admits only the level-0 role.</li>
103
+ <li><strong>No roles and not public</strong> - the admin tier only (role levels 0 and 1).</li>
104
+ </ul>
105
+ <p>A visitor who may not read the view gets its empty message on the page, never the rows.</p>
106
+
107
+ <h3>Row-level rules</h3>
108
+ <p>A row-level rule shows each user only the results that are theirs: <strong>Owner</strong>
109
+ (entries they created) or <strong>Field match</strong> (entries whose chosen field equals
110
+ their id, email, name or role). Totals and page counts count only the rows that user may see,
111
+ and the level-0 role sees everything. A page showing such a view is rendered fresh for each
112
+ signed-in visitor rather than served from the shared cache.</p>
113
+
114
+ <h3>Showing a view on a page</h3>
115
+ <pre class="code-block"><code>[view slug="open-jobs" display="cards" columns="3" title-field="title" /]
116
+ [view slug="open-jobs" searchable sortable page-size="20" /]</code></pre>
117
+ <p>The shortcode can use any display (table, cards, list, accordion, timeline, carousel,
118
+ listgroup, block); left out, it uses the view's own. Adding <code>searchable</code>,
119
+ <code>sortable</code> or <code>paginate</code> makes it interactive. See
120
+ <a href="#/docs/usage/shortcodes">Shortcodes</a>.</p>
104
121
 
105
122
  </div>
106
123
  </div>
@@ -1,5 +1,5 @@
1
1
  <div class="view-header">
2
- <h1><span data-icon="book"></span> Usage</h1>
2
+ <h1><span data-icon="book"></span> Documentation</h1>
3
3
  </div>
4
4
 
5
5
  <div class="row">
@@ -7,65 +7,186 @@
7
7
  <div class="docs-body">
8
8
 
9
9
  <p class="lead">
10
- Task-by-task reference for running a Domma CMS site. Pick a topic below - each opens as its own
11
- page, and every topic is also listed under <strong>Documentation → Usage</strong> in the sidebar.
10
+ Everything about running and extending a Domma CMS site. Pick a topic below - each opens as its own
11
+ page, and the same topics are listed under <strong>Documentation</strong> in the sidebar.
12
12
  </p>
13
13
 
14
- <div style="display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem;margin-top:1.5rem;">
15
-
14
+ <h2 style="margin-top:2rem;">Usage</h2>
15
+ <p class="text-muted">Task-by-task guides for running the site.</p>
16
+ <div style="display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem;margin-top:1rem;">
16
17
  <a href="#/docs/usage/pages" class="card" style="text-decoration:none;display:block;">
17
18
  <div class="card-body"><h3 style="margin-top:0;"><span data-icon="file-text"></span> Pages</h3>
18
- <p class="text-muted" style="margin-bottom:0;">Markdown pages, YAML frontmatter, and how files map to URLs.</p></div>
19
+ <p class="text-muted" style="margin-bottom:0;">Markdown pages, frontmatter, drafts, previews, visibility and history.</p></div>
19
20
  </a>
20
21
  <a href="#/docs/usage/media" class="card" style="text-decoration:none;display:block;">
21
22
  <div class="card-body"><h3 style="margin-top:0;"><span data-icon="image"></span> Media</h3>
22
- <p class="text-muted" style="margin-bottom:0;">Uploading files and using the media library.</p></div>
23
+ <p class="text-muted" style="margin-bottom:0;">Uploading files, the image editor and the Media Picker.</p></div>
23
24
  </a>
24
25
  <a href="#/docs/usage/navigation" class="card" style="text-decoration:none;display:block;">
25
26
  <div class="card-body"><h3 style="margin-top:0;"><span data-icon="menu"></span> Navigation</h3>
26
- <p class="text-muted" style="margin-bottom:0;">Menus, locations, and the multi-menu system.</p></div>
27
+ <p class="text-muted" style="margin-bottom:0;">Menus, locations, bindings and who sees each item.</p></div>
27
28
  </a>
28
- <a href="#/docs/usage/dconfig" class="card" style="text-decoration:none;display:block;">
29
- <div class="card-body"><h3 style="margin-top:0;"><span data-icon="settings"></span> DConfig</h3>
30
- <p class="text-muted" style="margin-bottom:0;">Declarative, per-page configuration blocks.</p></div>
29
+ <a href="#/docs/usage/collections" class="card" style="text-decoration:none;display:block;">
30
+ <div class="card-body"><h3 style="margin-top:0;"><span data-icon="database"></span> Collections &amp; Forms</h3>
31
+ <p class="text-muted" style="margin-bottom:0;">Fields, entries, import and export, storage moves, displays and forms.</p></div>
32
+ </a>
33
+ <a href="#/docs/usage/views" class="card" style="text-decoration:none;display:block;">
34
+ <div class="card-body"><h3 style="margin-top:0;"><span data-icon="eye"></span> Views</h3>
35
+ <p class="text-muted" style="margin-bottom:0;">Saved pipelines over your collections, access and row-level rules.</p></div>
36
+ </a>
37
+ <a href="#/docs/usage/actions" class="card" style="text-decoration:none;display:block;">
38
+ <div class="card-body"><h3 style="margin-top:0;"><span data-icon="zap"></span> Actions</h3>
39
+ <p class="text-muted" style="margin-bottom:0;">Workflow buttons, transitions and who may run them (MongoDB).</p></div>
40
+ </a>
41
+ <a href="#/docs/usage/cta-shortcode" class="card" style="text-decoration:none;display:block;">
42
+ <div class="card-body"><h3 style="margin-top:0;"><span data-icon="zap"></span> CTA Shortcode</h3>
43
+ <p class="text-muted" style="margin-bottom:0;">Action buttons on public pages.</p></div>
31
44
  </a>
32
45
  <a href="#/docs/usage/shortcodes" class="card" style="text-decoration:none;display:block;">
33
46
  <div class="card-body"><h3 style="margin-top:0;"><span data-icon="code"></span> Shortcodes</h3>
34
- <p class="text-muted" style="margin-bottom:0;">The full catalogue of in-page shortcodes.</p></div>
47
+ <p class="text-muted" style="margin-bottom:0;">Every in-page shortcode, including [collection] and effects.</p></div>
48
+ </a>
49
+ <a href="#/docs/usage/dconfig" class="card" style="text-decoration:none;display:block;">
50
+ <div class="card-body"><h3 style="margin-top:0;"><span data-icon="settings"></span> DConfig</h3>
51
+ <p class="text-muted" style="margin-bottom:0;">Declarative click handlers and class toggles per page.</p></div>
35
52
  </a>
36
53
  <a href="#/docs/usage/site-settings" class="card" style="text-decoration:none;display:block;">
37
54
  <div class="card-body"><h3 style="margin-top:0;"><span data-icon="settings"></span> Site Settings</h3>
38
- <p class="text-muted" style="margin-bottom:0;">Title, theme, brand, footer and SMTP.</p></div>
55
+ <p class="text-muted" style="margin-bottom:0;">General, SEO, footer, email, cookies, cache, theme and dates.</p></div>
56
+ </a>
57
+ <a href="#/docs/usage/users-roles" class="card" style="text-decoration:none;display:block;">
58
+ <div class="card-body"><h3 style="margin-top:0;"><span data-icon="users"></span> Users &amp; Roles</h3>
59
+ <p class="text-muted" style="margin-bottom:0;">Accounts, roles, the role ladder, confined roles and resets.</p></div>
60
+ </a>
61
+ <a href="#/docs/usage/tools" class="card" style="text-decoration:none;display:block;">
62
+ <div class="card-body"><h3 style="margin-top:0;"><span data-icon="list"></span> Built-in Tools</h3>
63
+ <p class="text-muted" style="margin-bottom:0;">Contacts, Notes, Todo, Analytics, SEO, notifications and search.</p></div>
39
64
  </a>
40
65
  <a href="#/docs/usage/plugins" class="card" style="text-decoration:none;display:block;">
41
66
  <div class="card-body"><h3 style="margin-top:0;"><span data-icon="package"></span> Plugins</h3>
42
- <p class="text-muted" style="margin-bottom:0;">Installing, enabling and configuring plugins.</p></div>
67
+ <p class="text-muted" style="margin-bottom:0;">The Marketplace: install, update, restarts, switches and dependencies.</p></div>
43
68
  </a>
44
- <a href="#/docs/usage/users-roles" class="card" style="text-decoration:none;display:block;">
45
- <div class="card-body"><h3 style="margin-top:0;"><span data-icon="users"></span> Users &amp; Roles</h3>
46
- <p class="text-muted" style="margin-bottom:0;">Accounts, roles and the permission model.</p></div>
69
+ <a href="#/docs/usage/editions" class="card" style="text-decoration:none;display:block;">
70
+ <div class="card-body"><h3 style="margin-top:0;"><span data-icon="tag"></span> Editions &amp; Licences</h3>
71
+ <p class="text-muted" style="margin-bottom:0;">Free and Pro, licences, and what happens when one ends.</p></div>
47
72
  </a>
48
- <a href="#/docs/usage/views" class="card" style="text-decoration:none;display:block;">
49
- <div class="card-body"><h3 style="margin-top:0;"><span data-icon="eye"></span> Views</h3>
50
- <p class="text-muted" style="margin-bottom:0;">Saved, reusable views over your collections.</p></div>
73
+ <a href="#/pro/docs" class="card" style="text-decoration:none;display:block;">
74
+ <div class="card-body"><h3 style="margin-top:0;"><span data-icon="layers"></span> Pro Documentation</h3>
75
+ <p class="text-muted" style="margin-bottom:0;">What needs a MongoDB connection, and what does not.</p></div>
51
76
  </a>
52
- <a href="#/docs/usage/actions" class="card" style="text-decoration:none;display:block;">
53
- <div class="card-body"><h3 style="margin-top:0;"><span data-icon="zap"></span> Actions</h3>
54
- <p class="text-muted" style="margin-bottom:0;">Server-side workflow buttons and transitions.</p></div>
77
+ </div>
78
+
79
+ <h2 style="margin-top:2rem;">Plugins</h2>
80
+ <p class="text-muted">Guides for the Marketplace plugins installed on this site.</p>
81
+ <div style="display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem;margin-top:1rem;">
82
+ <a href="#/docs/plugins" class="card" style="text-decoration:none;display:block;">
83
+ <div class="card-body"><h3 style="margin-top:0;"><span data-icon="package"></span> Plugin guides</h3>
84
+ <p class="text-muted" style="margin-bottom:0;">One page per installed plugin you can use: what it does, its screens, settings and permissions.</p></div>
55
85
  </a>
56
- <a href="#/docs/usage/cta-shortcode" class="card" style="text-decoration:none;display:block;">
57
- <div class="card-body"><h3 style="margin-top:0;"><span data-icon="zap"></span> CTA Shortcode</h3>
58
- <p class="text-muted" style="margin-bottom:0;">Triggering collection actions from a page.</p></div>
86
+ </div>
87
+
88
+ <h2 style="margin-top:2rem;">Tutorials</h2>
89
+ <p class="text-muted">End-to-end walkthroughs.</p>
90
+ <div style="display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem;margin-top:1rem;">
91
+ <a href="#/tutorials/crud" class="card" style="text-decoration:none;display:block;">
92
+ <div class="card-body"><h3 style="margin-top:0;"><span data-icon="database"></span> Building a CRUD App</h3>
93
+ <p class="text-muted" style="margin-bottom:0;">Collections, forms, actions and pages composed into a working app.</p></div>
94
+ </a>
95
+ <a href="#/tutorials/forms" class="card" style="text-decoration:none;display:block;">
96
+ <div class="card-body"><h3 style="margin-top:0;"><span data-icon="layout"></span> Form Follow-Up</h3>
97
+ <p class="text-muted" style="margin-bottom:0;">Emails, webhooks, Actions and what happens after a submission.</p></div>
59
98
  </a>
99
+ <a href="#/tutorials/plugin" class="card" style="text-decoration:none;display:block;">
100
+ <div class="card-body"><h3 style="margin-top:0;"><span data-icon="package"></span> Writing a Plugin</h3>
101
+ <p class="text-muted" style="margin-bottom:0;">Server routes, admin screens and page snippets of your own.</p></div>
102
+ </a>
103
+ </div>
60
104
 
105
+ <h2 style="margin-top:2rem;">Components</h2>
106
+ <p class="text-muted">Reusable custom elements (.dmc).</p>
107
+ <div style="display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem;margin-top:1rem;">
108
+ <a href="#/docs/components" class="card" style="text-decoration:none;display:block;">
109
+ <div class="card-body"><h3 style="margin-top:0;"><span data-icon="book"></span> Reference</h3>
110
+ <p class="text-muted" style="margin-bottom:0;">The component file format and what it can do.</p></div>
111
+ </a>
112
+ <a href="#/docs/components-howto" class="card" style="text-decoration:none;display:block;">
113
+ <div class="card-body"><h3 style="margin-top:0;"><span data-icon="zap"></span> How-To</h3>
114
+ <p class="text-muted" style="margin-bottom:0;">Short recipes for common components.</p></div>
115
+ </a>
116
+ <a href="#/docs/components-walkthrough" class="card" style="text-decoration:none;display:block;">
117
+ <div class="card-body"><h3 style="margin-top:0;"><span data-icon="document"></span> Walkthrough</h3>
118
+ <p class="text-muted" style="margin-bottom:0;">Building one component from start to finish.</p></div>
119
+ </a>
120
+ <a href="#/docs/components-rules" class="card" style="text-decoration:none;display:block;">
121
+ <div class="card-body"><h3 style="margin-top:0;"><span data-icon="shield"></span> Rules</h3>
122
+ <p class="text-muted" style="margin-bottom:0;">What components may and may not do.</p></div>
123
+ </a>
61
124
  </div>
62
125
 
63
- <hr style="margin-top:2rem;">
64
- <p class="text-muted" style="font-size:.9rem;">
65
- New to the CMS? Start with the <a href="#/tutorials">Tutorials</a>. Building reusable elements?
66
- See <a href="#/docs/components">Components</a>. Integrating externally? See the
67
- <a href="#/api-reference">API Reference</a>.
68
- </p>
126
+ <h2 style="margin-top:2rem;">API Reference</h2>
127
+ <p class="text-muted">The REST API, for integrations and headless use.</p>
128
+ <div style="display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem;margin-top:1rem;">
129
+ <a href="#/docs/api/authentication" class="card" style="text-decoration:none;display:block;">
130
+ <div class="card-body"><h3 style="margin-top:0;"><span data-icon="shield"></span> Authentication</h3>
131
+ <p class="text-muted" style="margin-bottom:0;">Sign-in, tokens, sessions and password resets.</p></div>
132
+ </a>
133
+ <a href="#/docs/api/external" class="card" style="text-decoration:none;display:block;">
134
+ <div class="card-body"><h3 style="margin-top:0;"><span data-icon="lock"></span> External API &amp; tokens</h3>
135
+ <p class="text-muted" style="margin-bottom:0;">/api/v1 collection access with project API tokens.</p></div>
136
+ </a>
137
+ <a href="#/docs/api/builder" class="card" style="text-decoration:none;display:block;">
138
+ <div class="card-body"><h3 style="margin-top:0;"><span data-icon="code"></span> API Builder</h3>
139
+ <p class="text-muted" style="margin-bottom:0;">Named read-only endpoints over collection data at /api/x.</p></div>
140
+ </a>
141
+ <a href="#/docs/api/pages" class="card" style="text-decoration:none;display:block;">
142
+ <div class="card-body"><h3 style="margin-top:0;"><span data-icon="file-text"></span> Pages</h3>
143
+ <p class="text-muted" style="margin-bottom:0;">Pages, previews, share links and versions.</p></div>
144
+ </a>
145
+ <a href="#/docs/api/collections" class="card" style="text-decoration:none;display:block;">
146
+ <div class="card-body"><h3 style="margin-top:0;"><span data-icon="database"></span> Collections</h3>
147
+ <p class="text-muted" style="margin-bottom:0;">Schemas, entries, import, export and storage moves.</p></div>
148
+ </a>
149
+ <a href="#/docs/api/forms" class="card" style="text-decoration:none;display:block;">
150
+ <div class="card-body"><h3 style="margin-top:0;"><span data-icon="layout"></span> Forms</h3>
151
+ <p class="text-muted" style="margin-bottom:0;">Forms and their submissions.</p></div>
152
+ </a>
153
+ <a href="#/docs/api/views" class="card" style="text-decoration:none;display:block;">
154
+ <div class="card-body"><h3 style="margin-top:0;"><span data-icon="eye"></span> Views</h3>
155
+ <p class="text-muted" style="margin-bottom:0;">Running saved views.</p></div>
156
+ </a>
157
+ <a href="#/docs/api/actions" class="card" style="text-decoration:none;display:block;">
158
+ <div class="card-body"><h3 style="margin-top:0;"><span data-icon="zap"></span> Actions</h3>
159
+ <p class="text-muted" style="margin-bottom:0;">Running actions and transitions.</p></div>
160
+ </a>
161
+ <a href="#/docs/api/scaffold" class="card" style="text-decoration:none;display:block;">
162
+ <div class="card-body"><h3 style="margin-top:0;"><span data-icon="layers"></span> Scaffold</h3>
163
+ <p class="text-muted" style="margin-bottom:0;">Building a working system - collection, form, Actions and more - from a recipe.</p></div>
164
+ </a>
165
+ <a href="#/docs/api/media" class="card" style="text-decoration:none;display:block;">
166
+ <div class="card-body"><h3 style="margin-top:0;"><span data-icon="image"></span> Media</h3>
167
+ <p class="text-muted" style="margin-bottom:0;">Uploads and image transforms.</p></div>
168
+ </a>
169
+ <a href="#/docs/api/navigation" class="card" style="text-decoration:none;display:block;">
170
+ <div class="card-body"><h3 style="margin-top:0;"><span data-icon="menu"></span> Menus</h3>
171
+ <p class="text-muted" style="margin-bottom:0;">Menus, locations and context menus.</p></div>
172
+ </a>
173
+ <a href="#/docs/api/users" class="card" style="text-decoration:none;display:block;">
174
+ <div class="card-body"><h3 style="margin-top:0;"><span data-icon="users"></span> Users</h3>
175
+ <p class="text-muted" style="margin-bottom:0;">Accounts, roles and admin resets.</p></div>
176
+ </a>
177
+ <a href="#/docs/api/settings" class="card" style="text-decoration:none;display:block;">
178
+ <div class="card-body"><h3 style="margin-top:0;"><span data-icon="settings"></span> Settings</h3>
179
+ <p class="text-muted" style="margin-bottom:0;">Site settings and theme.</p></div>
180
+ </a>
181
+ <a href="#/docs/api/layouts" class="card" style="text-decoration:none;display:block;">
182
+ <div class="card-body"><h3 style="margin-top:0;"><span data-icon="layout"></span> Layouts</h3>
183
+ <p class="text-muted" style="margin-bottom:0;">Page layout presets.</p></div>
184
+ </a>
185
+ <a href="#/docs/api/plugins" class="card" style="text-decoration:none;display:block;">
186
+ <div class="card-body"><h3 style="margin-top:0;"><span data-icon="package"></span> Plugins</h3>
187
+ <p class="text-muted" style="margin-bottom:0;">The Marketplace, installs and Tool switches.</p></div>
188
+ </a>
189
+ </div>
69
190
 
70
191
  </div>
71
192
  </div>
@@ -134,11 +134,6 @@
134
134
  </div>
135
135
  </div>
136
136
  <div class="row">
137
- <div class="col-auto">
138
- <label class="form-check-label">
139
- <input id="field-show-in-nav" type="checkbox" class="form-check" data-model="showInNav.value"> Show in Navigation
140
- </label>
141
- </div>
142
137
  <div class="col-auto">
143
138
  <label class="form-check-label">
144
139
  <input id="field-sidebar" type="checkbox" class="form-check" data-model="sidebar.value"> Show Sidebar
@@ -0,0 +1,15 @@
1
+ <div class="view-header">
2
+ <h1><span id="pg-icon"><span data-icon="package"></span></span> <span id="pg-title">Plugin guide</span></h1>
3
+ <div class="pg-actions">
4
+ <a id="pg-tool" class="btn btn-outline btn-sm" hidden><span data-icon="external-link"></span> <span id="pg-tool-text">Open</span></a>
5
+ <a href="#/docs/plugins" class="btn btn-ghost btn-sm"><span data-icon="arrow-left"></span> All plugin guides</a>
6
+ </div>
7
+ </div>
8
+
9
+ <div class="row">
10
+ <div class="col-12">
11
+ <p id="pg-meta" class="text-muted pg-meta"></p>
12
+ <nav id="pg-pages" class="pg-pages" aria-label="Guide pages" hidden></nav>
13
+ <div id="pg-body" class="docs-body pg-body"></div>
14
+ </div>
15
+ </div>
@@ -0,0 +1,21 @@
1
+ <div class="view-header">
2
+ <h1><span data-icon="package"></span> Plugin Guides</h1>
3
+ <a href="#/documentation" class="btn btn-ghost btn-sm"><span data-icon="arrow-left"></span> Documentation</a>
4
+ </div>
5
+
6
+ <div class="row">
7
+ <div class="col-12">
8
+ <div class="docs-body">
9
+ <p class="lead">
10
+ How to use each plugin installed on this site. A guide appears here when its plugin is enabled, and only
11
+ to people whose role can use that plugin. Every guide is also listed under
12
+ <strong>Documentation &gt; Plugins</strong> in the sidebar.
13
+ </p>
14
+ <p id="pg-empty" class="text-muted" hidden>
15
+ No plugin guides for you yet. Guides come with the plugins in the <a href="#/plugins">Marketplace</a>;
16
+ an enabled plugin you cannot use is not listed.
17
+ </p>
18
+ <div id="pg-grid" class="pg-grid"></div>
19
+ </div>
20
+ </div>
21
+ </div>