feat: pages collection (privacy/disclaimer/contact) editable in CMS

This commit is contained in:
ctao
2026-07-24 23:11:57 +02:00
parent cf35739a64
commit a8c0e802e2
6 changed files with 88 additions and 1 deletions
+14
View File
@@ -35,3 +35,17 @@ collections:
- { name: cover, label: "Okładka", widget: image, required: false }
- { name: draft, label: "Szkic (nieopublikowany)", widget: boolean, default: false }
- { name: body, label: "Treść", widget: markdown }
- name: pages
label: "Pages"
label_singular: "Page"
folder: "src/content/pages"
create: true
slug: "{{slug}}"
extension: md
format: frontmatter
summary: "{{title}}"
fields:
- { name: title, label: "Title", widget: string }
- { name: description, label: "Description", widget: text, required: false }
- { name: body, label: "Body", widget: markdown }
+12 -1
View File
@@ -19,4 +19,15 @@ const news = defineCollection({
}),
});
export const collections = { news };
// Static portal pages (privacy, disclaimer, contact…) — separate collection
// because the content type differs (no dates/covers/categories), and editors
// get a distinct "Pages" section in the CMS.
const pages = defineCollection({
loader: glob({ pattern: '**/*.md', base: './src/content/pages' }),
schema: z.object({
title: z.string(),
description: z.string().optional(),
}),
});
export const collections = { news, pages };
+12
View File
@@ -0,0 +1,12 @@
---
title: Contact
description: How to reach the CTAO and the Science Portal team.
---
*Demo page — final wording will be provided by the CTAO Central Organisation.*
- **General enquiries:** see the contact section on [ctao.org](https://www.ctao.org/)
- **Science user support:** help desk, FAQ and user forum — via [User Support](/support) (integration planned)
- **Portal (technical):** SUSS Science Portal team
For media and outreach enquiries, please use the channels listed on the CTAO website.
+14
View File
@@ -0,0 +1,14 @@
---
title: Disclaimer
description: Terms of use of the CTAO Science Portal.
---
*Demo page — final wording will be provided by the CTAO Central Organisation.*
The information on this portal is provided by the Cherenkov Telescope Array Observatory (CTAO)
for general information and scientific use. While we strive to keep content accurate and up to
date, the CTAO makes no warranties of any kind about the completeness, accuracy or reliability
of the information, software or data products made available here.
External links are provided for convenience; the CTAO is not responsible for the content of
external sites.
+16
View File
@@ -0,0 +1,16 @@
---
title: Privacy statement
description: How the CTAO Science Portal handles personal data.
---
*Demo page — final wording will be provided by the CTAO Central Organisation.*
The CTAO Science Portal processes personal data only to the extent required to provide its
services: account information is managed by the central **CTAO AAI** system, and the portal
stores no passwords. Usage analytics, if any, are anonymised.
## Your rights
Under the GDPR you have the right to access, rectify, erase and port your personal data, and
to object to or restrict its processing. Requests are handled by the CTAO data protection
officer (contact details on the [Contact](/pages/contact) page).
+20
View File
@@ -0,0 +1,20 @@
---
import { getCollection, render } from 'astro:content';
import Base from '../../layouts/Base.astro';
export async function getStaticPaths() {
const pages = await getCollection('pages');
return pages.map((page) => ({ params: { slug: page.id }, props: { page } }));
}
const { page } = Astro.props;
const { Content } = await render(page);
---
<Base title={`${page.data.title} — CTAO Science Portal`} description={page.data.description}>
<article class="container article">
<h1>{page.data.title}</h1>
<div class="prose">
<Content />
</div>
</article>
</Base>