|
1 | 1 | --- |
2 | | -title: Admin Panel |
3 | | -description: What the EmDash admin panel offers editors, administrators, and developers. |
| 2 | +title: Admin panel |
| 3 | +description: How editors, administrators, and developers use the EmDash admin panel. |
4 | 4 | --- |
5 | 5 |
|
6 | | -import { Aside, Card, CardGrid } from "@astrojs/starlight/components"; |
| 6 | +import { Aside } from "@astrojs/starlight/components"; |
7 | 7 |
|
8 | | -The admin panel is the content management interface for your site. It is served at `/_emdash/admin/` inside your Astro site, and it adapts automatically to your collections, plugins, and the signed-in user's role. For how it is built, see [Architecture (internals)](/contributing/architecture/#admin-panel-internals). |
| 8 | +The admin panel is the editing interface included with an EmDash site. It is served by the Astro |
| 9 | +application at `/_emdash/admin/` and uses the same database, media storage, content model, and |
| 10 | +plugins as the public pages. |
9 | 11 |
|
10 | | -## Screens |
| 12 | +The first visit to a new site's admin route opens the setup wizard. After setup, a signed-in user's |
| 13 | +permissions determine which content and administration tools are available. |
11 | 14 |
|
12 | | -| Path | Screen | |
13 | | -| -------------------------- | ------------------------------- | |
14 | | -| `/` | Dashboard | |
15 | | -| `/content/:collection` | Content list | |
16 | | -| `/content/:collection/:id` | Content editor | |
17 | | -| `/content/:collection/new` | New entry | |
18 | | -| `/media` | Media library | |
19 | | -| `/content-types` | Schema builder (administrators) | |
20 | | -| `/menus` | Navigation menus | |
21 | | -| `/widgets` | Widget areas | |
22 | | -| `/taxonomies` | Categories and tags | |
23 | | -| `/settings` | Site settings | |
24 | | -| `/plugins/:pluginId/*` | Plugin pages | |
| 15 | +## Work areas |
25 | 16 |
|
26 | | -Navigation is generated from your collections and installed plugins, so a schema or plugin change appears in the admin immediately. |
| 17 | +The navigation adapts to the site's collections and installed plugins. These are the main areas an |
| 18 | +editor or administrator may see: |
27 | 19 |
|
28 | | -## Roles |
| 20 | +| Area | What it is for | |
| 21 | +| --- | --- | |
| 22 | +| Dashboard | A starting view with site and plugin widgets | |
| 23 | +| Collection names, such as **Posts** | List, create, edit, publish, and move entries to the trash | |
| 24 | +| Media | Upload, search, inspect, replace, and delete files | |
| 25 | +| Taxonomies and Bylines | Organize content and manage credited authors | |
| 26 | +| Menus and Widget Areas | Manage navigation and editor-controlled regions rendered by the site | |
| 27 | +| Comments | Review and moderate comments when a collection enables them | |
| 28 | +| Content Types | Create collections and fields and change their settings | |
| 29 | +| Plugins | Install, configure, and open plugin-provided pages | |
| 30 | +| Settings | Configure the site, authentication, backups, email, search, and other services | |
29 | 31 |
|
30 | | -What a user sees depends on their role. EmDash has five roles, from least to most access: Subscriber, Contributor, Author, Editor, Admin. See [User roles](/guides/authentication/#user-roles) for the full definitions. |
| 32 | +This interface manages data and configuration. Astro pages and components still define the public |
| 33 | +layout. Adding a menu item or widget in the admin only changes the public site when an Astro |
| 34 | +component queries and renders that menu or widget area. |
31 | 35 |
|
32 | | -In the admin, lower roles see only the content they have permission to manage. The schema builder at `/content-types` and the settings screens are Admin-only. Type generation and the CLI are available to developers working on the project regardless of admin role. |
| 36 | +## Content editor |
33 | 37 |
|
34 | | -<Aside type="note"> |
35 | | - The admin requires a signed-in user. Login is a separate page that |
36 | | - establishes a session; see [Authentication](/guides/authentication/). |
| 38 | +The content editor builds its form from the selected collection. A short-text field becomes a text |
| 39 | +input, a `portableText` field becomes the rich-text editor, a media field opens the media picker, |
| 40 | +and a reference field lets the editor select another entry. Collection settings add publishing, |
| 41 | +preview, revision, comment, and search controls where applicable. |
| 42 | + |
| 43 | +The rich-text editor supports headings, lists, quotations, code, links, images, and registered |
| 44 | +custom blocks. If imported content contains a block that the editor cannot display, EmDash preserves |
| 45 | +the stored block rather than removing it during the next save. |
| 46 | + |
| 47 | +Saving and publishing are separate states for collections with drafts. **Save** stores the current |
| 48 | +work as a draft. **Publish** or **Publish changes** makes that saved version available to public |
| 49 | +queries. Scheduling records when a draft or pending change should become public. |
| 50 | + |
| 51 | +When edit locking is enabled for a collection, opening an entry holds a lock for that editor. Other |
| 52 | +writers are refused while the lock is active instead of silently overwriting the entry. If an entry |
| 53 | +changes after an editor loads it, EmDash also refuses the stale save so the editor can reload the |
| 54 | +newer version instead of overwriting it. |
| 55 | + |
| 56 | +<Aside> |
| 57 | + Moving an entry to the trash is a reversible content action. Permanently deleting it from the |
| 58 | + trash is not. Deleting a field or collection under **Content Types** is also destructive because |
| 59 | + it removes stored columns or tables. See [Collections and fields](/concepts/collections/#changing-fields-later) |
| 60 | + before changing a live model. |
37 | 61 | </Aside> |
38 | 62 |
|
39 | | -## Content editor |
| 63 | +## Roles and permissions |
40 | 64 |
|
41 | | -The content editor builds a form from a collection's fields. Each field type uses a matching input: |
| 65 | +EmDash includes five roles: Subscriber, Contributor, Author, Editor, and Admin. Permissions build as |
| 66 | +the role level increases, but ownership still matters for content and media actions. For example, |
| 67 | +Authors can edit and publish their own entries, while Editors can do so for any entry. |
42 | 68 |
|
43 | | -| Field type | Editor | |
44 | | -| -------------- | ----------------- | |
45 | | -| `string` | Text input | |
46 | | -| `text` | Textarea | |
47 | | -| `number` | Number input | |
48 | | -| `boolean` | Toggle | |
49 | | -| `datetime` | Date/time picker | |
50 | | -| `select` | Dropdown | |
51 | | -| `multiSelect` | Multi-select | |
52 | | -| `portableText` | Rich text editor | |
53 | | -| `image` | Media picker | |
54 | | -| `reference` | Entry picker | |
| 69 | +Administrative areas have separate permission checks: |
55 | 70 |
|
56 | | -Rich text fields edit as formatted content — headings, lists, quotes, code, links, and images from the media library. Content from plugins or imports that the editor does not recognise is preserved untouched. |
| 71 | +- Editors can manage taxonomies, menus, bylines, widgets, sections, and content from other authors. |
| 72 | +- Admins can change the content model, users, plugins, redirects, backups, and settings, and can |
| 73 | + permanently delete trashed content. |
| 74 | +- The server checks permissions for each action. Hiding a navigation item is not the security |
| 75 | + boundary. |
57 | 76 |
|
58 | | -Lists are paginated and stay consistent even when content changes between pages. |
| 77 | +Read [Authentication and user roles](/guides/authentication/#user-roles) for account setup and the |
| 78 | +complete role descriptions. |
59 | 79 |
|
60 | | -## Media library |
| 80 | +## Media |
61 | 81 |
|
62 | | -The media library supports: |
| 82 | +The media library can show files in a grid or list, search and filter them, display metadata, and |
| 83 | +perform multi-item actions. Upload behavior depends on the configured storage adapter. When the |
| 84 | +adapter supports signed uploads, the browser sends the file to storage using a short-lived signed |
| 85 | +URL and then confirms the completed upload with EmDash. |
63 | 86 |
|
64 | | -- Grid and list views |
65 | | -- Search and filter by type and date |
66 | | -- Drag-and-drop upload |
67 | | -- Image preview with metadata |
68 | | -- Bulk selection and delete |
| 87 | +Deleting a media item can affect entries that refer to it. Use the media usage information and |
| 88 | +replacement tools before removing an asset used on public pages. See [Media library](/guides/media-library/) |
| 89 | +for the upload, replacement, and deletion workflows. |
69 | 90 |
|
70 | | -Uploads go directly from the browser to your storage backend, so large files are not limited by request size. |
| 91 | +## Plugin interfaces |
71 | 92 |
|
72 | | -## Plugin pages and widgets |
| 93 | +Plugins can add dashboard widgets, settings sections, editor controls, or complete admin pages. A |
| 94 | +plugin page is mounted under that plugin's own admin route; it cannot replace a core admin screen. |
| 95 | +The plugin still needs server-side permission checks for any protected action, even when the admin |
| 96 | +link is shown only to a particular role. |
73 | 97 |
|
74 | | -A plugin can add pages and dashboard widgets to the admin. Plugin pages appear under `/_emdash/admin/plugins/:pluginId/`, and a plugin can only mount under its own namespace — it cannot override core admin screens. See [installing plugins](/plugins/installing/). |
| 98 | +Read [Installing plugins](/plugins/installing/) to add an extension. Site developers building an |
| 99 | +interface should use the [native plugin admin APIs](/plugins/creating-native-plugins/react-admin/) |
| 100 | +rather than modifying the core admin application. |
75 | 101 |
|
76 | | -## Next steps |
| 102 | +## Configuration requirements |
77 | 103 |
|
78 | | -<CardGrid> |
79 | | - <Card title="Getting Started" icon="rocket"> |
80 | | - [Set up your first EmDash site](/getting-started/). |
81 | | - </Card> |
82 | | - <Card title="REST API" icon="puzzle"> |
83 | | - The admin uses the [REST API](/reference/rest-api/); you can call it too. |
84 | | - </Card> |
85 | | - <Card title="Architecture" icon="open-book"> |
86 | | - Review the [content model](/concepts/content-model/). |
87 | | - </Card> |
88 | | -</CardGrid> |
| 104 | +The admin is a React application, so the Astro project must install `@astrojs/react`, `react`, and |
| 105 | +`react-dom` and register `react()` in `astro.config.mjs`. The site also needs server output, a |
| 106 | +database, and media storage. [Add EmDash to an existing Astro project](/existing-project/) shows the |
| 107 | +complete local configuration. |
0 commit comments