Compare commits
10 commits
7438f39786
...
eafda90a41
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
eafda90a41 | ||
|
|
794ac2d9c9 | ||
|
|
a64251f439 | ||
|
|
267e3f9e05 | ||
|
|
d5eca3f876 | ||
|
|
294a5392c0 | ||
|
|
6bc4e6e8df | ||
|
|
4c07349f9d | ||
|
|
a336eb4945 | ||
|
|
88cfe18a6b |
81 changed files with 56201 additions and 3473 deletions
|
|
@ -1,4 +1,6 @@
|
||||||
|
NEXT_PUBLIC_SITE_ID=chemnitz
|
||||||
DATABASE_URI=mongodb://127.0.0.1/dreikoenige
|
DATABASE_URI=mongodb://127.0.0.1/dreikoenige
|
||||||
PAYLOAD_SECRET=YOUR_SECRET_HERE
|
PAYLOAD_SECRET=YOUR_SECRET_HERE
|
||||||
GOOGLE_BUCKET=google_storage_bucket
|
GOOGLE_BUCKET=google_storage_bucket #can be omitted
|
||||||
RESEND_API_KEY=some_api_key
|
RESEND_API_KEY=some_api_key
|
||||||
|
NEXT_PUBLIC_SERVER_URL=http://localhost:3000
|
||||||
|
|
@ -46,6 +46,15 @@ Create and run a container, then set your `DATABASE_URI` to the Postgres URL. En
|
||||||
|
|
||||||
Alternatively, you can enable the Postgres service in `docker-compose.yml` (currently commented out) and use that as your local DB.
|
Alternatively, you can enable the Postgres service in `docker-compose.yml` (currently commented out) and use that as your local DB.
|
||||||
|
|
||||||
|
## Google Cloud Storage
|
||||||
|
|
||||||
|
Media and document uploads use `@payloadcms/storage-gcs`. The plugin is always registered but conditionally enabled via the `GOOGLE_BUCKET` environment variable:
|
||||||
|
|
||||||
|
- **`GOOGLE_BUCKET` set** — files are uploaded to GCS and served from `https://storage.googleapis.com/<bucket>/`.
|
||||||
|
- **`GOOGLE_BUCKET` unset** — the plugin is disabled and Payload falls back to local file storage. The `alwaysInsertFields` flag keeps the schema identical in both cases, so `payload-types.ts` and `importMap.js` stay stable across environments.
|
||||||
|
|
||||||
|
No additional configuration is needed for local development — simply omit `GOOGLE_BUCKET` from your `.env`.
|
||||||
|
|
||||||
## Migrations (Payload)
|
## Migrations (Payload)
|
||||||
|
|
||||||
Create a new migration:
|
Create a new migration:
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
$base-color: #426156;
|
$base-color: var(--base-color);
|
||||||
$shade1: #728F8D;
|
$shade1: var(--shade1);
|
||||||
$shade2: #CBD6D5;
|
$shade2: var(--shade2);
|
||||||
$shade3: #E3E9E8;
|
$shade3: var(--shade3);
|
||||||
$contrast-color: #7D1224;
|
$contrast-color: var(--contrast-color);
|
||||||
$contrast-shade1: #C14953;
|
$contrast-shade1: var(--contrast-shade1);
|
||||||
$text-color: #000000;
|
$text-color: #000000;
|
||||||
$border-radius: 13px;
|
$border-radius: var(--border-radius);
|
||||||
|
|
||||||
$white: #ffffff;
|
$white: #ffffff;
|
||||||
$light-grey: #f3f3f3;
|
$light-grey: #f3f3f3;
|
||||||
|
|
|
||||||
1864
package-lock.json
generated
1864
package-lock.json
generated
File diff suppressed because it is too large
Load diff
14
package.json
14
package.json
|
|
@ -20,6 +20,7 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@nyariv/sandboxjs": "0.8.28",
|
"@nyariv/sandboxjs": "0.8.28",
|
||||||
"@payloadcms/db-postgres": "^3.74.0",
|
"@payloadcms/db-postgres": "^3.74.0",
|
||||||
|
"@payloadcms/live-preview-react": "^3.74.0",
|
||||||
"@payloadcms/next": "^3.74.0",
|
"@payloadcms/next": "^3.74.0",
|
||||||
"@payloadcms/richtext-lexical": "^3.74.0",
|
"@payloadcms/richtext-lexical": "^3.74.0",
|
||||||
"@payloadcms/storage-gcs": "^3.74.0",
|
"@payloadcms/storage-gcs": "^3.74.0",
|
||||||
|
|
@ -30,7 +31,6 @@
|
||||||
"moment": "^2.30.1",
|
"moment": "^2.30.1",
|
||||||
"next": "15.4.11",
|
"next": "15.4.11",
|
||||||
"payload": "^3.74.0",
|
"payload": "^3.74.0",
|
||||||
"qs-esm": "^7.0.3",
|
|
||||||
"react": "19.2.4",
|
"react": "19.2.4",
|
||||||
"react-dom": "19.2.4",
|
"react-dom": "19.2.4",
|
||||||
"resend": "^6.9.1",
|
"resend": "^6.9.1",
|
||||||
|
|
@ -38,20 +38,20 @@
|
||||||
"zod": "^4.3.6"
|
"zod": "^4.3.6"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@storybook/nextjs-vite": "^10.2.7",
|
||||||
"@swc/cli": "^0.7.10",
|
"@swc/cli": "^0.7.10",
|
||||||
"@swc/core": "^1.15.11",
|
"@swc/core": "^1.15.11",
|
||||||
"@types/node": "^20.19.32",
|
"@types/node": "^20.19.32",
|
||||||
"@types/react": "19.2.13",
|
"@types/react": "19.2.13",
|
||||||
"@types/react-dom": "19.2.3",
|
"@types/react-dom": "19.2.3",
|
||||||
"eslint": "9.26.0",
|
"eslint": "^8.57.1",
|
||||||
"eslint-config-next": "16.1.6",
|
"eslint-config-next": "^15.4.11",
|
||||||
"eslint-config-prettier": "^10.1.8",
|
"eslint-config-prettier": "^10.1.8",
|
||||||
"typescript": "5.9.3",
|
"eslint-plugin-storybook": "^10.2.7",
|
||||||
"vitest": "^4.0.18",
|
|
||||||
"storybook": "^10.2.7",
|
"storybook": "^10.2.7",
|
||||||
"@storybook/nextjs-vite": "^10.2.7",
|
"typescript": "5.9.3",
|
||||||
"vite": "^7.3.1",
|
"vite": "^7.3.1",
|
||||||
"eslint-plugin-storybook": "^10.2.7"
|
"vitest": "^4.0.18"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=22.0.0"
|
"node": ">=22.0.0"
|
||||||
|
|
|
||||||
35
sites/chemnitz/Logo.tsx
Normal file
35
sites/chemnitz/Logo.tsx
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
import { LogoProps } from '@/components/Logo/Logo'
|
||||||
|
import { processSvg } from '@/utils/processSvg'
|
||||||
|
import { logoSvg } from './logoSvg'
|
||||||
|
|
||||||
|
export const Logo = ({
|
||||||
|
withText = false,
|
||||||
|
color = '#000000',
|
||||||
|
height = 75,
|
||||||
|
textColor = '#000000',
|
||||||
|
}: LogoProps) => {
|
||||||
|
if (withText && typeof textColor === 'undefined') {
|
||||||
|
textColor = color
|
||||||
|
}
|
||||||
|
|
||||||
|
const viewBox = withText
|
||||||
|
? '0 0 711.13577 250.2845'
|
||||||
|
: '0 0 210 255'
|
||||||
|
const aspectRatio = withText
|
||||||
|
? 711.13577 / 250.2845
|
||||||
|
: 210 / 255
|
||||||
|
const width = height * aspectRatio
|
||||||
|
const inner = processSvg(logoSvg, { color, textColor, withText })
|
||||||
|
|
||||||
|
return (
|
||||||
|
<svg
|
||||||
|
width={width}
|
||||||
|
height={height}
|
||||||
|
viewBox={viewBox}
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
dangerouslySetInnerHTML={{ __html: inner }}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Logo
|
||||||
32
sites/chemnitz/config.ts
Normal file
32
sites/chemnitz/config.ts
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
import { SiteConfig } from '@/config/site'
|
||||||
|
|
||||||
|
const config: SiteConfig = {
|
||||||
|
id: 'chemnitz',
|
||||||
|
name: 'Katholische Pfarrei Heilige Mutter Teresa Chemnitz',
|
||||||
|
shortName: 'Hl. Mutter Teresa',
|
||||||
|
description:
|
||||||
|
'Katholische Pfarrei Heilige Mutter Teresa in Chemnitz – Gottesdienste, Veranstaltungen, Sakramente und Gemeindeleben.',
|
||||||
|
url: 'https://mutter-teresa-chemnitz.de',
|
||||||
|
email: 'kontakt@mutter-teresa-chemnitz.de',
|
||||||
|
keywords: [
|
||||||
|
'Katholische Pfarrei',
|
||||||
|
'Heilige Mutter Teresa',
|
||||||
|
'Chemnitz',
|
||||||
|
'Gottesdienst',
|
||||||
|
'Sakramente',
|
||||||
|
'Veranstaltungen',
|
||||||
|
'Gemeinde',
|
||||||
|
],
|
||||||
|
ogImage: '/og-logo.svg',
|
||||||
|
baseColor: '#016699',
|
||||||
|
shade1: '#67A3C2',
|
||||||
|
shade2: '#DDECF7',
|
||||||
|
shade3: '#eff6ff',
|
||||||
|
contrastColor: '#CE490F',
|
||||||
|
contrastShade1: '#DA764B',
|
||||||
|
defaultFont: 'lato',
|
||||||
|
headerFont: 'lato',
|
||||||
|
borderRadius: '0',
|
||||||
|
}
|
||||||
|
|
||||||
|
export default config
|
||||||
213
sites/chemnitz/logoSvg.ts
Normal file
213
sites/chemnitz/logoSvg.ts
Normal file
|
|
@ -0,0 +1,213 @@
|
||||||
|
// Generated from logo_chemnitz.svg
|
||||||
|
export const logoSvg = `<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
viewBox="0 0 711.13577 250.2845"
|
||||||
|
width="811.79883"
|
||||||
|
height="285.42059"
|
||||||
|
version="1.1"
|
||||||
|
id="svg6"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<defs
|
||||||
|
id="defs10" />
|
||||||
|
<g id="logo">
|
||||||
|
<path
|
||||||
|
d="M 204.2641,6.2541719 89.150104,0.56886185 V 33.435375 l 43.208366,12.453538 -45.969796,4.981411 -4.0068,35.627944 35.952826,5.035567 0.32488,6.172613 -42.287886,-4.060929 0.43317,-52.792166 -25.93585,7.796994 1.57023,42.61276 -42.0713,-12.399394 -10.01698,4.43996 3.79021,29.780207 38.28109,0.64974 14.34864,14.1862 3.35705,91.28984 10.77501,30.42995 26.15244,-6.55165 1.24535,-13.96962 15.431546,-12.67012 -7.20139,-19.76322 -24.365616,-2.81558 3.30289,-40.28451 16.731066,-23.55341 93.56396,1.35366 V 99.168388 L 168.0947,83.195385 199.01196,83.628553 202.15242,54.985414 177.0829,36.684127 205.02215,33.43538 Z"
|
||||||
|
fill="none"
|
||||||
|
stroke="#111111"
|
||||||
|
stroke-width="1.08292"
|
||||||
|
stroke-linejoin="miter"
|
||||||
|
stroke-linecap="round"
|
||||||
|
id="path4"
|
||||||
|
style="fill:#000000;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:0,0;stroke-dashoffset:0" />
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<g
|
||||||
|
aria-label="Katholische Pfarrei
|
||||||
|
Heilige Mutter Teresia
|
||||||
|
Chemnitz"
|
||||||
|
id="text"
|
||||||
|
style="font-weight:bold;font-size:49.1062px;line-height:1.3;font-family:Lato;-inkscape-font-specification:'Lato Bold';letter-spacing:0px;word-spacing:0px;fill:#134bd5;stroke:#000000;stroke-width:0">
|
||||||
|
<path
|
||||||
|
d="m 233.21819,62.42845 h 1.54684 q 0.93302,0 1.54685,-0.245531 0.61383,-0.270084 1.05578,-0.834805 l 9.79669,-12.399316 q 0.61383,-0.785699 1.27676,-1.080336 0.68749,-0.319191 1.71872,-0.319191 h 5.69632 l -11.95736,14.756414 q -1.05579,1.35042 -2.18523,1.915142 0.81025,0.294637 1.44863,0.834805 0.66294,0.515615 1.25221,1.374974 l 12.32566,16.622449 h -5.81909 q -1.17855,0 -1.76782,-0.31919 -0.56472,-0.343744 -0.95757,-0.982125 L 238.15336,68.640385 q -0.46651,-0.662934 -1.08034,-0.933018 -0.61382,-0.270084 -1.76782,-0.270084 h -2.08701 V 83.053055 H 226.6134 V 47.549271 h 6.60479 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102767" />
|
||||||
|
<path
|
||||||
|
d="m 275.79323,83.053055 q -0.85936,0 -1.32587,-0.245531 -0.46651,-0.270084 -0.7366,-1.055784 l -0.54016,-1.792376 q -0.95757,0.859359 -1.86604,1.522292 -0.90846,0.638381 -1.89059,1.080337 -0.98212,0.441956 -2.11156,0.662934 -1.10489,0.220977 -2.45531,0.220977 -1.59596,0 -2.94638,-0.417402 -1.35042,-0.441956 -2.33254,-1.301315 -0.98213,-0.859358 -1.52229,-2.136119 -0.54017,-1.276762 -0.54017,-2.970926 0,-1.424079 0.73659,-2.799053 0.76115,-1.399527 2.50442,-2.504416 1.74327,-1.129443 4.64053,-1.866036 2.89727,-0.736593 7.21862,-0.834805 v -1.473186 q 0,-2.52897 -1.08034,-3.732072 -1.08034,-1.227655 -3.11824,-1.227655 -1.47319,0 -2.45531,0.343744 -0.95758,0.343743 -1.69417,0.785699 -0.73659,0.417403 -1.35042,0.761146 -0.58927,0.343743 -1.32587,0.343743 -0.63838,0 -1.08033,-0.31919 -0.44196,-0.343743 -0.71204,-0.785699 l -1.08034,-1.939695 q 4.3459,-3.977602 10.45962,-3.977602 2.20978,0 3.95305,0.736593 1.74327,0.71204 2.94637,2.013354 1.2031,1.276761 1.81693,3.069138 0.63838,1.792376 0.63838,3.928496 v 15.910409 z m -9.0601,-3.781178 q 1.86604,0 3.21646,-0.662933 1.37497,-0.687487 2.67629,-2.062461 v -4.247686 q -2.65174,0.122765 -4.44412,0.466509 -1.76782,0.31919 -2.84816,0.834805 -1.08033,0.515615 -1.54684,1.203102 -0.46651,0.687487 -0.46651,1.497739 0,1.595952 0.93302,2.283439 0.95757,0.687486 2.47986,0.687486 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102769" />
|
||||||
|
<path
|
||||||
|
d="m 292.2928,83.445904 q -3.29012,0 -5.05794,-1.841482 -1.74327,-1.866036 -1.74327,-5.131598 V 62.403897 h -2.57807 q -0.49107,0 -0.83481,-0.31919 -0.34374,-0.31919 -0.34374,-0.957571 v -2.406204 l 4.05126,-0.662934 1.27676,-6.874868 q 0.12277,-0.491062 0.46651,-0.761146 0.34374,-0.270084 0.88391,-0.270084 h 3.1428 v 7.930652 h 6.72755 v 4.321345 h -6.72755 v 13.651524 q 0,1.178549 0.56472,1.841483 0.58927,0.662933 1.59595,0.662933 0.56472,0 0.93302,-0.122765 0.39285,-0.147319 0.66293,-0.294637 0.29464,-0.147319 0.51562,-0.270084 0.22097,-0.147319 0.44195,-0.147319 0.27009,0 0.44196,0.147319 0.17187,0.122765 0.3683,0.392849 l 1.81692,2.946372 q -1.32586,1.10489 -3.04458,1.669611 -1.71872,0.564721 -3.5602,0.564721 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102771" />
|
||||||
|
<path
|
||||||
|
d="M 302.16313,83.053055 V 46.567147 h 6.06462 v 14.019821 q 1.47319,-1.399527 3.24101,-2.258885 1.76782,-0.859359 4.14947,-0.859359 2.06246,0 3.65842,0.71204 1.59595,0.687487 2.65173,1.964248 1.08034,1.252208 1.6205,3.020031 0.56473,1.74327 0.56473,3.854837 v 16.033175 h -6.06462 V 67.01988 q 0,-2.307991 -1.05578,-3.560199 -1.05579,-1.276762 -3.21646,-1.276762 -1.5714,0 -2.94637,0.71204 -1.37497,0.71204 -2.60263,1.939695 v 18.218401 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102773" />
|
||||||
|
<path
|
||||||
|
d="m 341.0061,57.468724 q 2.79905,0 5.08249,0.908465 2.30799,0.908464 3.92849,2.578075 1.64506,1.669611 2.52897,4.075815 0.88391,2.406204 0.88391,5.377129 0,2.995478 -0.88391,5.401682 -0.88391,2.406204 -2.52897,4.100368 -1.6205,1.694164 -3.92849,2.602629 -2.28344,0.908464 -5.08249,0.908464 -2.82361,0 -5.1316,-0.908464 -2.30799,-0.908465 -3.95305,-2.602629 -1.62051,-1.694164 -2.52897,-4.100368 -0.88391,-2.406204 -0.88391,-5.401682 0,-2.970925 0.88391,-5.377129 0.90846,-2.406204 2.52897,-4.075815 1.64506,-1.669611 3.95305,-2.578075 2.30799,-0.908465 5.1316,-0.908465 z m 0,21.287538 q 3.14279,0 4.64053,-2.111566 1.52229,-2.111567 1.52229,-6.187382 0,-4.075814 -1.52229,-6.211934 -1.49774,-2.13612 -4.64053,-2.13612 -3.19191,0 -4.73875,2.160673 -1.52229,2.13612 -1.52229,6.187381 0,4.051262 1.52229,6.187382 1.54684,2.111566 4.73875,2.111566 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102775" />
|
||||||
|
<path
|
||||||
|
d="m 364.20874,46.567147 v 36.485908 h -6.06462 V 46.567147 Z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102777" />
|
||||||
|
<path
|
||||||
|
d="m 376.55889,57.861574 v 25.191481 h -6.08917 V 57.861574 Z m 0.8348,-7.341377 q 0,0.785699 -0.31919,1.473186 -0.31919,0.687486 -0.85935,1.203101 -0.51562,0.515616 -1.22766,0.834806 -0.71204,0.294637 -1.52229,0.294637 -0.7857,0 -1.49774,-0.294637 -0.68749,-0.31919 -1.2031,-0.834806 -0.51562,-0.515615 -0.83481,-1.203101 -0.29464,-0.687487 -0.29464,-1.473186 0,-0.810253 0.29464,-1.522293 0.31919,-0.71204 0.83481,-1.227655 0.51561,-0.515615 1.2031,-0.810252 0.71204,-0.31919 1.49774,-0.31919 0.81025,0 1.52229,0.31919 0.71204,0.294637 1.22766,0.810252 0.54016,0.515615 0.85935,1.227655 0.31919,0.71204 0.31919,1.522293 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102779" />
|
||||||
|
<path
|
||||||
|
d="m 398.1165,62.772194 q -0.24553,0.392849 -0.51562,0.564721 -0.27008,0.147319 -0.68748,0.147319 -0.44196,0 -0.95758,-0.245531 -0.49106,-0.245531 -1.15399,-0.540169 -0.66293,-0.31919 -1.52229,-0.564721 -0.83481,-0.245531 -1.9888,-0.245531 -1.79238,0 -2.82361,0.761146 -1.00668,0.761146 -1.00668,1.988801 0,0.810253 0.51562,1.374974 0.54017,0.540168 1.39952,0.957571 0.88392,0.417403 1.9888,0.761146 1.10489,0.31919 2.23434,0.71204 1.15399,0.39285 2.25888,0.908465 1.10489,0.491062 1.96425,1.276761 0.88391,0.761146 1.39953,1.841482 0.54017,1.080337 0.54017,2.602629 0,1.81693 -0.66294,3.363775 -0.63838,1.522292 -1.91514,2.651735 -1.27676,1.104889 -3.16735,1.74327 -1.86604,0.613827 -4.32135,0.613827 -1.30131,0 -2.55352,-0.245531 -1.22765,-0.220977 -2.38165,-0.63838 -1.12944,-0.417403 -2.11157,-0.982124 -0.95757,-0.564722 -1.69416,-1.227655 l 1.39953,-2.307992 q 0.27008,-0.417402 0.63838,-0.63838 0.36829,-0.220978 0.93302,-0.220978 0.56472,0 1.05578,0.31919 0.51561,0.31919 1.17855,0.687487 0.66293,0.368296 1.54684,0.687487 0.90847,0.31919 2.28344,0.31919 1.08034,0 1.84148,-0.245531 0.7857,-0.270084 1.27676,-0.687487 0.51562,-0.417403 0.7366,-0.957571 0.24553,-0.564721 0.24553,-1.153995 0,-0.883912 -0.54017,-1.448633 -0.51561,-0.564722 -1.39953,-0.982124 -0.85935,-0.417403 -1.9888,-0.736593 -1.10489,-0.343744 -2.28344,-0.736593 -1.15399,-0.39285 -2.28343,-0.908465 -1.10489,-0.540168 -1.98881,-1.350421 -0.85935,-0.810252 -1.39952,-1.988801 -0.51562,-1.178549 -0.51562,-2.84816 0,-1.546845 0.61383,-2.946372 0.61383,-1.399526 1.79238,-2.430757 1.2031,-1.055783 2.97092,-1.66961 1.79238,-0.638381 4.12492,-0.638381 2.60263,0 4.73875,0.859359 2.13612,0.859358 3.5602,2.258885 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102781" />
|
||||||
|
<path
|
||||||
|
d="m 422.37491,63.189596 q -0.27009,0.343744 -0.54017,0.540169 -0.24553,0.196424 -0.73659,0.196424 -0.46651,0 -0.90847,-0.270084 -0.44195,-0.294637 -1.05578,-0.63838 -0.61383,-0.368297 -1.47319,-0.638381 -0.8348,-0.294637 -2.08701,-0.294637 -1.59595,0 -2.79905,0.589274 -1.20311,0.564722 -2.01336,1.645058 -0.7857,1.080336 -1.17855,2.627182 -0.39285,1.522292 -0.39285,3.461987 0,2.013354 0.41741,3.584753 0.44195,1.571398 1.2522,2.651735 0.81026,1.055783 1.96425,1.620504 1.154,0.540168 2.60263,0.540168 1.44863,0 2.33255,-0.343743 0.90846,-0.368297 1.52229,-0.785699 0.61383,-0.441956 1.05578,-0.785699 0.46651,-0.368297 1.03123,-0.368297 0.73659,0 1.10489,0.564721 l 1.74327,2.209779 q -1.00668,1.178549 -2.18523,1.988802 -1.17854,0.785699 -2.45531,1.276761 -1.2522,0.466509 -2.60262,0.662934 -1.32587,0.196424 -2.65174,0.196424 -2.33254,0 -4.395,-0.859358 -2.06246,-0.883912 -3.60931,-2.553523 -1.54684,-1.669611 -2.45531,-4.075814 -0.88391,-2.430757 -0.88391,-5.524448 0,-2.7745 0.7857,-5.131598 0.81025,-2.381651 2.3571,-4.100368 1.54684,-1.74327 3.83028,-2.725394 2.28344,-0.982124 5.25436,-0.982124 2.82361,0 4.93518,0.908465 2.13612,0.908464 3.83028,2.602628 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102783" />
|
||||||
|
<path
|
||||||
|
d="M 427.99749,83.053055 V 46.567147 h 6.06462 v 14.019821 q 1.47318,-1.399527 3.24101,-2.258885 1.76782,-0.859359 4.14947,-0.859359 2.06246,0 3.65841,0.71204 1.59596,0.687487 2.65174,1.964248 1.08033,1.252208 1.6205,3.020031 0.56472,1.74327 0.56472,3.854837 v 16.033175 h -6.06461 V 67.01988 q 0,-2.307991 -1.05578,-3.560199 -1.05579,-1.276762 -3.21646,-1.276762 -1.5714,0 -2.94637,0.71204 -1.37498,0.71204 -2.60263,1.939695 v 18.218401 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102785" />
|
||||||
|
<path
|
||||||
|
d="m 466.42306,57.468724 q 2.38165,0 4.395,0.761146 2.01336,0.761146 3.46199,2.234332 1.44863,1.448633 2.25889,3.584753 0.8348,2.111567 0.8348,4.836961 0,1.374973 -0.29464,1.866035 -0.29463,0.466509 -1.12944,0.466509 h -15.59122 q 0.14732,1.939695 0.68749,3.363775 0.54017,1.399527 1.42408,2.332545 0.88391,0.908464 2.08701,1.374973 1.22766,0.441956 2.70084,0.441956 1.47319,0 2.52897,-0.343743 1.08034,-0.343744 1.86604,-0.761146 0.81025,-0.417403 1.39953,-0.761147 0.61382,-0.343743 1.17855,-0.343743 0.76114,0 1.12944,0.564721 l 1.74327,2.209779 q -1.00668,1.178549 -2.25889,1.988802 -1.25221,0.785699 -2.62718,1.276761 -1.35042,0.466509 -2.7745,0.662934 -1.39953,0.196424 -2.72539,0.196424 -2.62719,0 -4.88607,-0.859358 -2.25889,-0.883912 -3.9285,-2.578076 -1.66961,-1.718717 -2.62718,-4.223133 -0.95757,-2.528969 -0.95757,-5.843638 0,-2.578076 0.83481,-4.836961 0.8348,-2.283438 2.38165,-3.953049 1.5714,-1.694164 3.80573,-2.676288 2.25888,-0.982124 5.08249,-0.982124 z m 0.12276,4.345899 q -2.65173,0 -4.14947,1.497739 -1.49774,1.497739 -1.91514,4.247686 h 11.44174 q 0,-1.178548 -0.34374,-2.209779 -0.31919,-1.055783 -0.98212,-1.841482 -0.66294,-0.785699 -1.69417,-1.227655 -1.00667,-0.466509 -2.3571,-0.466509 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102787" />
|
||||||
|
<path
|
||||||
|
d="m 501.41106,70.555527 v 12.497528 h -6.60479 V 47.549271 h 11.53996 q 3.5602,0 6.16283,0.834806 2.60263,0.834805 4.29679,2.332544 1.69417,1.497739 2.50442,3.584753 0.8348,2.087014 0.8348,4.566877 0,2.578075 -0.85935,4.738748 -0.85936,2.13612 -2.57808,3.682965 -1.71872,1.546846 -4.32135,2.406204 -2.57807,0.859359 -6.04006,0.859359 z m 0,-5.156152 h 4.93517 q 1.81693,0 3.16735,-0.441955 1.35042,-0.466509 2.23433,-1.301315 0.90847,-0.859358 1.35042,-2.06246 0.44196,-1.227655 0.44196,-2.725394 0,-1.42408 -0.44196,-2.578076 -0.44195,-1.153996 -1.32586,-1.964248 -0.88391,-0.810252 -2.23433,-1.227655 -1.35043,-0.441956 -3.19191,-0.441956 h -4.93517 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102789" />
|
||||||
|
<path
|
||||||
|
d="M 526.01323,83.053055 V 62.42845 L 523.828,62.084707 q -0.71204,-0.147319 -1.154,-0.491062 -0.4174,-0.368297 -0.4174,-1.03123 v -2.479863 h 3.75663 v -1.866036 q 0,-2.160673 0.63838,-3.87939 0.66293,-1.718717 1.86603,-2.921819 1.22766,-1.203102 2.97093,-1.841483 1.74327,-0.63838 3.92849,-0.63838 1.74327,0 3.24101,0.466509 l -0.12276,3.044584 q -0.0246,0.343744 -0.19643,0.564722 -0.17187,0.196424 -0.46651,0.31919 -0.27008,0.09821 -0.63838,0.147318 -0.36829,0.02455 -0.7857,0.02455 -1.08033,0 -1.93969,0.245531 -0.83481,0.220977 -1.42408,0.810252 -0.58928,0.564721 -0.90847,1.522292 -0.29463,0.933018 -0.29463,2.332545 v 1.669611 h 6.55567 v 4.321345 h -6.35925 v 20.649158 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102791" />
|
||||||
|
<path
|
||||||
|
d="m 558.32509,83.053055 q -0.85936,0 -1.32587,-0.245531 -0.46651,-0.270084 -0.73659,-1.055784 l -0.54017,-1.792376 q -0.95757,0.859359 -1.86604,1.522292 -0.90846,0.638381 -1.89059,1.080337 -0.98212,0.441956 -2.11156,0.662934 -1.10489,0.220977 -2.45531,0.220977 -1.59596,0 -2.94638,-0.417402 -1.35042,-0.441956 -2.33254,-1.301315 -0.98212,-0.859358 -1.52229,-2.136119 -0.54017,-1.276762 -0.54017,-2.970926 0,-1.424079 0.73659,-2.799053 0.76115,-1.399527 2.50442,-2.504416 1.74327,-1.129443 4.64053,-1.866036 2.89727,-0.736593 7.21862,-0.834805 v -1.473186 q 0,-2.52897 -1.08034,-3.732072 -1.08034,-1.227655 -3.11824,-1.227655 -1.47319,0 -2.45531,0.343744 -0.95758,0.343743 -1.69417,0.785699 -0.73659,0.417403 -1.35042,0.761146 -0.58927,0.343743 -1.32587,0.343743 -0.63838,0 -1.08033,-0.31919 -0.44196,-0.343743 -0.71204,-0.785699 l -1.08034,-1.939695 q 4.3459,-3.977602 10.45962,-3.977602 2.20978,0 3.95305,0.736593 1.74327,0.71204 2.94637,2.013354 1.2031,1.276761 1.81693,3.069138 0.63838,1.792376 0.63838,3.928496 v 15.910409 z m -9.0601,-3.781178 q 1.86604,0 3.21646,-0.662933 1.37497,-0.687487 2.67629,-2.062461 v -4.247686 q -2.65174,0.122765 -4.44412,0.466509 -1.76782,0.31919 -2.84816,0.834805 -1.08033,0.515615 -1.54684,1.203102 -0.46651,0.687487 -0.46651,1.497739 0,1.595952 0.93302,2.283439 0.95757,0.687486 2.47986,0.687486 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102793" />
|
||||||
|
<path
|
||||||
|
d="M 566.77134,83.053055 V 57.861574 h 3.5602 q 0.93302,0 1.30132,0.343743 0.36829,0.31919 0.49106,1.178549 l 0.34374,2.84816 q 1.2031,-2.258886 2.82361,-3.535647 1.6205,-1.301314 3.83028,-1.301314 1.74327,0 2.79905,0.761146 l -0.39284,4.542323 q -0.12277,0.441956 -0.3683,0.638381 -0.22098,0.171872 -0.61383,0.171872 -0.3683,0 -1.10489,-0.122766 -0.71204,-0.122765 -1.39952,-0.122765 -1.00668,0 -1.79238,0.294637 -0.7857,0.294637 -1.42408,0.859358 -0.61383,0.540169 -1.10489,1.325868 -0.46651,0.785699 -0.88391,1.792376 v 15.51756 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102795" />
|
||||||
|
<path
|
||||||
|
d="M 585.08793,83.053055 V 57.861574 h 3.5602 q 0.93302,0 1.30132,0.343743 0.36829,0.31919 0.49106,1.178549 l 0.34374,2.84816 q 1.2031,-2.258886 2.82361,-3.535647 1.6205,-1.301314 3.83028,-1.301314 1.74327,0 2.79905,0.761146 l -0.39285,4.542323 q -0.12276,0.441956 -0.36829,0.638381 -0.22098,0.171872 -0.61383,0.171872 -0.3683,0 -1.10489,-0.122766 -0.71204,-0.122765 -1.39953,-0.122765 -1.00667,0 -1.79237,0.294637 -0.7857,0.294637 -1.42408,0.859358 -0.61383,0.540169 -1.10489,1.325868 -0.46651,0.785699 -0.88391,1.792376 v 15.51756 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102797" />
|
||||||
|
<path
|
||||||
|
d="m 613.4221,57.468724 q 2.38165,0 4.395,0.761146 2.01336,0.761146 3.46199,2.234332 1.44863,1.448633 2.25889,3.584753 0.8348,2.111567 0.8348,4.836961 0,1.374973 -0.29464,1.866035 -0.29463,0.466509 -1.12944,0.466509 h -15.59122 q 0.14732,1.939695 0.68749,3.363775 0.54017,1.399527 1.42408,2.332545 0.88391,0.908464 2.08701,1.374973 1.22766,0.441956 2.70084,0.441956 1.47319,0 2.52897,-0.343743 1.08034,-0.343744 1.86604,-0.761146 0.81025,-0.417403 1.39953,-0.761147 0.61382,-0.343743 1.17854,-0.343743 0.76115,0 1.12945,0.564721 l 1.74327,2.209779 q -1.00668,1.178549 -2.25889,1.988802 -1.25221,0.785699 -2.62718,1.276761 -1.35042,0.466509 -2.7745,0.662934 -1.39953,0.196424 -2.72539,0.196424 -2.62719,0 -4.88607,-0.859358 -2.25889,-0.883912 -3.9285,-2.578076 -1.66961,-1.718717 -2.62718,-4.223133 -0.95757,-2.528969 -0.95757,-5.843638 0,-2.578076 0.8348,-4.836961 0.83481,-2.283438 2.38166,-3.953049 1.57139,-1.694164 3.80573,-2.676288 2.25888,-0.982124 5.08249,-0.982124 z m 0.12276,4.345899 q -2.65173,0 -4.14947,1.497739 -1.49774,1.497739 -1.91514,4.247686 h 11.44174 q 0,-1.178548 -0.34374,-2.209779 -0.31919,-1.055783 -0.98212,-1.841482 -0.66294,-0.785699 -1.69417,-1.227655 -1.00668,-0.466509 -2.3571,-0.466509 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102799" />
|
||||||
|
<path
|
||||||
|
d="m 635.20061,57.861574 v 25.191481 h -6.08917 V 57.861574 Z m 0.83481,-7.341377 q 0,0.785699 -0.31919,1.473186 -0.31919,0.687486 -0.85936,1.203101 -0.51562,0.515616 -1.22766,0.834806 -0.71204,0.294637 -1.52229,0.294637 -0.7857,0 -1.49774,-0.294637 -0.68748,-0.31919 -1.2031,-0.834806 -0.51561,-0.515615 -0.8348,-1.203101 -0.29464,-0.687487 -0.29464,-1.473186 0,-0.810253 0.29464,-1.522293 0.31919,-0.71204 0.8348,-1.227655 0.51562,-0.515615 1.2031,-0.810252 0.71204,-0.31919 1.49774,-0.31919 0.81025,0 1.52229,0.31919 0.71204,0.294637 1.22766,0.810252 0.54017,0.515615 0.85936,1.227655 0.31919,0.71204 0.31919,1.522293 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102801" />
|
||||||
|
<path
|
||||||
|
d="m 256.54363,146.89111 h -6.62933 v -15.51756 h -16.67156 v 15.51756 h -6.62934 v -35.50378 h 6.62934 v 15.27203 h 16.67156 v -15.27203 h 6.62933 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102803" />
|
||||||
|
<path
|
||||||
|
d="m 273.46058,121.30678 q 2.38166,0 4.39501,0.76115 2.01335,0.76115 3.46199,2.23433 1.44863,1.44863 2.25888,3.58475 0.83481,2.11157 0.83481,4.83696 0,1.37498 -0.29464,1.86604 -0.29464,0.46651 -1.12944,0.46651 h -15.59122 q 0.14732,1.93969 0.68749,3.36377 0.54016,1.39953 1.42408,2.33255 0.88391,0.90846 2.08701,1.37497 1.22765,0.44196 2.70084,0.44196 1.47319,0 2.52897,-0.34375 1.08034,-0.34374 1.86603,-0.76114 0.81026,-0.4174 1.39953,-0.76115 0.61383,-0.34374 1.17855,-0.34374 0.76115,0 1.12944,0.56472 l 1.74327,2.20978 q -1.00667,1.17855 -2.25888,1.9888 -1.25221,0.7857 -2.62718,1.27676 -1.35042,0.46651 -2.7745,0.66294 -1.39953,0.19642 -2.7254,0.19642 -2.62718,0 -4.88607,-0.85936 -2.25888,-0.88391 -3.92849,-2.57807 -1.66961,-1.71872 -2.62718,-4.22314 -0.95757,-2.52897 -0.95757,-5.84363 0,-2.57808 0.8348,-4.83697 0.83481,-2.28343 2.38165,-3.95304 1.5714,-1.69417 3.80573,-2.67629 2.25889,-0.98213 5.08249,-0.98213 z m 0.12277,4.3459 q -2.65173,0 -4.14947,1.49774 -1.49774,1.49774 -1.91515,4.24769 h 11.44175 q 0,-1.17855 -0.34374,-2.20978 -0.31919,-1.05578 -0.98213,-1.84148 -0.66293,-0.7857 -1.69416,-1.22766 -1.00668,-0.46651 -2.3571,-0.46651 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102805" />
|
||||||
|
<path
|
||||||
|
d="m 295.23911,121.69963 v 25.19148 h -6.08917 v -25.19148 z m 0.83481,-7.34137 q 0,0.78569 -0.31919,1.47318 -0.31919,0.68749 -0.85936,1.2031 -0.51562,0.51562 -1.22766,0.83481 -0.71204,0.29464 -1.52229,0.29464 -0.7857,0 -1.49774,-0.29464 -0.68749,-0.31919 -1.2031,-0.83481 -0.51562,-0.51561 -0.83481,-1.2031 -0.29463,-0.68749 -0.29463,-1.47318 0,-0.81026 0.29463,-1.5223 0.31919,-0.71204 0.83481,-1.22765 0.51561,-0.51562 1.2031,-0.81025 0.71204,-0.31919 1.49774,-0.31919 0.81025,0 1.52229,0.31919 0.71204,0.29463 1.22766,0.81025 0.54017,0.51561 0.85936,1.22765 0.31919,0.71204 0.31919,1.5223 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102807" />
|
||||||
|
<path
|
||||||
|
d="m 307.56475,110.40521 v 36.4859 h -6.06461 v -36.4859 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102809" />
|
||||||
|
<path
|
||||||
|
d="m 319.91491,121.69963 v 25.19148 h -6.08917 v -25.19148 z m 0.8348,-7.34137 q 0,0.78569 -0.31919,1.47318 -0.31919,0.68749 -0.85936,1.2031 -0.51561,0.51562 -1.22765,0.83481 -0.71204,0.29464 -1.52229,0.29464 -0.7857,0 -1.49774,-0.29464 -0.68749,-0.31919 -1.2031,-0.83481 -0.51562,-0.51561 -0.83481,-1.2031 -0.29464,-0.68749 -0.29464,-1.47318 0,-0.81026 0.29464,-1.5223 0.31919,-0.71204 0.83481,-1.22765 0.51561,-0.51562 1.2031,-0.81025 0.71204,-0.31919 1.49774,-0.31919 0.81025,0 1.52229,0.31919 0.71204,0.29463 1.22765,0.81025 0.54017,0.51561 0.85936,1.22765 0.31919,0.71204 0.31919,1.5223 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102811" />
|
||||||
|
<path
|
||||||
|
d="m 335.30969,121.25768 q 1.6205,0 3.02003,0.34374 1.42408,0.31919 2.62718,0.95757 h 7.24317 v 2.25889 q 0,1.08033 -1.30132,1.32586 l -2.25888,0.41741 q 0.24553,0.63838 0.36829,1.35042 0.14732,0.71204 0.14732,1.49774 0,1.86603 -0.76115,3.38832 -0.73659,1.49774 -2.06246,2.55353 -1.32586,1.05578 -3.14279,1.64505 -1.79238,0.56473 -3.87939,0.56473 -1.42408,0 -2.7745,-0.27009 -1.17855,0.71204 -1.17855,1.59595 0,0.76115 0.68748,1.12945 0.71204,0.34374 1.86604,0.49106 1.154,0.14732 2.62718,0.19642 1.47319,0.0246 3.02003,0.14732 1.54685,0.12277 3.02004,0.44196 1.47318,0.29463 2.62718,0.95757 1.15399,0.66293 1.84148,1.81693 0.71204,1.12944 0.71204,2.92182 0,1.66961 -0.83481,3.24101 -0.81025,1.57139 -2.38165,2.79905 -1.54684,1.22765 -3.83028,1.96425 -2.25889,0.76114 -5.15615,0.76114 -2.84816,0 -4.95973,-0.56472 -2.11156,-0.54017 -3.51109,-1.47318 -1.39953,-0.90847 -2.08701,-2.11157 -0.68749,-1.2031 -0.68749,-2.50442 0,-1.74327 1.05578,-2.94637 1.08034,-1.2031 2.92182,-1.91514 -0.98212,-0.51562 -1.5714,-1.37497 -0.58927,-0.85936 -0.58927,-2.25889 0,-0.56472 0.19642,-1.154 0.19643,-0.61382 0.58928,-1.2031 0.4174,-0.58927 1.03123,-1.10489 0.63838,-0.54017 1.47318,-0.95757 -1.91514,-1.03123 -3.02003,-2.74995 -1.08033,-1.71871 -1.08033,-4.0267 0,-1.86604 0.73659,-3.36378 0.76114,-1.52229 2.08701,-2.57807 1.35042,-1.08034 3.16735,-1.64506 1.84148,-0.56472 4.00216,-0.56472 z m 6.85031,26.76288 q 0,-0.7366 -0.44195,-1.17855 -0.44196,-0.46651 -1.20311,-0.7366 -0.76114,-0.27008 -1.79237,-0.39284 -1.00668,-0.12277 -2.16067,-0.17188 -1.12945,-0.0737 -2.3571,-0.12276 -1.2031,-0.0491 -2.3571,-0.19643 -1.00668,0.56472 -1.64506,1.32587 -0.61383,0.76115 -0.61383,1.76782 0,0.66294 0.3192,1.22766 0.34374,0.58927 1.05578,1.00668 0.73659,0.4174 1.89059,0.63838 1.15399,0.24553 2.8236,0.24553 1.69417,0 2.92182,-0.27009 1.22766,-0.24553 2.01336,-0.71204 0.81025,-0.44195 1.17855,-1.08033 0.36829,-0.61383 0.36829,-1.35042 z m -6.85031,-14.33901 q 1.12944,0 1.96425,-0.29464 0.8348,-0.31919 1.37497,-0.85936 0.56472,-0.54017 0.8348,-1.30131 0.29464,-0.76115 0.29464,-1.66962 0,-1.86603 -1.12944,-2.94637 -1.10489,-1.10489 -3.33922,-1.10489 -2.23433,0 -3.36378,1.10489 -1.10489,1.08034 -1.10489,2.94637 0,0.88392 0.27009,1.64506 0.29463,0.76115 0.8348,1.32587 0.56472,0.54017 1.39953,0.85936 0.85936,0.29464 1.96425,0.29464 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102813" />
|
||||||
|
<path
|
||||||
|
d="m 362.31806,121.30678 q 2.38165,0 4.395,0.76115 2.01336,0.76115 3.46199,2.23433 1.44863,1.44863 2.25888,3.58475 0.83481,2.11157 0.83481,4.83696 0,1.37498 -0.29464,1.86604 -0.29464,0.46651 -1.12944,0.46651 h -15.59122 q 0.14732,1.93969 0.68749,3.36377 0.54017,1.39953 1.42408,2.33255 0.88391,0.90846 2.08701,1.37497 1.22766,0.44196 2.70084,0.44196 1.47319,0 2.52897,-0.34375 1.08034,-0.34374 1.86604,-0.76114 0.81025,-0.4174 1.39952,-0.76115 0.61383,-0.34374 1.17855,-0.34374 0.76115,0 1.12944,0.56472 l 1.74327,2.20978 q -1.00667,1.17855 -2.25888,1.9888 -1.25221,0.7857 -2.62718,1.27676 -1.35042,0.46651 -2.7745,0.66294 -1.39953,0.19642 -2.7254,0.19642 -2.62718,0 -4.88606,-0.85936 -2.25889,-0.88391 -3.9285,-2.57807 -1.66961,-1.71872 -2.62718,-4.22314 -0.95757,-2.52897 -0.95757,-5.84363 0,-2.57808 0.8348,-4.83697 0.83481,-2.28343 2.38165,-3.95304 1.5714,-1.69417 3.80573,-2.67629 2.25889,-0.98213 5.0825,-0.98213 z m 0.12276,4.3459 q -2.65173,0 -4.14947,1.49774 -1.49774,1.49774 -1.91514,4.24769 h 11.44174 q 0,-1.17855 -0.34374,-2.20978 -0.31919,-1.05578 -0.98213,-1.84148 -0.66293,-0.7857 -1.69416,-1.22766 -1.00668,-0.46651 -2.3571,-0.46651 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102815" />
|
||||||
|
<path
|
||||||
|
d="m 408.52683,132.15925 q 0.4174,0.7857 0.76115,1.64506 0.36829,0.83481 0.71204,1.69417 0.34374,-0.90847 0.71204,-1.74327 0.36829,-0.85936 0.7857,-1.64506 l 10.48417,-19.66704 q 0.19642,-0.36829 0.4174,-0.58927 0.22098,-0.22098 0.46651,-0.31919 0.27009,-0.0982 0.58928,-0.12277 0.31919,-0.0245 0.76114,-0.0245 h 4.98428 v 35.50378 h -5.81908 v -22.93259 q 0,-0.63838 0.0245,-1.39953 0.0491,-0.76114 0.12276,-1.54684 l -10.7297,20.13354 q -0.76115,1.44863 -2.33254,1.44863 h -0.93302 q -1.5714,0 -2.33255,-1.44863 l -10.85247,-20.2072 q 0.0737,0.81025 0.12277,1.59595 0.0491,0.76114 0.0491,1.42408 v 22.93259 h -5.81908 v -35.50378 h 4.98428 q 0.44195,0 0.76114,0.0245 0.3192,0.0246 0.56473,0.12277 0.27008,0.0982 0.4665,0.31919 0.22098,0.22098 0.41741,0.58927 l 10.63149,19.71614 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102817" />
|
||||||
|
<path
|
||||||
|
d="m 441.50161,121.69963 v 16.00862 q 0,2.308 1.05578,3.58476 1.08034,1.25221 3.21645,1.25221 1.5714,0 2.94638,-0.68749 1.37497,-0.71204 2.60263,-1.9397 v -18.2184 h 6.06461 v 25.19148 h -3.70752 q -1.2031,0 -1.52229,-1.10489 l -0.4174,-2.01335 q -0.7857,0.7857 -1.62051,1.44863 -0.8348,0.63838 -1.79237,1.10489 -0.95757,0.46651 -2.03791,0.71204 -1.08034,0.24553 -2.3571,0.24553 -2.06246,0 -3.65841,-0.68748 -1.5714,-0.71204 -2.65173,-1.9888 -1.08034,-1.27677 -1.64506,-3.02004 -0.54017,-1.76782 -0.54017,-3.87939 v -16.00862 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102819" />
|
||||||
|
<path
|
||||||
|
d="m 471.77553,147.28396 q -3.29012,0 -5.05794,-1.84148 -1.74327,-1.86603 -1.74327,-5.1316 v -14.06892 h -2.57808 q -0.49106,0 -0.8348,-0.31919 -0.34375,-0.31919 -0.34375,-0.95757 v -2.40621 l 4.05127,-0.66293 1.27676,-6.87487 q 0.12276,-0.49106 0.46651,-0.76115 0.34374,-0.27008 0.88391,-0.27008 h 3.14279 v 7.93065 h 10.48418 l 1.30131,-6.89942 q 0.12277,-0.49106 0.44196,-0.76115 0.34374,-0.27008 0.90846,-0.27008 h 3.11825 v 7.93065 h 6.72755 v 4.32135 h -6.72755 v 13.65152 q 0,1.17855 0.58927,1.84148 0.58928,0.66294 1.59595,0.66294 0.54017,0 0.93302,-0.12277 0.39285,-0.14732 0.66293,-0.29464 0.29464,-0.14731 0.51562,-0.27008 0.22098,-0.14732 0.44196,-0.14732 0.27008,0 0.44195,0.14732 0.17187,0.12277 0.3683,0.39285 l 1.81693,2.94637 q -1.32587,1.10489 -3.04459,1.66961 -1.71871,0.56472 -3.5602,0.56472 -3.29011,0 -5.05794,-1.84148 -1.76782,-1.86603 -1.76782,-5.1316 v -14.06892 h -10.18954 v 13.65152 q 0,1.17855 0.56473,1.84148 0.58927,0.66294 1.59595,0.66294 0.56472,0 0.93302,-0.12277 0.39284,-0.14732 0.66293,-0.29464 0.29464,-0.14731 0.51561,-0.27008 0.22098,-0.14732 0.44196,-0.14732 0.27008,0 0.44196,0.14732 0.17187,0.12277 0.36829,0.39285 l 1.81693,2.94637 q -1.32587,1.10489 -3.04458,1.66961 -1.71872,0.56472 -3.5602,0.56472 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102821" />
|
||||||
|
<path
|
||||||
|
d="m 508.62968,121.30678 q 2.38165,0 4.395,0.76115 2.01336,0.76115 3.46199,2.23433 1.44863,1.44863 2.25889,3.58475 0.8348,2.11157 0.8348,4.83696 0,1.37498 -0.29464,1.86604 -0.29463,0.46651 -1.12944,0.46651 h -15.59122 q 0.14732,1.93969 0.68749,3.36377 0.54017,1.39953 1.42408,2.33255 0.88391,0.90846 2.08701,1.37497 1.22766,0.44196 2.70084,0.44196 1.47319,0 2.52897,-0.34375 1.08034,-0.34374 1.86604,-0.76114 0.81025,-0.4174 1.39953,-0.76115 0.61382,-0.34374 1.17854,-0.34374 0.76115,0 1.12945,0.56472 l 1.74327,2.20978 q -1.00668,1.17855 -2.25889,1.9888 -1.25221,0.7857 -2.62718,1.27676 -1.35042,0.46651 -2.7745,0.66294 -1.39953,0.19642 -2.72539,0.19642 -2.62719,0 -4.88607,-0.85936 -2.25889,-0.88391 -3.9285,-2.57807 -1.66961,-1.71872 -2.62718,-4.22314 -0.95757,-2.52897 -0.95757,-5.84363 0,-2.57808 0.83481,-4.83697 0.8348,-2.28343 2.38165,-3.95304 1.57139,-1.69417 3.80573,-2.67629 2.25888,-0.98213 5.08249,-0.98213 z m 0.12276,4.3459 q -2.65173,0 -4.14947,1.49774 -1.49774,1.49774 -1.91514,4.24769 h 11.44174 q 0,-1.17855 -0.34374,-2.20978 -0.31919,-1.05578 -0.98212,-1.84148 -0.66294,-0.7857 -1.69417,-1.22766 -1.00668,-0.46651 -2.3571,-0.46651 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102823" />
|
||||||
|
<path
|
||||||
|
d="m 524.12263,146.89111 v -25.19148 h 3.5602 q 0.93302,0 1.30131,0.34375 0.3683,0.31919 0.49107,1.17855 l 0.34374,2.84815 q 1.2031,-2.25888 2.82361,-3.53564 1.6205,-1.30132 3.83028,-1.30132 1.74327,0 2.79905,0.76115 l -0.39285,4.54232 q -0.12276,0.44196 -0.36829,0.63838 -0.22098,0.17188 -0.61383,0.17188 -0.3683,0 -1.10489,-0.12277 -0.71204,-0.12277 -1.39953,-0.12277 -1.00667,0 -1.79237,0.29464 -0.7857,0.29464 -1.42408,0.85936 -0.61383,0.54017 -1.10489,1.32587 -0.46651,0.7857 -0.88391,1.79237 v 15.51756 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102825" />
|
||||||
|
<path
|
||||||
|
d="m 577.59905,111.38733 v 5.42624 H 566.8939 v 30.07754 h -6.60479 v -30.07754 h -10.70515 v -5.42624 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102827" />
|
||||||
|
<path
|
||||||
|
d="m 586.11884,121.30678 q 2.38166,0 4.39501,0.76115 2.01335,0.76115 3.46199,2.23433 1.44863,1.44863 2.25888,3.58475 0.83481,2.11157 0.83481,4.83696 0,1.37498 -0.29464,1.86604 -0.29464,0.46651 -1.12944,0.46651 h -15.59122 q 0.14732,1.93969 0.68749,3.36377 0.54016,1.39953 1.42408,2.33255 0.88391,0.90846 2.08701,1.37497 1.22765,0.44196 2.70084,0.44196 1.47319,0 2.52897,-0.34375 1.08034,-0.34374 1.86604,-0.76114 0.81025,-0.4174 1.39952,-0.76115 0.61383,-0.34374 1.17855,-0.34374 0.76115,0 1.12944,0.56472 l 1.74327,2.20978 q -1.00667,1.17855 -2.25888,1.9888 -1.25221,0.7857 -2.62718,1.27676 -1.35042,0.46651 -2.7745,0.66294 -1.39953,0.19642 -2.7254,0.19642 -2.62718,0 -4.88607,-0.85936 -2.25888,-0.88391 -3.92849,-2.57807 -1.66961,-1.71872 -2.62718,-4.22314 -0.95757,-2.52897 -0.95757,-5.84363 0,-2.57808 0.8348,-4.83697 0.83481,-2.28343 2.38165,-3.95304 1.5714,-1.69417 3.80573,-2.67629 2.25889,-0.98213 5.08249,-0.98213 z m 0.12277,4.3459 q -2.65173,0 -4.14947,1.49774 -1.49774,1.49774 -1.91515,4.24769 h 11.44175 q 0,-1.17855 -0.34374,-2.20978 -0.31919,-1.05578 -0.98213,-1.84148 -0.66293,-0.7857 -1.69416,-1.22766 -1.00668,-0.46651 -2.3571,-0.46651 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102829" />
|
||||||
|
<path
|
||||||
|
d="m 601.6118,146.89111 v -25.19148 h 3.5602 q 0.93301,0 1.30131,0.34375 0.3683,0.31919 0.49106,1.17855 l 0.34375,2.84815 q 1.2031,-2.25888 2.8236,-3.53564 1.62051,-1.30132 3.83029,-1.30132 1.74327,0 2.79905,0.76115 l -0.39285,4.54232 q -0.12277,0.44196 -0.3683,0.63838 -0.22097,0.17188 -0.61382,0.17188 -0.3683,0 -1.10489,-0.12277 -0.71204,-0.12277 -1.39953,-0.12277 -1.00668,0 -1.79238,0.29464 -0.7857,0.29464 -1.42408,0.85936 -0.61382,0.54017 -1.10489,1.32587 -0.46651,0.7857 -0.88391,1.79237 v 15.51756 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102831" />
|
||||||
|
<path
|
||||||
|
d="m 629.94596,121.30678 q 2.38165,0 4.39501,0.76115 2.01335,0.76115 3.46198,2.23433 1.44864,1.44863 2.25889,3.58475 0.83481,2.11157 0.83481,4.83696 0,1.37498 -0.29464,1.86604 -0.29464,0.46651 -1.12944,0.46651 h -15.59122 q 0.14732,1.93969 0.68748,3.36377 0.54017,1.39953 1.42408,2.33255 0.88392,0.90846 2.08702,1.37497 1.22765,0.44196 2.70084,0.44196 1.47318,0 2.52897,-0.34375 1.08033,-0.34374 1.86603,-0.76114 0.81026,-0.4174 1.39953,-0.76115 0.61383,-0.34374 1.17855,-0.34374 0.76114,0 1.12944,0.56472 l 1.74327,2.20978 q -1.00668,1.17855 -2.25888,1.9888 -1.25221,0.7857 -2.62719,1.27676 -1.35042,0.46651 -2.7745,0.66294 -1.39952,0.19642 -2.72539,0.19642 -2.62718,0 -4.88607,-0.85936 -2.25888,-0.88391 -3.92849,-2.57807 -1.66961,-1.71872 -2.62719,-4.22314 -0.95757,-2.52897 -0.95757,-5.84363 0,-2.57808 0.83481,-4.83697 0.8348,-2.28343 2.38165,-3.95304 1.5714,-1.69417 3.80573,-2.67629 2.25889,-0.98213 5.08249,-0.98213 z m 0.12277,4.3459 q -2.65174,0 -4.14948,1.49774 -1.49773,1.49774 -1.91514,4.24769 h 11.44175 q 0,-1.17855 -0.34375,-2.20978 -0.31919,-1.05578 -0.98212,-1.84148 -0.66293,-0.7857 -1.69416,-1.22766 -1.00668,-0.46651 -2.3571,-0.46651 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102833" />
|
||||||
|
<path
|
||||||
|
d="m 660.80912,126.61025 q -0.24553,0.39285 -0.51561,0.56472 -0.27008,0.14732 -0.68749,0.14732 -0.44195,0 -0.95757,-0.24553 -0.49106,-0.24553 -1.15399,-0.54017 -0.66294,-0.31919 -1.5223,-0.56472 -0.8348,-0.24553 -1.9888,-0.24553 -1.79237,0 -2.8236,0.76115 -1.00668,0.76114 -1.00668,1.9888 0,0.81025 0.51561,1.37497 0.54017,0.54017 1.39953,0.95757 0.88391,0.41741 1.9888,0.76115 1.10489,0.31919 2.23433,0.71204 1.154,0.39285 2.25889,0.90846 1.10489,0.49107 1.96425,1.27677 0.88391,0.76114 1.39952,1.84148 0.54017,1.08033 0.54017,2.60263 0,1.81693 -0.66293,3.36377 -0.63838,1.52229 -1.91514,2.65174 -1.27676,1.10489 -3.16735,1.74327 -1.86604,0.61382 -4.32135,0.61382 -1.30131,0 -2.55352,-0.24553 -1.22766,-0.22098 -2.38165,-0.63838 -1.12944,-0.4174 -2.11157,-0.98212 -0.95757,-0.56472 -1.69416,-1.22766 l 1.39952,-2.30799 q 0.27009,-0.4174 0.63838,-0.63838 0.3683,-0.22098 0.93302,-0.22098 0.56472,0 1.05579,0.31919 0.51561,0.31919 1.17854,0.68749 0.66294,0.3683 1.54685,0.68749 0.90846,0.31919 2.28344,0.31919 1.08033,0 1.84148,-0.24553 0.7857,-0.27009 1.27676,-0.68749 0.51562,-0.4174 0.73659,-0.95757 0.24554,-0.56472 0.24554,-1.154 0,-0.88391 -0.54017,-1.44863 -0.51562,-0.56472 -1.39953,-0.98212 -0.85936,-0.41741 -1.9888,-0.7366 -1.10489,-0.34374 -2.28344,-0.73659 -1.15399,-0.39285 -2.28344,-0.90846 -1.10489,-0.54017 -1.9888,-1.35043 -0.85936,-0.81025 -1.39952,-1.9888 -0.51562,-1.17855 -0.51562,-2.84816 0,-1.54684 0.61383,-2.94637 0.61383,-1.39953 1.79237,-2.43076 1.20311,-1.05578 2.97093,-1.66961 1.79238,-0.63838 4.12492,-0.63838 2.60263,0 4.73875,0.85936 2.13612,0.85936 3.5602,2.25889 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102835" />
|
||||||
|
<path
|
||||||
|
d="m 673.3066,121.69963 v 25.19148 h -6.08917 v -25.19148 z m 0.83481,-7.34137 q 0,0.78569 -0.31919,1.47318 -0.3192,0.68749 -0.85936,1.2031 -0.51562,0.51562 -1.22766,0.83481 -0.71204,0.29464 -1.52229,0.29464 -0.7857,0 -1.49774,-0.29464 -0.68749,-0.31919 -1.2031,-0.83481 -0.51562,-0.51561 -0.83481,-1.2031 -0.29463,-0.68749 -0.29463,-1.47318 0,-0.81026 0.29463,-1.5223 0.31919,-0.71204 0.83481,-1.22765 0.51561,-0.51562 1.2031,-0.81025 0.71204,-0.31919 1.49774,-0.31919 0.81025,0 1.52229,0.31919 0.71204,0.29463 1.22766,0.81025 0.54016,0.51561 0.85936,1.22765 0.31919,0.71204 0.31919,1.5223 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102837" />
|
||||||
|
<path
|
||||||
|
d="m 695.9691,146.89111 q -0.85936,0 -1.32587,-0.24553 -0.46651,-0.27008 -0.73659,-1.05578 l -0.54017,-1.79238 q -0.95757,0.85936 -1.86604,1.5223 -0.90846,0.63838 -1.89058,1.08033 -0.98213,0.44196 -2.11157,0.66294 -1.10489,0.22097 -2.45531,0.22097 -1.59595,0 -2.94637,-0.4174 -1.35042,-0.44195 -2.33255,-1.30131 -0.98212,-0.85936 -1.52229,-2.13612 -0.54017,-1.27676 -0.54017,-2.97093 0,-1.42408 0.73659,-2.79905 0.76115,-1.39953 2.50442,-2.50442 1.74327,-1.12944 4.64054,-1.86603 2.89726,-0.7366 7.21861,-0.83481 v -1.47319 q 0,-2.52896 -1.08034,-3.73207 -1.08033,-1.22765 -3.11824,-1.22765 -1.47319,0 -2.45531,0.34374 -0.95757,0.34375 -1.69417,0.7857 -0.73659,0.4174 -1.35042,0.76115 -0.58927,0.34374 -1.32586,0.34374 -0.63838,0 -1.08034,-0.31919 -0.44196,-0.34374 -0.71204,-0.7857 l -1.08034,-1.93969 q 4.3459,-3.97761 10.45962,-3.97761 2.20978,0 3.95305,0.7366 1.74327,0.71204 2.94638,2.01335 1.2031,1.27676 1.81692,3.06914 0.63839,1.79238 0.63839,3.92849 v 15.91041 z m -9.0601,-3.78117 q 1.86604,0 3.21646,-0.66294 1.37497,-0.68748 2.67629,-2.06246 v -4.24768 q -2.65174,0.12276 -4.44411,0.4665 -1.76783,0.3192 -2.84816,0.83481 -1.08034,0.51562 -1.54685,1.2031 -0.46651,0.68749 -0.46651,1.49774 0,1.59595 0.93302,2.28344 0.95757,0.68749 2.47986,0.68749 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102839" />
|
||||||
|
<path
|
||||||
|
d="m 250.99463,202.35657 q 0.54017,0 0.95757,0.4174 l 2.60263,2.82361 q -2.16067,2.67628 -5.32802,4.10036 -3.1428,1.42408 -7.56236,1.42408 -3.95304,0 -7.12039,-1.35042 -3.1428,-1.35042 -5.37713,-3.75662 -2.23434,-2.40621 -3.43744,-5.74543 -1.17855,-3.33922 -1.17855,-7.29227 0,-4.00215 1.27676,-7.31682 1.27677,-3.33922 3.58476,-5.74543 2.33254,-2.4062 5.549,-3.73207 3.21645,-1.35042 7.1204,-1.35042 3.87939,0 6.87487,1.27676 3.02003,1.27676 5.13159,3.33922 l -2.20978,3.06914 q -0.19642,0.29464 -0.51561,0.51562 -0.29464,0.22097 -0.83481,0.22097 -0.36829,0 -0.76114,-0.19642 -0.39285,-0.22098 -0.85936,-0.51562 -0.46651,-0.31919 -1.08034,-0.68748 -0.61382,-0.3683 -1.42408,-0.66294 -0.81025,-0.31919 -1.89059,-0.51561 -1.05578,-0.22098 -2.45531,-0.22098 -2.38165,0 -4.37045,0.85936 -1.96425,0.8348 -3.38833,2.45531 -1.42408,1.59595 -2.20977,3.92849 -0.7857,2.308 -0.7857,5.27892 0,2.99548 0.8348,5.32802 0.85936,2.33255 2.30799,3.9285 1.44864,1.59595 3.41288,2.45531 1.96425,0.83481 4.22314,0.83481 1.35042,0 2.43075,-0.14732 1.10489,-0.14732 2.01336,-0.46651 0.93302,-0.31919 1.74327,-0.81025 0.8348,-0.51562 1.64506,-1.25221 0.24553,-0.22098 0.51561,-0.34375 0.27009,-0.14731 0.56472,-0.14731 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102841" />
|
||||||
|
<path
|
||||||
|
d="m 258.13954,210.72917 v -36.4859 h 6.06461 v 14.01982 q 1.47319,-1.39953 3.24101,-2.25889 1.76782,-0.85936 4.14948,-0.85936 2.06246,0 3.65841,0.71204 1.59595,0.68749 2.65173,1.96425 1.08034,1.25221 1.62051,3.02003 0.56472,1.74327 0.56472,3.85484 v 16.03317 h -6.06462 V 194.696 q 0,-2.30799 -1.05578,-3.5602 -1.05578,-1.27676 -3.21646,-1.27676 -1.5714,0 -2.94637,0.71204 -1.37497,0.71204 -2.60263,1.93969 v 18.2184 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102843" />
|
||||||
|
<path
|
||||||
|
d="m 296.5651,185.14484 q 2.38165,0 4.395,0.76115 2.01335,0.76114 3.46199,2.23433 1.44863,1.44863 2.25888,3.58475 0.83481,2.11157 0.83481,4.83696 0,1.37498 -0.29464,1.86604 -0.29464,0.46651 -1.12944,0.46651 h -15.59122 q 0.14732,1.93969 0.68749,3.36377 0.54016,1.39953 1.42408,2.33255 0.88391,0.90846 2.08701,1.37497 1.22766,0.44196 2.70084,0.44196 1.47319,0 2.52897,-0.34375 1.08034,-0.34374 1.86604,-0.76114 0.81025,-0.4174 1.39952,-0.76115 0.61383,-0.34374 1.17855,-0.34374 0.76115,0 1.12944,0.56472 l 1.74327,2.20978 q -1.00667,1.17855 -2.25888,1.9888 -1.25221,0.7857 -2.62718,1.27676 -1.35042,0.46651 -2.7745,0.66293 -1.39953,0.19643 -2.7254,0.19643 -2.62718,0 -4.88606,-0.85936 -2.25889,-0.88391 -3.9285,-2.57807 -1.66961,-1.71872 -2.62718,-4.22314 -0.95757,-2.52897 -0.95757,-5.84364 0,-2.57807 0.8348,-4.83696 0.83481,-2.28343 2.38165,-3.95305 1.5714,-1.69416 3.80573,-2.67628 2.25889,-0.98213 5.0825,-0.98213 z m 0.12276,4.3459 q -2.65173,0 -4.14947,1.49774 -1.49774,1.49774 -1.91514,4.24769 h 11.44174 q 0,-1.17855 -0.34374,-2.20978 -0.31919,-1.05579 -0.98213,-1.84148 -0.66293,-0.7857 -1.69416,-1.22766 -1.00668,-0.46651 -2.3571,-0.46651 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102845" />
|
||||||
|
<path
|
||||||
|
d="m 312.05803,210.72917 v -25.19148 h 3.70752 q 1.17855,0 1.54685,1.10489 l 0.39284,1.86604 q 0.66294,-0.7366 1.37498,-1.35042 0.73659,-0.61383 1.54684,-1.05579 0.83481,-0.44195 1.76783,-0.68748 0.95757,-0.27009 2.08701,-0.27009 2.38165,0 3.90394,1.30132 1.54685,1.27676 2.308,3.41288 0.58927,-1.25221 1.47318,-2.13612 0.88391,-0.90847 1.9397,-1.47319 1.05578,-0.56472 2.23433,-0.8348 1.2031,-0.27009 2.4062,-0.27009 2.08702,0 3.70752,0.63838 1.6205,0.63838 2.72539,1.86604 1.10489,1.22765 1.66962,2.99548 0.58927,1.76782 0.58927,4.05126 v 16.03317 h -6.06462 V 194.696 q 0,-2.40621 -1.05578,-3.60931 -1.05578,-1.22765 -3.09369,-1.22765 -0.93302,0 -1.74327,0.31919 -0.7857,0.31919 -1.39953,0.93302 -0.58927,0.58927 -0.93301,1.49773 -0.34375,0.90847 -0.34375,2.08702 v 16.03317 h -6.08917 V 194.696 q 0,-2.52897 -1.03123,-3.68297 -1.00667,-1.15399 -2.97092,-1.15399 -1.32587,0 -2.47987,0.66293 -1.12944,0.63838 -2.11156,1.76782 v 18.43938 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102847" />
|
||||||
|
<path
|
||||||
|
d="m 353.18445,210.72917 v -25.19148 h 3.70752 q 1.17855,0 1.54684,1.10489 l 0.41741,1.9888 q 0.76114,-0.7857 1.59595,-1.42408 0.85936,-0.63838 1.79237,-1.10489 0.95758,-0.46651 2.03791,-0.71204 1.08034,-0.24553 2.3571,-0.24553 2.06246,0 3.65841,0.71204 1.59595,0.68749 2.65174,1.96425 1.08033,1.25221 1.6205,3.02003 0.56472,1.74327 0.56472,3.85484 v 16.03317 h -6.06461 V 194.696 q 0,-2.30799 -1.05579,-3.5602 -1.05578,-1.27676 -3.21645,-1.27676 -1.5714,0 -2.94637,0.71204 -1.37498,0.71204 -2.60263,1.93969 v 18.2184 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102849" />
|
||||||
|
<path
|
||||||
|
d="m 387.1659,185.53769 v 25.19148 h -6.08917 v -25.19148 z m 0.8348,-7.34138 q 0,0.7857 -0.31919,1.47319 -0.31919,0.68749 -0.85935,1.2031 -0.51562,0.51562 -1.22766,0.83481 -0.71204,0.29464 -1.52229,0.29464 -0.7857,0 -1.49774,-0.29464 -0.68749,-0.31919 -1.2031,-0.83481 -0.51562,-0.51561 -0.83481,-1.2031 -0.29464,-0.68749 -0.29464,-1.47319 0,-0.81025 0.29464,-1.52229 0.31919,-0.71204 0.83481,-1.22765 0.51561,-0.51562 1.2031,-0.81025 0.71204,-0.31919 1.49774,-0.31919 0.81025,0 1.52229,0.31919 0.71204,0.29463 1.22766,0.81025 0.54016,0.51561 0.85935,1.22765 0.31919,0.71204 0.31919,1.52229 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102851" />
|
||||||
|
<path
|
||||||
|
d="m 401.75043,211.12202 q -3.29012,0 -5.05794,-1.84148 -1.74327,-1.86604 -1.74327,-5.1316 v -14.06892 h -2.57808 q -0.49106,0 -0.8348,-0.31919 -0.34375,-0.3192 -0.34375,-0.95758 v -2.4062 l 4.05127,-0.66293 1.27676,-6.87487 q 0.12276,-0.49106 0.46651,-0.76115 0.34374,-0.27008 0.88391,-0.27008 h 3.14279 v 7.93065 h 6.72755 v 4.32135 h -6.72755 v 13.65152 q 0,1.17855 0.56473,1.84148 0.58927,0.66294 1.59595,0.66294 0.56472,0 0.93301,-0.12277 0.39285,-0.14732 0.66294,-0.29464 0.29464,-0.14732 0.51561,-0.27008 0.22098,-0.14732 0.44196,-0.14732 0.27008,0 0.44195,0.14732 0.17188,0.12276 0.3683,0.39285 l 1.81693,2.94637 q -1.32587,1.10489 -3.04458,1.66961 -1.71872,0.56472 -3.5602,0.56472 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102853" />
|
||||||
|
<path
|
||||||
|
d="m 429.7164,188.04211 q 0,0.63838 -0.22097,1.25221 -0.22098,0.61382 -0.58928,1.00667 l -11.98191,15.76309 h 12.42387 v 4.66509 h -19.44606 v -2.52897 q 0,-0.4174 0.19643,-0.98212 0.19642,-0.58927 0.58927,-1.10489 l 12.08013,-15.93496 h -12.15379 v -4.64054 h 19.10231 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102855" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
`
|
||||||
211
sites/chemnitz/logo_chemnitz.svg
Normal file
211
sites/chemnitz/logo_chemnitz.svg
Normal file
|
|
@ -0,0 +1,211 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
viewBox="0 0 711.13577 250.2845"
|
||||||
|
width="811.79883"
|
||||||
|
height="285.42059"
|
||||||
|
version="1.1"
|
||||||
|
id="svg6"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<defs
|
||||||
|
id="defs10" />
|
||||||
|
<g id="logo">
|
||||||
|
<path
|
||||||
|
d="M 204.2641,6.2541719 89.150104,0.56886185 V 33.435375 l 43.208366,12.453538 -45.969796,4.981411 -4.0068,35.627944 35.952826,5.035567 0.32488,6.172613 -42.287886,-4.060929 0.43317,-52.792166 -25.93585,7.796994 1.57023,42.61276 -42.0713,-12.399394 -10.01698,4.43996 3.79021,29.780207 38.28109,0.64974 14.34864,14.1862 3.35705,91.28984 10.77501,30.42995 26.15244,-6.55165 1.24535,-13.96962 15.431546,-12.67012 -7.20139,-19.76322 -24.365616,-2.81558 3.30289,-40.28451 16.731066,-23.55341 93.56396,1.35366 V 99.168388 L 168.0947,83.195385 199.01196,83.628553 202.15242,54.985414 177.0829,36.684127 205.02215,33.43538 Z"
|
||||||
|
fill="none"
|
||||||
|
stroke="#111111"
|
||||||
|
stroke-width="1.08292"
|
||||||
|
stroke-linejoin="miter"
|
||||||
|
stroke-linecap="round"
|
||||||
|
id="path4"
|
||||||
|
style="fill:#000000;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:0,0;stroke-dashoffset:0" />
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<g
|
||||||
|
aria-label="Katholische Pfarrei
|
||||||
|
Heilige Mutter Teresia
|
||||||
|
Chemnitz"
|
||||||
|
id="text"
|
||||||
|
style="font-weight:bold;font-size:49.1062px;line-height:1.3;font-family:Lato;-inkscape-font-specification:'Lato Bold';letter-spacing:0px;word-spacing:0px;fill:#134bd5;stroke:#000000;stroke-width:0">
|
||||||
|
<path
|
||||||
|
d="m 233.21819,62.42845 h 1.54684 q 0.93302,0 1.54685,-0.245531 0.61383,-0.270084 1.05578,-0.834805 l 9.79669,-12.399316 q 0.61383,-0.785699 1.27676,-1.080336 0.68749,-0.319191 1.71872,-0.319191 h 5.69632 l -11.95736,14.756414 q -1.05579,1.35042 -2.18523,1.915142 0.81025,0.294637 1.44863,0.834805 0.66294,0.515615 1.25221,1.374974 l 12.32566,16.622449 h -5.81909 q -1.17855,0 -1.76782,-0.31919 -0.56472,-0.343744 -0.95757,-0.982125 L 238.15336,68.640385 q -0.46651,-0.662934 -1.08034,-0.933018 -0.61382,-0.270084 -1.76782,-0.270084 h -2.08701 V 83.053055 H 226.6134 V 47.549271 h 6.60479 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102767" />
|
||||||
|
<path
|
||||||
|
d="m 275.79323,83.053055 q -0.85936,0 -1.32587,-0.245531 -0.46651,-0.270084 -0.7366,-1.055784 l -0.54016,-1.792376 q -0.95757,0.859359 -1.86604,1.522292 -0.90846,0.638381 -1.89059,1.080337 -0.98212,0.441956 -2.11156,0.662934 -1.10489,0.220977 -2.45531,0.220977 -1.59596,0 -2.94638,-0.417402 -1.35042,-0.441956 -2.33254,-1.301315 -0.98213,-0.859358 -1.52229,-2.136119 -0.54017,-1.276762 -0.54017,-2.970926 0,-1.424079 0.73659,-2.799053 0.76115,-1.399527 2.50442,-2.504416 1.74327,-1.129443 4.64053,-1.866036 2.89727,-0.736593 7.21862,-0.834805 v -1.473186 q 0,-2.52897 -1.08034,-3.732072 -1.08034,-1.227655 -3.11824,-1.227655 -1.47319,0 -2.45531,0.343744 -0.95758,0.343743 -1.69417,0.785699 -0.73659,0.417403 -1.35042,0.761146 -0.58927,0.343743 -1.32587,0.343743 -0.63838,0 -1.08033,-0.31919 -0.44196,-0.343743 -0.71204,-0.785699 l -1.08034,-1.939695 q 4.3459,-3.977602 10.45962,-3.977602 2.20978,0 3.95305,0.736593 1.74327,0.71204 2.94637,2.013354 1.2031,1.276761 1.81693,3.069138 0.63838,1.792376 0.63838,3.928496 v 15.910409 z m -9.0601,-3.781178 q 1.86604,0 3.21646,-0.662933 1.37497,-0.687487 2.67629,-2.062461 v -4.247686 q -2.65174,0.122765 -4.44412,0.466509 -1.76782,0.31919 -2.84816,0.834805 -1.08033,0.515615 -1.54684,1.203102 -0.46651,0.687487 -0.46651,1.497739 0,1.595952 0.93302,2.283439 0.95757,0.687486 2.47986,0.687486 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102769" />
|
||||||
|
<path
|
||||||
|
d="m 292.2928,83.445904 q -3.29012,0 -5.05794,-1.841482 -1.74327,-1.866036 -1.74327,-5.131598 V 62.403897 h -2.57807 q -0.49107,0 -0.83481,-0.31919 -0.34374,-0.31919 -0.34374,-0.957571 v -2.406204 l 4.05126,-0.662934 1.27676,-6.874868 q 0.12277,-0.491062 0.46651,-0.761146 0.34374,-0.270084 0.88391,-0.270084 h 3.1428 v 7.930652 h 6.72755 v 4.321345 h -6.72755 v 13.651524 q 0,1.178549 0.56472,1.841483 0.58927,0.662933 1.59595,0.662933 0.56472,0 0.93302,-0.122765 0.39285,-0.147319 0.66293,-0.294637 0.29464,-0.147319 0.51562,-0.270084 0.22097,-0.147319 0.44195,-0.147319 0.27009,0 0.44196,0.147319 0.17187,0.122765 0.3683,0.392849 l 1.81692,2.946372 q -1.32586,1.10489 -3.04458,1.669611 -1.71872,0.564721 -3.5602,0.564721 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102771" />
|
||||||
|
<path
|
||||||
|
d="M 302.16313,83.053055 V 46.567147 h 6.06462 v 14.019821 q 1.47319,-1.399527 3.24101,-2.258885 1.76782,-0.859359 4.14947,-0.859359 2.06246,0 3.65842,0.71204 1.59595,0.687487 2.65173,1.964248 1.08034,1.252208 1.6205,3.020031 0.56473,1.74327 0.56473,3.854837 v 16.033175 h -6.06462 V 67.01988 q 0,-2.307991 -1.05578,-3.560199 -1.05579,-1.276762 -3.21646,-1.276762 -1.5714,0 -2.94637,0.71204 -1.37497,0.71204 -2.60263,1.939695 v 18.218401 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102773" />
|
||||||
|
<path
|
||||||
|
d="m 341.0061,57.468724 q 2.79905,0 5.08249,0.908465 2.30799,0.908464 3.92849,2.578075 1.64506,1.669611 2.52897,4.075815 0.88391,2.406204 0.88391,5.377129 0,2.995478 -0.88391,5.401682 -0.88391,2.406204 -2.52897,4.100368 -1.6205,1.694164 -3.92849,2.602629 -2.28344,0.908464 -5.08249,0.908464 -2.82361,0 -5.1316,-0.908464 -2.30799,-0.908465 -3.95305,-2.602629 -1.62051,-1.694164 -2.52897,-4.100368 -0.88391,-2.406204 -0.88391,-5.401682 0,-2.970925 0.88391,-5.377129 0.90846,-2.406204 2.52897,-4.075815 1.64506,-1.669611 3.95305,-2.578075 2.30799,-0.908465 5.1316,-0.908465 z m 0,21.287538 q 3.14279,0 4.64053,-2.111566 1.52229,-2.111567 1.52229,-6.187382 0,-4.075814 -1.52229,-6.211934 -1.49774,-2.13612 -4.64053,-2.13612 -3.19191,0 -4.73875,2.160673 -1.52229,2.13612 -1.52229,6.187381 0,4.051262 1.52229,6.187382 1.54684,2.111566 4.73875,2.111566 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102775" />
|
||||||
|
<path
|
||||||
|
d="m 364.20874,46.567147 v 36.485908 h -6.06462 V 46.567147 Z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102777" />
|
||||||
|
<path
|
||||||
|
d="m 376.55889,57.861574 v 25.191481 h -6.08917 V 57.861574 Z m 0.8348,-7.341377 q 0,0.785699 -0.31919,1.473186 -0.31919,0.687486 -0.85935,1.203101 -0.51562,0.515616 -1.22766,0.834806 -0.71204,0.294637 -1.52229,0.294637 -0.7857,0 -1.49774,-0.294637 -0.68749,-0.31919 -1.2031,-0.834806 -0.51562,-0.515615 -0.83481,-1.203101 -0.29464,-0.687487 -0.29464,-1.473186 0,-0.810253 0.29464,-1.522293 0.31919,-0.71204 0.83481,-1.227655 0.51561,-0.515615 1.2031,-0.810252 0.71204,-0.31919 1.49774,-0.31919 0.81025,0 1.52229,0.31919 0.71204,0.294637 1.22766,0.810252 0.54016,0.515615 0.85935,1.227655 0.31919,0.71204 0.31919,1.522293 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102779" />
|
||||||
|
<path
|
||||||
|
d="m 398.1165,62.772194 q -0.24553,0.392849 -0.51562,0.564721 -0.27008,0.147319 -0.68748,0.147319 -0.44196,0 -0.95758,-0.245531 -0.49106,-0.245531 -1.15399,-0.540169 -0.66293,-0.31919 -1.52229,-0.564721 -0.83481,-0.245531 -1.9888,-0.245531 -1.79238,0 -2.82361,0.761146 -1.00668,0.761146 -1.00668,1.988801 0,0.810253 0.51562,1.374974 0.54017,0.540168 1.39952,0.957571 0.88392,0.417403 1.9888,0.761146 1.10489,0.31919 2.23434,0.71204 1.15399,0.39285 2.25888,0.908465 1.10489,0.491062 1.96425,1.276761 0.88391,0.761146 1.39953,1.841482 0.54017,1.080337 0.54017,2.602629 0,1.81693 -0.66294,3.363775 -0.63838,1.522292 -1.91514,2.651735 -1.27676,1.104889 -3.16735,1.74327 -1.86604,0.613827 -4.32135,0.613827 -1.30131,0 -2.55352,-0.245531 -1.22765,-0.220977 -2.38165,-0.63838 -1.12944,-0.417403 -2.11157,-0.982124 -0.95757,-0.564722 -1.69416,-1.227655 l 1.39953,-2.307992 q 0.27008,-0.417402 0.63838,-0.63838 0.36829,-0.220978 0.93302,-0.220978 0.56472,0 1.05578,0.31919 0.51561,0.31919 1.17855,0.687487 0.66293,0.368296 1.54684,0.687487 0.90847,0.31919 2.28344,0.31919 1.08034,0 1.84148,-0.245531 0.7857,-0.270084 1.27676,-0.687487 0.51562,-0.417403 0.7366,-0.957571 0.24553,-0.564721 0.24553,-1.153995 0,-0.883912 -0.54017,-1.448633 -0.51561,-0.564722 -1.39953,-0.982124 -0.85935,-0.417403 -1.9888,-0.736593 -1.10489,-0.343744 -2.28344,-0.736593 -1.15399,-0.39285 -2.28343,-0.908465 -1.10489,-0.540168 -1.98881,-1.350421 -0.85935,-0.810252 -1.39952,-1.988801 -0.51562,-1.178549 -0.51562,-2.84816 0,-1.546845 0.61383,-2.946372 0.61383,-1.399526 1.79238,-2.430757 1.2031,-1.055783 2.97092,-1.66961 1.79238,-0.638381 4.12492,-0.638381 2.60263,0 4.73875,0.859359 2.13612,0.859358 3.5602,2.258885 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102781" />
|
||||||
|
<path
|
||||||
|
d="m 422.37491,63.189596 q -0.27009,0.343744 -0.54017,0.540169 -0.24553,0.196424 -0.73659,0.196424 -0.46651,0 -0.90847,-0.270084 -0.44195,-0.294637 -1.05578,-0.63838 -0.61383,-0.368297 -1.47319,-0.638381 -0.8348,-0.294637 -2.08701,-0.294637 -1.59595,0 -2.79905,0.589274 -1.20311,0.564722 -2.01336,1.645058 -0.7857,1.080336 -1.17855,2.627182 -0.39285,1.522292 -0.39285,3.461987 0,2.013354 0.41741,3.584753 0.44195,1.571398 1.2522,2.651735 0.81026,1.055783 1.96425,1.620504 1.154,0.540168 2.60263,0.540168 1.44863,0 2.33255,-0.343743 0.90846,-0.368297 1.52229,-0.785699 0.61383,-0.441956 1.05578,-0.785699 0.46651,-0.368297 1.03123,-0.368297 0.73659,0 1.10489,0.564721 l 1.74327,2.209779 q -1.00668,1.178549 -2.18523,1.988802 -1.17854,0.785699 -2.45531,1.276761 -1.2522,0.466509 -2.60262,0.662934 -1.32587,0.196424 -2.65174,0.196424 -2.33254,0 -4.395,-0.859358 -2.06246,-0.883912 -3.60931,-2.553523 -1.54684,-1.669611 -2.45531,-4.075814 -0.88391,-2.430757 -0.88391,-5.524448 0,-2.7745 0.7857,-5.131598 0.81025,-2.381651 2.3571,-4.100368 1.54684,-1.74327 3.83028,-2.725394 2.28344,-0.982124 5.25436,-0.982124 2.82361,0 4.93518,0.908465 2.13612,0.908464 3.83028,2.602628 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102783" />
|
||||||
|
<path
|
||||||
|
d="M 427.99749,83.053055 V 46.567147 h 6.06462 v 14.019821 q 1.47318,-1.399527 3.24101,-2.258885 1.76782,-0.859359 4.14947,-0.859359 2.06246,0 3.65841,0.71204 1.59596,0.687487 2.65174,1.964248 1.08033,1.252208 1.6205,3.020031 0.56472,1.74327 0.56472,3.854837 v 16.033175 h -6.06461 V 67.01988 q 0,-2.307991 -1.05578,-3.560199 -1.05579,-1.276762 -3.21646,-1.276762 -1.5714,0 -2.94637,0.71204 -1.37498,0.71204 -2.60263,1.939695 v 18.218401 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102785" />
|
||||||
|
<path
|
||||||
|
d="m 466.42306,57.468724 q 2.38165,0 4.395,0.761146 2.01336,0.761146 3.46199,2.234332 1.44863,1.448633 2.25889,3.584753 0.8348,2.111567 0.8348,4.836961 0,1.374973 -0.29464,1.866035 -0.29463,0.466509 -1.12944,0.466509 h -15.59122 q 0.14732,1.939695 0.68749,3.363775 0.54017,1.399527 1.42408,2.332545 0.88391,0.908464 2.08701,1.374973 1.22766,0.441956 2.70084,0.441956 1.47319,0 2.52897,-0.343743 1.08034,-0.343744 1.86604,-0.761146 0.81025,-0.417403 1.39953,-0.761147 0.61382,-0.343743 1.17855,-0.343743 0.76114,0 1.12944,0.564721 l 1.74327,2.209779 q -1.00668,1.178549 -2.25889,1.988802 -1.25221,0.785699 -2.62718,1.276761 -1.35042,0.466509 -2.7745,0.662934 -1.39953,0.196424 -2.72539,0.196424 -2.62719,0 -4.88607,-0.859358 -2.25889,-0.883912 -3.9285,-2.578076 -1.66961,-1.718717 -2.62718,-4.223133 -0.95757,-2.528969 -0.95757,-5.843638 0,-2.578076 0.83481,-4.836961 0.8348,-2.283438 2.38165,-3.953049 1.5714,-1.694164 3.80573,-2.676288 2.25888,-0.982124 5.08249,-0.982124 z m 0.12276,4.345899 q -2.65173,0 -4.14947,1.497739 -1.49774,1.497739 -1.91514,4.247686 h 11.44174 q 0,-1.178548 -0.34374,-2.209779 -0.31919,-1.055783 -0.98212,-1.841482 -0.66294,-0.785699 -1.69417,-1.227655 -1.00667,-0.466509 -2.3571,-0.466509 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102787" />
|
||||||
|
<path
|
||||||
|
d="m 501.41106,70.555527 v 12.497528 h -6.60479 V 47.549271 h 11.53996 q 3.5602,0 6.16283,0.834806 2.60263,0.834805 4.29679,2.332544 1.69417,1.497739 2.50442,3.584753 0.8348,2.087014 0.8348,4.566877 0,2.578075 -0.85935,4.738748 -0.85936,2.13612 -2.57808,3.682965 -1.71872,1.546846 -4.32135,2.406204 -2.57807,0.859359 -6.04006,0.859359 z m 0,-5.156152 h 4.93517 q 1.81693,0 3.16735,-0.441955 1.35042,-0.466509 2.23433,-1.301315 0.90847,-0.859358 1.35042,-2.06246 0.44196,-1.227655 0.44196,-2.725394 0,-1.42408 -0.44196,-2.578076 -0.44195,-1.153996 -1.32586,-1.964248 -0.88391,-0.810252 -2.23433,-1.227655 -1.35043,-0.441956 -3.19191,-0.441956 h -4.93517 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102789" />
|
||||||
|
<path
|
||||||
|
d="M 526.01323,83.053055 V 62.42845 L 523.828,62.084707 q -0.71204,-0.147319 -1.154,-0.491062 -0.4174,-0.368297 -0.4174,-1.03123 v -2.479863 h 3.75663 v -1.866036 q 0,-2.160673 0.63838,-3.87939 0.66293,-1.718717 1.86603,-2.921819 1.22766,-1.203102 2.97093,-1.841483 1.74327,-0.63838 3.92849,-0.63838 1.74327,0 3.24101,0.466509 l -0.12276,3.044584 q -0.0246,0.343744 -0.19643,0.564722 -0.17187,0.196424 -0.46651,0.31919 -0.27008,0.09821 -0.63838,0.147318 -0.36829,0.02455 -0.7857,0.02455 -1.08033,0 -1.93969,0.245531 -0.83481,0.220977 -1.42408,0.810252 -0.58928,0.564721 -0.90847,1.522292 -0.29463,0.933018 -0.29463,2.332545 v 1.669611 h 6.55567 v 4.321345 h -6.35925 v 20.649158 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102791" />
|
||||||
|
<path
|
||||||
|
d="m 558.32509,83.053055 q -0.85936,0 -1.32587,-0.245531 -0.46651,-0.270084 -0.73659,-1.055784 l -0.54017,-1.792376 q -0.95757,0.859359 -1.86604,1.522292 -0.90846,0.638381 -1.89059,1.080337 -0.98212,0.441956 -2.11156,0.662934 -1.10489,0.220977 -2.45531,0.220977 -1.59596,0 -2.94638,-0.417402 -1.35042,-0.441956 -2.33254,-1.301315 -0.98212,-0.859358 -1.52229,-2.136119 -0.54017,-1.276762 -0.54017,-2.970926 0,-1.424079 0.73659,-2.799053 0.76115,-1.399527 2.50442,-2.504416 1.74327,-1.129443 4.64053,-1.866036 2.89727,-0.736593 7.21862,-0.834805 v -1.473186 q 0,-2.52897 -1.08034,-3.732072 -1.08034,-1.227655 -3.11824,-1.227655 -1.47319,0 -2.45531,0.343744 -0.95758,0.343743 -1.69417,0.785699 -0.73659,0.417403 -1.35042,0.761146 -0.58927,0.343743 -1.32587,0.343743 -0.63838,0 -1.08033,-0.31919 -0.44196,-0.343743 -0.71204,-0.785699 l -1.08034,-1.939695 q 4.3459,-3.977602 10.45962,-3.977602 2.20978,0 3.95305,0.736593 1.74327,0.71204 2.94637,2.013354 1.2031,1.276761 1.81693,3.069138 0.63838,1.792376 0.63838,3.928496 v 15.910409 z m -9.0601,-3.781178 q 1.86604,0 3.21646,-0.662933 1.37497,-0.687487 2.67629,-2.062461 v -4.247686 q -2.65174,0.122765 -4.44412,0.466509 -1.76782,0.31919 -2.84816,0.834805 -1.08033,0.515615 -1.54684,1.203102 -0.46651,0.687487 -0.46651,1.497739 0,1.595952 0.93302,2.283439 0.95757,0.687486 2.47986,0.687486 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102793" />
|
||||||
|
<path
|
||||||
|
d="M 566.77134,83.053055 V 57.861574 h 3.5602 q 0.93302,0 1.30132,0.343743 0.36829,0.31919 0.49106,1.178549 l 0.34374,2.84816 q 1.2031,-2.258886 2.82361,-3.535647 1.6205,-1.301314 3.83028,-1.301314 1.74327,0 2.79905,0.761146 l -0.39284,4.542323 q -0.12277,0.441956 -0.3683,0.638381 -0.22098,0.171872 -0.61383,0.171872 -0.3683,0 -1.10489,-0.122766 -0.71204,-0.122765 -1.39952,-0.122765 -1.00668,0 -1.79238,0.294637 -0.7857,0.294637 -1.42408,0.859358 -0.61383,0.540169 -1.10489,1.325868 -0.46651,0.785699 -0.88391,1.792376 v 15.51756 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102795" />
|
||||||
|
<path
|
||||||
|
d="M 585.08793,83.053055 V 57.861574 h 3.5602 q 0.93302,0 1.30132,0.343743 0.36829,0.31919 0.49106,1.178549 l 0.34374,2.84816 q 1.2031,-2.258886 2.82361,-3.535647 1.6205,-1.301314 3.83028,-1.301314 1.74327,0 2.79905,0.761146 l -0.39285,4.542323 q -0.12276,0.441956 -0.36829,0.638381 -0.22098,0.171872 -0.61383,0.171872 -0.3683,0 -1.10489,-0.122766 -0.71204,-0.122765 -1.39953,-0.122765 -1.00667,0 -1.79237,0.294637 -0.7857,0.294637 -1.42408,0.859358 -0.61383,0.540169 -1.10489,1.325868 -0.46651,0.785699 -0.88391,1.792376 v 15.51756 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102797" />
|
||||||
|
<path
|
||||||
|
d="m 613.4221,57.468724 q 2.38165,0 4.395,0.761146 2.01336,0.761146 3.46199,2.234332 1.44863,1.448633 2.25889,3.584753 0.8348,2.111567 0.8348,4.836961 0,1.374973 -0.29464,1.866035 -0.29463,0.466509 -1.12944,0.466509 h -15.59122 q 0.14732,1.939695 0.68749,3.363775 0.54017,1.399527 1.42408,2.332545 0.88391,0.908464 2.08701,1.374973 1.22766,0.441956 2.70084,0.441956 1.47319,0 2.52897,-0.343743 1.08034,-0.343744 1.86604,-0.761146 0.81025,-0.417403 1.39953,-0.761147 0.61382,-0.343743 1.17854,-0.343743 0.76115,0 1.12945,0.564721 l 1.74327,2.209779 q -1.00668,1.178549 -2.25889,1.988802 -1.25221,0.785699 -2.62718,1.276761 -1.35042,0.466509 -2.7745,0.662934 -1.39953,0.196424 -2.72539,0.196424 -2.62719,0 -4.88607,-0.859358 -2.25889,-0.883912 -3.9285,-2.578076 -1.66961,-1.718717 -2.62718,-4.223133 -0.95757,-2.528969 -0.95757,-5.843638 0,-2.578076 0.8348,-4.836961 0.83481,-2.283438 2.38166,-3.953049 1.57139,-1.694164 3.80573,-2.676288 2.25888,-0.982124 5.08249,-0.982124 z m 0.12276,4.345899 q -2.65173,0 -4.14947,1.497739 -1.49774,1.497739 -1.91514,4.247686 h 11.44174 q 0,-1.178548 -0.34374,-2.209779 -0.31919,-1.055783 -0.98212,-1.841482 -0.66294,-0.785699 -1.69417,-1.227655 -1.00668,-0.466509 -2.3571,-0.466509 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102799" />
|
||||||
|
<path
|
||||||
|
d="m 635.20061,57.861574 v 25.191481 h -6.08917 V 57.861574 Z m 0.83481,-7.341377 q 0,0.785699 -0.31919,1.473186 -0.31919,0.687486 -0.85936,1.203101 -0.51562,0.515616 -1.22766,0.834806 -0.71204,0.294637 -1.52229,0.294637 -0.7857,0 -1.49774,-0.294637 -0.68748,-0.31919 -1.2031,-0.834806 -0.51561,-0.515615 -0.8348,-1.203101 -0.29464,-0.687487 -0.29464,-1.473186 0,-0.810253 0.29464,-1.522293 0.31919,-0.71204 0.8348,-1.227655 0.51562,-0.515615 1.2031,-0.810252 0.71204,-0.31919 1.49774,-0.31919 0.81025,0 1.52229,0.31919 0.71204,0.294637 1.22766,0.810252 0.54017,0.515615 0.85936,1.227655 0.31919,0.71204 0.31919,1.522293 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102801" />
|
||||||
|
<path
|
||||||
|
d="m 256.54363,146.89111 h -6.62933 v -15.51756 h -16.67156 v 15.51756 h -6.62934 v -35.50378 h 6.62934 v 15.27203 h 16.67156 v -15.27203 h 6.62933 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102803" />
|
||||||
|
<path
|
||||||
|
d="m 273.46058,121.30678 q 2.38166,0 4.39501,0.76115 2.01335,0.76115 3.46199,2.23433 1.44863,1.44863 2.25888,3.58475 0.83481,2.11157 0.83481,4.83696 0,1.37498 -0.29464,1.86604 -0.29464,0.46651 -1.12944,0.46651 h -15.59122 q 0.14732,1.93969 0.68749,3.36377 0.54016,1.39953 1.42408,2.33255 0.88391,0.90846 2.08701,1.37497 1.22765,0.44196 2.70084,0.44196 1.47319,0 2.52897,-0.34375 1.08034,-0.34374 1.86603,-0.76114 0.81026,-0.4174 1.39953,-0.76115 0.61383,-0.34374 1.17855,-0.34374 0.76115,0 1.12944,0.56472 l 1.74327,2.20978 q -1.00667,1.17855 -2.25888,1.9888 -1.25221,0.7857 -2.62718,1.27676 -1.35042,0.46651 -2.7745,0.66294 -1.39953,0.19642 -2.7254,0.19642 -2.62718,0 -4.88607,-0.85936 -2.25888,-0.88391 -3.92849,-2.57807 -1.66961,-1.71872 -2.62718,-4.22314 -0.95757,-2.52897 -0.95757,-5.84363 0,-2.57808 0.8348,-4.83697 0.83481,-2.28343 2.38165,-3.95304 1.5714,-1.69417 3.80573,-2.67629 2.25889,-0.98213 5.08249,-0.98213 z m 0.12277,4.3459 q -2.65173,0 -4.14947,1.49774 -1.49774,1.49774 -1.91515,4.24769 h 11.44175 q 0,-1.17855 -0.34374,-2.20978 -0.31919,-1.05578 -0.98213,-1.84148 -0.66293,-0.7857 -1.69416,-1.22766 -1.00668,-0.46651 -2.3571,-0.46651 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102805" />
|
||||||
|
<path
|
||||||
|
d="m 295.23911,121.69963 v 25.19148 h -6.08917 v -25.19148 z m 0.83481,-7.34137 q 0,0.78569 -0.31919,1.47318 -0.31919,0.68749 -0.85936,1.2031 -0.51562,0.51562 -1.22766,0.83481 -0.71204,0.29464 -1.52229,0.29464 -0.7857,0 -1.49774,-0.29464 -0.68749,-0.31919 -1.2031,-0.83481 -0.51562,-0.51561 -0.83481,-1.2031 -0.29463,-0.68749 -0.29463,-1.47318 0,-0.81026 0.29463,-1.5223 0.31919,-0.71204 0.83481,-1.22765 0.51561,-0.51562 1.2031,-0.81025 0.71204,-0.31919 1.49774,-0.31919 0.81025,0 1.52229,0.31919 0.71204,0.29463 1.22766,0.81025 0.54017,0.51561 0.85936,1.22765 0.31919,0.71204 0.31919,1.5223 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102807" />
|
||||||
|
<path
|
||||||
|
d="m 307.56475,110.40521 v 36.4859 h -6.06461 v -36.4859 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102809" />
|
||||||
|
<path
|
||||||
|
d="m 319.91491,121.69963 v 25.19148 h -6.08917 v -25.19148 z m 0.8348,-7.34137 q 0,0.78569 -0.31919,1.47318 -0.31919,0.68749 -0.85936,1.2031 -0.51561,0.51562 -1.22765,0.83481 -0.71204,0.29464 -1.52229,0.29464 -0.7857,0 -1.49774,-0.29464 -0.68749,-0.31919 -1.2031,-0.83481 -0.51562,-0.51561 -0.83481,-1.2031 -0.29464,-0.68749 -0.29464,-1.47318 0,-0.81026 0.29464,-1.5223 0.31919,-0.71204 0.83481,-1.22765 0.51561,-0.51562 1.2031,-0.81025 0.71204,-0.31919 1.49774,-0.31919 0.81025,0 1.52229,0.31919 0.71204,0.29463 1.22765,0.81025 0.54017,0.51561 0.85936,1.22765 0.31919,0.71204 0.31919,1.5223 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102811" />
|
||||||
|
<path
|
||||||
|
d="m 335.30969,121.25768 q 1.6205,0 3.02003,0.34374 1.42408,0.31919 2.62718,0.95757 h 7.24317 v 2.25889 q 0,1.08033 -1.30132,1.32586 l -2.25888,0.41741 q 0.24553,0.63838 0.36829,1.35042 0.14732,0.71204 0.14732,1.49774 0,1.86603 -0.76115,3.38832 -0.73659,1.49774 -2.06246,2.55353 -1.32586,1.05578 -3.14279,1.64505 -1.79238,0.56473 -3.87939,0.56473 -1.42408,0 -2.7745,-0.27009 -1.17855,0.71204 -1.17855,1.59595 0,0.76115 0.68748,1.12945 0.71204,0.34374 1.86604,0.49106 1.154,0.14732 2.62718,0.19642 1.47319,0.0246 3.02003,0.14732 1.54685,0.12277 3.02004,0.44196 1.47318,0.29463 2.62718,0.95757 1.15399,0.66293 1.84148,1.81693 0.71204,1.12944 0.71204,2.92182 0,1.66961 -0.83481,3.24101 -0.81025,1.57139 -2.38165,2.79905 -1.54684,1.22765 -3.83028,1.96425 -2.25889,0.76114 -5.15615,0.76114 -2.84816,0 -4.95973,-0.56472 -2.11156,-0.54017 -3.51109,-1.47318 -1.39953,-0.90847 -2.08701,-2.11157 -0.68749,-1.2031 -0.68749,-2.50442 0,-1.74327 1.05578,-2.94637 1.08034,-1.2031 2.92182,-1.91514 -0.98212,-0.51562 -1.5714,-1.37497 -0.58927,-0.85936 -0.58927,-2.25889 0,-0.56472 0.19642,-1.154 0.19643,-0.61382 0.58928,-1.2031 0.4174,-0.58927 1.03123,-1.10489 0.63838,-0.54017 1.47318,-0.95757 -1.91514,-1.03123 -3.02003,-2.74995 -1.08033,-1.71871 -1.08033,-4.0267 0,-1.86604 0.73659,-3.36378 0.76114,-1.52229 2.08701,-2.57807 1.35042,-1.08034 3.16735,-1.64506 1.84148,-0.56472 4.00216,-0.56472 z m 6.85031,26.76288 q 0,-0.7366 -0.44195,-1.17855 -0.44196,-0.46651 -1.20311,-0.7366 -0.76114,-0.27008 -1.79237,-0.39284 -1.00668,-0.12277 -2.16067,-0.17188 -1.12945,-0.0737 -2.3571,-0.12276 -1.2031,-0.0491 -2.3571,-0.19643 -1.00668,0.56472 -1.64506,1.32587 -0.61383,0.76115 -0.61383,1.76782 0,0.66294 0.3192,1.22766 0.34374,0.58927 1.05578,1.00668 0.73659,0.4174 1.89059,0.63838 1.15399,0.24553 2.8236,0.24553 1.69417,0 2.92182,-0.27009 1.22766,-0.24553 2.01336,-0.71204 0.81025,-0.44195 1.17855,-1.08033 0.36829,-0.61383 0.36829,-1.35042 z m -6.85031,-14.33901 q 1.12944,0 1.96425,-0.29464 0.8348,-0.31919 1.37497,-0.85936 0.56472,-0.54017 0.8348,-1.30131 0.29464,-0.76115 0.29464,-1.66962 0,-1.86603 -1.12944,-2.94637 -1.10489,-1.10489 -3.33922,-1.10489 -2.23433,0 -3.36378,1.10489 -1.10489,1.08034 -1.10489,2.94637 0,0.88392 0.27009,1.64506 0.29463,0.76115 0.8348,1.32587 0.56472,0.54017 1.39953,0.85936 0.85936,0.29464 1.96425,0.29464 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102813" />
|
||||||
|
<path
|
||||||
|
d="m 362.31806,121.30678 q 2.38165,0 4.395,0.76115 2.01336,0.76115 3.46199,2.23433 1.44863,1.44863 2.25888,3.58475 0.83481,2.11157 0.83481,4.83696 0,1.37498 -0.29464,1.86604 -0.29464,0.46651 -1.12944,0.46651 h -15.59122 q 0.14732,1.93969 0.68749,3.36377 0.54017,1.39953 1.42408,2.33255 0.88391,0.90846 2.08701,1.37497 1.22766,0.44196 2.70084,0.44196 1.47319,0 2.52897,-0.34375 1.08034,-0.34374 1.86604,-0.76114 0.81025,-0.4174 1.39952,-0.76115 0.61383,-0.34374 1.17855,-0.34374 0.76115,0 1.12944,0.56472 l 1.74327,2.20978 q -1.00667,1.17855 -2.25888,1.9888 -1.25221,0.7857 -2.62718,1.27676 -1.35042,0.46651 -2.7745,0.66294 -1.39953,0.19642 -2.7254,0.19642 -2.62718,0 -4.88606,-0.85936 -2.25889,-0.88391 -3.9285,-2.57807 -1.66961,-1.71872 -2.62718,-4.22314 -0.95757,-2.52897 -0.95757,-5.84363 0,-2.57808 0.8348,-4.83697 0.83481,-2.28343 2.38165,-3.95304 1.5714,-1.69417 3.80573,-2.67629 2.25889,-0.98213 5.0825,-0.98213 z m 0.12276,4.3459 q -2.65173,0 -4.14947,1.49774 -1.49774,1.49774 -1.91514,4.24769 h 11.44174 q 0,-1.17855 -0.34374,-2.20978 -0.31919,-1.05578 -0.98213,-1.84148 -0.66293,-0.7857 -1.69416,-1.22766 -1.00668,-0.46651 -2.3571,-0.46651 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102815" />
|
||||||
|
<path
|
||||||
|
d="m 408.52683,132.15925 q 0.4174,0.7857 0.76115,1.64506 0.36829,0.83481 0.71204,1.69417 0.34374,-0.90847 0.71204,-1.74327 0.36829,-0.85936 0.7857,-1.64506 l 10.48417,-19.66704 q 0.19642,-0.36829 0.4174,-0.58927 0.22098,-0.22098 0.46651,-0.31919 0.27009,-0.0982 0.58928,-0.12277 0.31919,-0.0245 0.76114,-0.0245 h 4.98428 v 35.50378 h -5.81908 v -22.93259 q 0,-0.63838 0.0245,-1.39953 0.0491,-0.76114 0.12276,-1.54684 l -10.7297,20.13354 q -0.76115,1.44863 -2.33254,1.44863 h -0.93302 q -1.5714,0 -2.33255,-1.44863 l -10.85247,-20.2072 q 0.0737,0.81025 0.12277,1.59595 0.0491,0.76114 0.0491,1.42408 v 22.93259 h -5.81908 v -35.50378 h 4.98428 q 0.44195,0 0.76114,0.0245 0.3192,0.0246 0.56473,0.12277 0.27008,0.0982 0.4665,0.31919 0.22098,0.22098 0.41741,0.58927 l 10.63149,19.71614 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102817" />
|
||||||
|
<path
|
||||||
|
d="m 441.50161,121.69963 v 16.00862 q 0,2.308 1.05578,3.58476 1.08034,1.25221 3.21645,1.25221 1.5714,0 2.94638,-0.68749 1.37497,-0.71204 2.60263,-1.9397 v -18.2184 h 6.06461 v 25.19148 h -3.70752 q -1.2031,0 -1.52229,-1.10489 l -0.4174,-2.01335 q -0.7857,0.7857 -1.62051,1.44863 -0.8348,0.63838 -1.79237,1.10489 -0.95757,0.46651 -2.03791,0.71204 -1.08034,0.24553 -2.3571,0.24553 -2.06246,0 -3.65841,-0.68748 -1.5714,-0.71204 -2.65173,-1.9888 -1.08034,-1.27677 -1.64506,-3.02004 -0.54017,-1.76782 -0.54017,-3.87939 v -16.00862 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102819" />
|
||||||
|
<path
|
||||||
|
d="m 471.77553,147.28396 q -3.29012,0 -5.05794,-1.84148 -1.74327,-1.86603 -1.74327,-5.1316 v -14.06892 h -2.57808 q -0.49106,0 -0.8348,-0.31919 -0.34375,-0.31919 -0.34375,-0.95757 v -2.40621 l 4.05127,-0.66293 1.27676,-6.87487 q 0.12276,-0.49106 0.46651,-0.76115 0.34374,-0.27008 0.88391,-0.27008 h 3.14279 v 7.93065 h 10.48418 l 1.30131,-6.89942 q 0.12277,-0.49106 0.44196,-0.76115 0.34374,-0.27008 0.90846,-0.27008 h 3.11825 v 7.93065 h 6.72755 v 4.32135 h -6.72755 v 13.65152 q 0,1.17855 0.58927,1.84148 0.58928,0.66294 1.59595,0.66294 0.54017,0 0.93302,-0.12277 0.39285,-0.14732 0.66293,-0.29464 0.29464,-0.14731 0.51562,-0.27008 0.22098,-0.14732 0.44196,-0.14732 0.27008,0 0.44195,0.14732 0.17187,0.12277 0.3683,0.39285 l 1.81693,2.94637 q -1.32587,1.10489 -3.04459,1.66961 -1.71871,0.56472 -3.5602,0.56472 -3.29011,0 -5.05794,-1.84148 -1.76782,-1.86603 -1.76782,-5.1316 v -14.06892 h -10.18954 v 13.65152 q 0,1.17855 0.56473,1.84148 0.58927,0.66294 1.59595,0.66294 0.56472,0 0.93302,-0.12277 0.39284,-0.14732 0.66293,-0.29464 0.29464,-0.14731 0.51561,-0.27008 0.22098,-0.14732 0.44196,-0.14732 0.27008,0 0.44196,0.14732 0.17187,0.12277 0.36829,0.39285 l 1.81693,2.94637 q -1.32587,1.10489 -3.04458,1.66961 -1.71872,0.56472 -3.5602,0.56472 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102821" />
|
||||||
|
<path
|
||||||
|
d="m 508.62968,121.30678 q 2.38165,0 4.395,0.76115 2.01336,0.76115 3.46199,2.23433 1.44863,1.44863 2.25889,3.58475 0.8348,2.11157 0.8348,4.83696 0,1.37498 -0.29464,1.86604 -0.29463,0.46651 -1.12944,0.46651 h -15.59122 q 0.14732,1.93969 0.68749,3.36377 0.54017,1.39953 1.42408,2.33255 0.88391,0.90846 2.08701,1.37497 1.22766,0.44196 2.70084,0.44196 1.47319,0 2.52897,-0.34375 1.08034,-0.34374 1.86604,-0.76114 0.81025,-0.4174 1.39953,-0.76115 0.61382,-0.34374 1.17854,-0.34374 0.76115,0 1.12945,0.56472 l 1.74327,2.20978 q -1.00668,1.17855 -2.25889,1.9888 -1.25221,0.7857 -2.62718,1.27676 -1.35042,0.46651 -2.7745,0.66294 -1.39953,0.19642 -2.72539,0.19642 -2.62719,0 -4.88607,-0.85936 -2.25889,-0.88391 -3.9285,-2.57807 -1.66961,-1.71872 -2.62718,-4.22314 -0.95757,-2.52897 -0.95757,-5.84363 0,-2.57808 0.83481,-4.83697 0.8348,-2.28343 2.38165,-3.95304 1.57139,-1.69417 3.80573,-2.67629 2.25888,-0.98213 5.08249,-0.98213 z m 0.12276,4.3459 q -2.65173,0 -4.14947,1.49774 -1.49774,1.49774 -1.91514,4.24769 h 11.44174 q 0,-1.17855 -0.34374,-2.20978 -0.31919,-1.05578 -0.98212,-1.84148 -0.66294,-0.7857 -1.69417,-1.22766 -1.00668,-0.46651 -2.3571,-0.46651 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102823" />
|
||||||
|
<path
|
||||||
|
d="m 524.12263,146.89111 v -25.19148 h 3.5602 q 0.93302,0 1.30131,0.34375 0.3683,0.31919 0.49107,1.17855 l 0.34374,2.84815 q 1.2031,-2.25888 2.82361,-3.53564 1.6205,-1.30132 3.83028,-1.30132 1.74327,0 2.79905,0.76115 l -0.39285,4.54232 q -0.12276,0.44196 -0.36829,0.63838 -0.22098,0.17188 -0.61383,0.17188 -0.3683,0 -1.10489,-0.12277 -0.71204,-0.12277 -1.39953,-0.12277 -1.00667,0 -1.79237,0.29464 -0.7857,0.29464 -1.42408,0.85936 -0.61383,0.54017 -1.10489,1.32587 -0.46651,0.7857 -0.88391,1.79237 v 15.51756 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102825" />
|
||||||
|
<path
|
||||||
|
d="m 577.59905,111.38733 v 5.42624 H 566.8939 v 30.07754 h -6.60479 v -30.07754 h -10.70515 v -5.42624 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102827" />
|
||||||
|
<path
|
||||||
|
d="m 586.11884,121.30678 q 2.38166,0 4.39501,0.76115 2.01335,0.76115 3.46199,2.23433 1.44863,1.44863 2.25888,3.58475 0.83481,2.11157 0.83481,4.83696 0,1.37498 -0.29464,1.86604 -0.29464,0.46651 -1.12944,0.46651 h -15.59122 q 0.14732,1.93969 0.68749,3.36377 0.54016,1.39953 1.42408,2.33255 0.88391,0.90846 2.08701,1.37497 1.22765,0.44196 2.70084,0.44196 1.47319,0 2.52897,-0.34375 1.08034,-0.34374 1.86604,-0.76114 0.81025,-0.4174 1.39952,-0.76115 0.61383,-0.34374 1.17855,-0.34374 0.76115,0 1.12944,0.56472 l 1.74327,2.20978 q -1.00667,1.17855 -2.25888,1.9888 -1.25221,0.7857 -2.62718,1.27676 -1.35042,0.46651 -2.7745,0.66294 -1.39953,0.19642 -2.7254,0.19642 -2.62718,0 -4.88607,-0.85936 -2.25888,-0.88391 -3.92849,-2.57807 -1.66961,-1.71872 -2.62718,-4.22314 -0.95757,-2.52897 -0.95757,-5.84363 0,-2.57808 0.8348,-4.83697 0.83481,-2.28343 2.38165,-3.95304 1.5714,-1.69417 3.80573,-2.67629 2.25889,-0.98213 5.08249,-0.98213 z m 0.12277,4.3459 q -2.65173,0 -4.14947,1.49774 -1.49774,1.49774 -1.91515,4.24769 h 11.44175 q 0,-1.17855 -0.34374,-2.20978 -0.31919,-1.05578 -0.98213,-1.84148 -0.66293,-0.7857 -1.69416,-1.22766 -1.00668,-0.46651 -2.3571,-0.46651 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102829" />
|
||||||
|
<path
|
||||||
|
d="m 601.6118,146.89111 v -25.19148 h 3.5602 q 0.93301,0 1.30131,0.34375 0.3683,0.31919 0.49106,1.17855 l 0.34375,2.84815 q 1.2031,-2.25888 2.8236,-3.53564 1.62051,-1.30132 3.83029,-1.30132 1.74327,0 2.79905,0.76115 l -0.39285,4.54232 q -0.12277,0.44196 -0.3683,0.63838 -0.22097,0.17188 -0.61382,0.17188 -0.3683,0 -1.10489,-0.12277 -0.71204,-0.12277 -1.39953,-0.12277 -1.00668,0 -1.79238,0.29464 -0.7857,0.29464 -1.42408,0.85936 -0.61382,0.54017 -1.10489,1.32587 -0.46651,0.7857 -0.88391,1.79237 v 15.51756 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102831" />
|
||||||
|
<path
|
||||||
|
d="m 629.94596,121.30678 q 2.38165,0 4.39501,0.76115 2.01335,0.76115 3.46198,2.23433 1.44864,1.44863 2.25889,3.58475 0.83481,2.11157 0.83481,4.83696 0,1.37498 -0.29464,1.86604 -0.29464,0.46651 -1.12944,0.46651 h -15.59122 q 0.14732,1.93969 0.68748,3.36377 0.54017,1.39953 1.42408,2.33255 0.88392,0.90846 2.08702,1.37497 1.22765,0.44196 2.70084,0.44196 1.47318,0 2.52897,-0.34375 1.08033,-0.34374 1.86603,-0.76114 0.81026,-0.4174 1.39953,-0.76115 0.61383,-0.34374 1.17855,-0.34374 0.76114,0 1.12944,0.56472 l 1.74327,2.20978 q -1.00668,1.17855 -2.25888,1.9888 -1.25221,0.7857 -2.62719,1.27676 -1.35042,0.46651 -2.7745,0.66294 -1.39952,0.19642 -2.72539,0.19642 -2.62718,0 -4.88607,-0.85936 -2.25888,-0.88391 -3.92849,-2.57807 -1.66961,-1.71872 -2.62719,-4.22314 -0.95757,-2.52897 -0.95757,-5.84363 0,-2.57808 0.83481,-4.83697 0.8348,-2.28343 2.38165,-3.95304 1.5714,-1.69417 3.80573,-2.67629 2.25889,-0.98213 5.08249,-0.98213 z m 0.12277,4.3459 q -2.65174,0 -4.14948,1.49774 -1.49773,1.49774 -1.91514,4.24769 h 11.44175 q 0,-1.17855 -0.34375,-2.20978 -0.31919,-1.05578 -0.98212,-1.84148 -0.66293,-0.7857 -1.69416,-1.22766 -1.00668,-0.46651 -2.3571,-0.46651 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102833" />
|
||||||
|
<path
|
||||||
|
d="m 660.80912,126.61025 q -0.24553,0.39285 -0.51561,0.56472 -0.27008,0.14732 -0.68749,0.14732 -0.44195,0 -0.95757,-0.24553 -0.49106,-0.24553 -1.15399,-0.54017 -0.66294,-0.31919 -1.5223,-0.56472 -0.8348,-0.24553 -1.9888,-0.24553 -1.79237,0 -2.8236,0.76115 -1.00668,0.76114 -1.00668,1.9888 0,0.81025 0.51561,1.37497 0.54017,0.54017 1.39953,0.95757 0.88391,0.41741 1.9888,0.76115 1.10489,0.31919 2.23433,0.71204 1.154,0.39285 2.25889,0.90846 1.10489,0.49107 1.96425,1.27677 0.88391,0.76114 1.39952,1.84148 0.54017,1.08033 0.54017,2.60263 0,1.81693 -0.66293,3.36377 -0.63838,1.52229 -1.91514,2.65174 -1.27676,1.10489 -3.16735,1.74327 -1.86604,0.61382 -4.32135,0.61382 -1.30131,0 -2.55352,-0.24553 -1.22766,-0.22098 -2.38165,-0.63838 -1.12944,-0.4174 -2.11157,-0.98212 -0.95757,-0.56472 -1.69416,-1.22766 l 1.39952,-2.30799 q 0.27009,-0.4174 0.63838,-0.63838 0.3683,-0.22098 0.93302,-0.22098 0.56472,0 1.05579,0.31919 0.51561,0.31919 1.17854,0.68749 0.66294,0.3683 1.54685,0.68749 0.90846,0.31919 2.28344,0.31919 1.08033,0 1.84148,-0.24553 0.7857,-0.27009 1.27676,-0.68749 0.51562,-0.4174 0.73659,-0.95757 0.24554,-0.56472 0.24554,-1.154 0,-0.88391 -0.54017,-1.44863 -0.51562,-0.56472 -1.39953,-0.98212 -0.85936,-0.41741 -1.9888,-0.7366 -1.10489,-0.34374 -2.28344,-0.73659 -1.15399,-0.39285 -2.28344,-0.90846 -1.10489,-0.54017 -1.9888,-1.35043 -0.85936,-0.81025 -1.39952,-1.9888 -0.51562,-1.17855 -0.51562,-2.84816 0,-1.54684 0.61383,-2.94637 0.61383,-1.39953 1.79237,-2.43076 1.20311,-1.05578 2.97093,-1.66961 1.79238,-0.63838 4.12492,-0.63838 2.60263,0 4.73875,0.85936 2.13612,0.85936 3.5602,2.25889 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102835" />
|
||||||
|
<path
|
||||||
|
d="m 673.3066,121.69963 v 25.19148 h -6.08917 v -25.19148 z m 0.83481,-7.34137 q 0,0.78569 -0.31919,1.47318 -0.3192,0.68749 -0.85936,1.2031 -0.51562,0.51562 -1.22766,0.83481 -0.71204,0.29464 -1.52229,0.29464 -0.7857,0 -1.49774,-0.29464 -0.68749,-0.31919 -1.2031,-0.83481 -0.51562,-0.51561 -0.83481,-1.2031 -0.29463,-0.68749 -0.29463,-1.47318 0,-0.81026 0.29463,-1.5223 0.31919,-0.71204 0.83481,-1.22765 0.51561,-0.51562 1.2031,-0.81025 0.71204,-0.31919 1.49774,-0.31919 0.81025,0 1.52229,0.31919 0.71204,0.29463 1.22766,0.81025 0.54016,0.51561 0.85936,1.22765 0.31919,0.71204 0.31919,1.5223 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102837" />
|
||||||
|
<path
|
||||||
|
d="m 695.9691,146.89111 q -0.85936,0 -1.32587,-0.24553 -0.46651,-0.27008 -0.73659,-1.05578 l -0.54017,-1.79238 q -0.95757,0.85936 -1.86604,1.5223 -0.90846,0.63838 -1.89058,1.08033 -0.98213,0.44196 -2.11157,0.66294 -1.10489,0.22097 -2.45531,0.22097 -1.59595,0 -2.94637,-0.4174 -1.35042,-0.44195 -2.33255,-1.30131 -0.98212,-0.85936 -1.52229,-2.13612 -0.54017,-1.27676 -0.54017,-2.97093 0,-1.42408 0.73659,-2.79905 0.76115,-1.39953 2.50442,-2.50442 1.74327,-1.12944 4.64054,-1.86603 2.89726,-0.7366 7.21861,-0.83481 v -1.47319 q 0,-2.52896 -1.08034,-3.73207 -1.08033,-1.22765 -3.11824,-1.22765 -1.47319,0 -2.45531,0.34374 -0.95757,0.34375 -1.69417,0.7857 -0.73659,0.4174 -1.35042,0.76115 -0.58927,0.34374 -1.32586,0.34374 -0.63838,0 -1.08034,-0.31919 -0.44196,-0.34374 -0.71204,-0.7857 l -1.08034,-1.93969 q 4.3459,-3.97761 10.45962,-3.97761 2.20978,0 3.95305,0.7366 1.74327,0.71204 2.94638,2.01335 1.2031,1.27676 1.81692,3.06914 0.63839,1.79238 0.63839,3.92849 v 15.91041 z m -9.0601,-3.78117 q 1.86604,0 3.21646,-0.66294 1.37497,-0.68748 2.67629,-2.06246 v -4.24768 q -2.65174,0.12276 -4.44411,0.4665 -1.76783,0.3192 -2.84816,0.83481 -1.08034,0.51562 -1.54685,1.2031 -0.46651,0.68749 -0.46651,1.49774 0,1.59595 0.93302,2.28344 0.95757,0.68749 2.47986,0.68749 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102839" />
|
||||||
|
<path
|
||||||
|
d="m 250.99463,202.35657 q 0.54017,0 0.95757,0.4174 l 2.60263,2.82361 q -2.16067,2.67628 -5.32802,4.10036 -3.1428,1.42408 -7.56236,1.42408 -3.95304,0 -7.12039,-1.35042 -3.1428,-1.35042 -5.37713,-3.75662 -2.23434,-2.40621 -3.43744,-5.74543 -1.17855,-3.33922 -1.17855,-7.29227 0,-4.00215 1.27676,-7.31682 1.27677,-3.33922 3.58476,-5.74543 2.33254,-2.4062 5.549,-3.73207 3.21645,-1.35042 7.1204,-1.35042 3.87939,0 6.87487,1.27676 3.02003,1.27676 5.13159,3.33922 l -2.20978,3.06914 q -0.19642,0.29464 -0.51561,0.51562 -0.29464,0.22097 -0.83481,0.22097 -0.36829,0 -0.76114,-0.19642 -0.39285,-0.22098 -0.85936,-0.51562 -0.46651,-0.31919 -1.08034,-0.68748 -0.61382,-0.3683 -1.42408,-0.66294 -0.81025,-0.31919 -1.89059,-0.51561 -1.05578,-0.22098 -2.45531,-0.22098 -2.38165,0 -4.37045,0.85936 -1.96425,0.8348 -3.38833,2.45531 -1.42408,1.59595 -2.20977,3.92849 -0.7857,2.308 -0.7857,5.27892 0,2.99548 0.8348,5.32802 0.85936,2.33255 2.30799,3.9285 1.44864,1.59595 3.41288,2.45531 1.96425,0.83481 4.22314,0.83481 1.35042,0 2.43075,-0.14732 1.10489,-0.14732 2.01336,-0.46651 0.93302,-0.31919 1.74327,-0.81025 0.8348,-0.51562 1.64506,-1.25221 0.24553,-0.22098 0.51561,-0.34375 0.27009,-0.14731 0.56472,-0.14731 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102841" />
|
||||||
|
<path
|
||||||
|
d="m 258.13954,210.72917 v -36.4859 h 6.06461 v 14.01982 q 1.47319,-1.39953 3.24101,-2.25889 1.76782,-0.85936 4.14948,-0.85936 2.06246,0 3.65841,0.71204 1.59595,0.68749 2.65173,1.96425 1.08034,1.25221 1.62051,3.02003 0.56472,1.74327 0.56472,3.85484 v 16.03317 h -6.06462 V 194.696 q 0,-2.30799 -1.05578,-3.5602 -1.05578,-1.27676 -3.21646,-1.27676 -1.5714,0 -2.94637,0.71204 -1.37497,0.71204 -2.60263,1.93969 v 18.2184 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102843" />
|
||||||
|
<path
|
||||||
|
d="m 296.5651,185.14484 q 2.38165,0 4.395,0.76115 2.01335,0.76114 3.46199,2.23433 1.44863,1.44863 2.25888,3.58475 0.83481,2.11157 0.83481,4.83696 0,1.37498 -0.29464,1.86604 -0.29464,0.46651 -1.12944,0.46651 h -15.59122 q 0.14732,1.93969 0.68749,3.36377 0.54016,1.39953 1.42408,2.33255 0.88391,0.90846 2.08701,1.37497 1.22766,0.44196 2.70084,0.44196 1.47319,0 2.52897,-0.34375 1.08034,-0.34374 1.86604,-0.76114 0.81025,-0.4174 1.39952,-0.76115 0.61383,-0.34374 1.17855,-0.34374 0.76115,0 1.12944,0.56472 l 1.74327,2.20978 q -1.00667,1.17855 -2.25888,1.9888 -1.25221,0.7857 -2.62718,1.27676 -1.35042,0.46651 -2.7745,0.66293 -1.39953,0.19643 -2.7254,0.19643 -2.62718,0 -4.88606,-0.85936 -2.25889,-0.88391 -3.9285,-2.57807 -1.66961,-1.71872 -2.62718,-4.22314 -0.95757,-2.52897 -0.95757,-5.84364 0,-2.57807 0.8348,-4.83696 0.83481,-2.28343 2.38165,-3.95305 1.5714,-1.69416 3.80573,-2.67628 2.25889,-0.98213 5.0825,-0.98213 z m 0.12276,4.3459 q -2.65173,0 -4.14947,1.49774 -1.49774,1.49774 -1.91514,4.24769 h 11.44174 q 0,-1.17855 -0.34374,-2.20978 -0.31919,-1.05579 -0.98213,-1.84148 -0.66293,-0.7857 -1.69416,-1.22766 -1.00668,-0.46651 -2.3571,-0.46651 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102845" />
|
||||||
|
<path
|
||||||
|
d="m 312.05803,210.72917 v -25.19148 h 3.70752 q 1.17855,0 1.54685,1.10489 l 0.39284,1.86604 q 0.66294,-0.7366 1.37498,-1.35042 0.73659,-0.61383 1.54684,-1.05579 0.83481,-0.44195 1.76783,-0.68748 0.95757,-0.27009 2.08701,-0.27009 2.38165,0 3.90394,1.30132 1.54685,1.27676 2.308,3.41288 0.58927,-1.25221 1.47318,-2.13612 0.88391,-0.90847 1.9397,-1.47319 1.05578,-0.56472 2.23433,-0.8348 1.2031,-0.27009 2.4062,-0.27009 2.08702,0 3.70752,0.63838 1.6205,0.63838 2.72539,1.86604 1.10489,1.22765 1.66962,2.99548 0.58927,1.76782 0.58927,4.05126 v 16.03317 h -6.06462 V 194.696 q 0,-2.40621 -1.05578,-3.60931 -1.05578,-1.22765 -3.09369,-1.22765 -0.93302,0 -1.74327,0.31919 -0.7857,0.31919 -1.39953,0.93302 -0.58927,0.58927 -0.93301,1.49773 -0.34375,0.90847 -0.34375,2.08702 v 16.03317 h -6.08917 V 194.696 q 0,-2.52897 -1.03123,-3.68297 -1.00667,-1.15399 -2.97092,-1.15399 -1.32587,0 -2.47987,0.66293 -1.12944,0.63838 -2.11156,1.76782 v 18.43938 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102847" />
|
||||||
|
<path
|
||||||
|
d="m 353.18445,210.72917 v -25.19148 h 3.70752 q 1.17855,0 1.54684,1.10489 l 0.41741,1.9888 q 0.76114,-0.7857 1.59595,-1.42408 0.85936,-0.63838 1.79237,-1.10489 0.95758,-0.46651 2.03791,-0.71204 1.08034,-0.24553 2.3571,-0.24553 2.06246,0 3.65841,0.71204 1.59595,0.68749 2.65174,1.96425 1.08033,1.25221 1.6205,3.02003 0.56472,1.74327 0.56472,3.85484 v 16.03317 h -6.06461 V 194.696 q 0,-2.30799 -1.05579,-3.5602 -1.05578,-1.27676 -3.21645,-1.27676 -1.5714,0 -2.94637,0.71204 -1.37498,0.71204 -2.60263,1.93969 v 18.2184 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102849" />
|
||||||
|
<path
|
||||||
|
d="m 387.1659,185.53769 v 25.19148 h -6.08917 v -25.19148 z m 0.8348,-7.34138 q 0,0.7857 -0.31919,1.47319 -0.31919,0.68749 -0.85935,1.2031 -0.51562,0.51562 -1.22766,0.83481 -0.71204,0.29464 -1.52229,0.29464 -0.7857,0 -1.49774,-0.29464 -0.68749,-0.31919 -1.2031,-0.83481 -0.51562,-0.51561 -0.83481,-1.2031 -0.29464,-0.68749 -0.29464,-1.47319 0,-0.81025 0.29464,-1.52229 0.31919,-0.71204 0.83481,-1.22765 0.51561,-0.51562 1.2031,-0.81025 0.71204,-0.31919 1.49774,-0.31919 0.81025,0 1.52229,0.31919 0.71204,0.29463 1.22766,0.81025 0.54016,0.51561 0.85935,1.22765 0.31919,0.71204 0.31919,1.52229 z"
|
||||||
|
style="opacity:1;fill:#000000"
|
||||||
|
id="path102851" />
|
||||||
|
<path
|
||||||
|
d="m 401.75043,211.12202 q -3.29012,0 -5.05794,-1.84148 -1.74327,-1.86604 -1.74327,-5.1316 v -14.06892 h -2.57808 q -0.49106,0 -0.8348,-0.31919 -0.34375,-0.3192 -0.34375,-0.95758 v -2.4062 l 4.05127,-0.66293 1.27676,-6.87487 q 0.12276,-0.49106 0.46651,-0.76115 0.34374,-0.27008 0.88391,-0.27008 h 3.14279 v 7.93065 h 6.72755 v 4.32135 h -6.72755 v 13.65152 q 0,1.17855 0.56473,1.84148 0.58927,0.66294 1.59595,0.66294 0.56472,0 0.93301,-0.12277 0.39285,-0.14732 0.66294,-0.29464 0.29464,-0.14732 0.51561,-0.27008 0.22098,-0.14732 0.44196,-0.14732 0.27008,0 0.44195,0.14732 0.17188,0.12276 0.3683,0.39285 l 1.81693,2.94637 q -1.32587,1.10489 -3.04458,1.66961 -1.71872,0.56472 -3.5602,0.56472 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102853" />
|
||||||
|
<path
|
||||||
|
d="m 429.7164,188.04211 q 0,0.63838 -0.22097,1.25221 -0.22098,0.61382 -0.58928,1.00667 l -11.98191,15.76309 h 12.42387 v 4.66509 h -19.44606 v -2.52897 q 0,-0.4174 0.19643,-0.98212 0.19642,-0.58927 0.58927,-1.10489 l 12.08013,-15.93496 h -12.15379 v -4.64054 h 19.10231 z"
|
||||||
|
style="fill:#000000;opacity:1"
|
||||||
|
id="path102855" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 41 KiB |
30
sites/dreikoenige/Logo.tsx
Normal file
30
sites/dreikoenige/Logo.tsx
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
import { LogoProps } from '@/components/Logo/Logo'
|
||||||
|
import { processSvg } from '@/utils/processSvg'
|
||||||
|
import { logoSvg } from './logoSvg'
|
||||||
|
|
||||||
|
export const Logo = ({
|
||||||
|
withText = false,
|
||||||
|
color = '#000000',
|
||||||
|
height = 75,
|
||||||
|
textColor = '#000000',
|
||||||
|
}: LogoProps) => {
|
||||||
|
if (withText && typeof textColor === 'undefined') {
|
||||||
|
textColor = color
|
||||||
|
}
|
||||||
|
|
||||||
|
const viewBox = withText ? '0 0 215 75' : '0 0 75 75'
|
||||||
|
const width = withText ? (height * 215) / 75 : height
|
||||||
|
const inner = processSvg(logoSvg, { color, textColor, withText })
|
||||||
|
|
||||||
|
return (
|
||||||
|
<svg
|
||||||
|
width={width}
|
||||||
|
height={height}
|
||||||
|
viewBox={viewBox}
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
dangerouslySetInnerHTML={{ __html: inner }}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Logo
|
||||||
32
sites/dreikoenige/config.ts
Normal file
32
sites/dreikoenige/config.ts
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
import { SiteConfig } from '@/config/site'
|
||||||
|
|
||||||
|
const config: SiteConfig = {
|
||||||
|
id: 'dreikoenige',
|
||||||
|
name: 'Katholische Pfarrei Heilige Drei Könige Berlin',
|
||||||
|
shortName: 'Hl. Drei Könige',
|
||||||
|
description:
|
||||||
|
'Katholische Pfarrei Heilige Drei Könige in Berlin – Gottesdienste, Veranstaltungen, Sakramente und Gemeindeleben.',
|
||||||
|
url: 'https://dreikoenige.berlin',
|
||||||
|
email: 'kontakt@dreikoenige.berlin',
|
||||||
|
keywords: [
|
||||||
|
'Katholische Pfarrei',
|
||||||
|
'Heilige Drei Könige',
|
||||||
|
'Berlin',
|
||||||
|
'Gottesdienst',
|
||||||
|
'Sakramente',
|
||||||
|
'Veranstaltungen',
|
||||||
|
'Gemeinde',
|
||||||
|
],
|
||||||
|
ogImage: '/og-logo.svg',
|
||||||
|
baseColor: '#426156',
|
||||||
|
shade1: '#728F8D',
|
||||||
|
shade2: '#CBD6D5',
|
||||||
|
shade3: '#E3E9E8',
|
||||||
|
contrastColor: '#7D1224',
|
||||||
|
contrastShade1: '#C14953',
|
||||||
|
defaultFont: 'cairo',
|
||||||
|
headerFont: 'faustina',
|
||||||
|
borderRadius: '13px',
|
||||||
|
}
|
||||||
|
|
||||||
|
export default config
|
||||||
367
sites/dreikoenige/logoSvg.ts
Normal file
367
sites/dreikoenige/logoSvg.ts
Normal file
File diff suppressed because one or more lines are too long
365
sites/dreikoenige/logo_with_text.svg
Normal file
365
sites/dreikoenige/logo_with_text.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 33 KiB |
|
|
@ -1,39 +0,0 @@
|
||||||
'use client'
|
|
||||||
|
|
||||||
import type { TextFieldClientComponent } from 'payload'
|
|
||||||
import { TextField, useField } from '@payloadcms/ui'
|
|
||||||
|
|
||||||
const ColorInput = ({ path }: { path: string }) => {
|
|
||||||
const { value, setValue } = useField<string>({ path })
|
|
||||||
|
|
||||||
return (
|
|
||||||
<input
|
|
||||||
type="color"
|
|
||||||
value={value || '#000000'}
|
|
||||||
onChange={(e) => setValue(e.target.value)}
|
|
||||||
style={{
|
|
||||||
width: 40,
|
|
||||||
height: 40,
|
|
||||||
padding: 2,
|
|
||||||
border: '1px solid var(--theme-elevation-150)',
|
|
||||||
borderRadius: 4,
|
|
||||||
cursor: 'pointer',
|
|
||||||
background: 'none',
|
|
||||||
flexShrink: 0,
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
export const ColorPicker: TextFieldClientComponent = (props) => {
|
|
||||||
return (
|
|
||||||
<div style={{ display: 'flex', alignItems: 'flex-end', gap: 8, marginBottom: "20px" }}>
|
|
||||||
<div style={{ flex: 1 }}>
|
|
||||||
<TextField {...props} />
|
|
||||||
</div>
|
|
||||||
<ColorInput path={props.path} />
|
|
||||||
</div>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
export default ColorPicker
|
|
||||||
|
|
@ -1,40 +0,0 @@
|
||||||
'use client'
|
|
||||||
|
|
||||||
import { useEffect, useState } from 'react'
|
|
||||||
import moment from 'moment'
|
|
||||||
import Day from '@/admin/components/calendar/Day'
|
|
||||||
|
|
||||||
|
|
||||||
const Calendar = () => {
|
|
||||||
const weekNr = moment().isoWeek();
|
|
||||||
const [week, setWeek] = useState(weekNr.toString())
|
|
||||||
const [days, setDays] = useState<string[]>([])
|
|
||||||
|
|
||||||
// on week change => sey days
|
|
||||||
useEffect(() => {
|
|
||||||
const date = moment().isoWeek(Number(week));
|
|
||||||
const newDays = [];
|
|
||||||
|
|
||||||
for(let i=0; i<7; i++) {
|
|
||||||
let day = date.weekday(i).toISOString();
|
|
||||||
newDays.push(day)
|
|
||||||
}
|
|
||||||
|
|
||||||
setDays(newDays)
|
|
||||||
}, [week, setDays])
|
|
||||||
|
|
||||||
return (
|
|
||||||
<div>
|
|
||||||
<div>
|
|
||||||
<select value={week} onChange={e => setWeek(e.currentTarget.value)}>
|
|
||||||
{[...Array(51).keys()].map(i => <option key={i} value={i.toString()}>Woche {i}</option>)}
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
{days.map(day => <Day key={day} date={day} mass={[]} />)}
|
|
||||||
</div>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
export default Calendar
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
import { useSyncExternalStore } from 'react'
|
|
||||||
import { churchStore } from '@/admin/components/calendar/ChurchSelect/churchStore'
|
|
||||||
|
|
||||||
type ChurchSelectProps = {
|
|
||||||
value: string,
|
|
||||||
className?: string,
|
|
||||||
onChange: (value: string) => void,
|
|
||||||
}
|
|
||||||
|
|
||||||
export const ChurchSelect = ({value, onChange, className}: ChurchSelectProps) => {
|
|
||||||
const churches = useSyncExternalStore(churchStore.subscribe, churchStore.getSnapshot)
|
|
||||||
|
|
||||||
return (
|
|
||||||
<select
|
|
||||||
className={className}
|
|
||||||
value={value}
|
|
||||||
onChange={e => onChange(e.target.value)}
|
|
||||||
>
|
|
||||||
{churches.map(c => <option key={c.id} value={c.id}>{c.name}</option>)}
|
|
||||||
</select>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
@ -1,42 +0,0 @@
|
||||||
import { fetchChurches } from '@/fetch/churches'
|
|
||||||
|
|
||||||
type Church = {
|
|
||||||
id: string,
|
|
||||||
name: string
|
|
||||||
}
|
|
||||||
|
|
||||||
let churches: Church[] = [];
|
|
||||||
const listeners = new Set<() => void>();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ChurchStore to use with Reacts `useSyncExternalStore`
|
|
||||||
*/
|
|
||||||
export const churchStore = {
|
|
||||||
// fetch all churches from API
|
|
||||||
async init() {
|
|
||||||
const data = await fetchChurches();
|
|
||||||
|
|
||||||
if (data) {
|
|
||||||
churches = data.docs.map(c => {
|
|
||||||
return { id: c.id, name: c.name }
|
|
||||||
});
|
|
||||||
|
|
||||||
emitChange()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
subscribe: (listener: () => void) => {
|
|
||||||
listeners.add(listener);
|
|
||||||
return () => listeners.delete(listener);
|
|
||||||
},
|
|
||||||
getSnapshot() {
|
|
||||||
return churches;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function emitChange() {
|
|
||||||
for (let listener of listeners) {
|
|
||||||
listener();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
await churchStore.init();
|
|
||||||
|
|
@ -1,36 +0,0 @@
|
||||||
import { liturgicalDayName } from '@/hooks/liturgicalDayName'
|
|
||||||
import styles from "./styles.module.scss"
|
|
||||||
import MassForm from '@/admin/components/calendar/MassForm'
|
|
||||||
|
|
||||||
type DayProps = {
|
|
||||||
date: string,
|
|
||||||
mass: Mass[]
|
|
||||||
}
|
|
||||||
|
|
||||||
type Mass = {
|
|
||||||
id: string,
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
export const Day = ({date}: DayProps) => {
|
|
||||||
const dayName = liturgicalDayName(date)
|
|
||||||
const dateObj = new Date(date);
|
|
||||||
|
|
||||||
|
|
||||||
return (
|
|
||||||
<div className={styles.container}>
|
|
||||||
<div className={styles.day}>
|
|
||||||
<strong>{dateObj.toLocaleDateString("de-De", {weekday: "long"})}</strong> <br/>
|
|
||||||
{dayName}
|
|
||||||
</div>
|
|
||||||
<div className={styles.date}>
|
|
||||||
{date.substring(8, 10)}
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<MassForm />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
export default Day
|
|
||||||
|
|
@ -1,54 +0,0 @@
|
||||||
import styles from "./form.module.scss"
|
|
||||||
import { ChurchSelect } from '@/admin/components/calendar/ChurchSelect/ChurchSelect'
|
|
||||||
|
|
||||||
const MassForm = () => {
|
|
||||||
return (
|
|
||||||
<div className={styles.container}>
|
|
||||||
<div className={styles.time}>
|
|
||||||
<div className={styles.formRow}>
|
|
||||||
<select name="time" className={styles.select}>
|
|
||||||
<option>10:00 Uhr</option>
|
|
||||||
<option>20:00 Uhr</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<ChurchSelect
|
|
||||||
className={styles.select}
|
|
||||||
value={"23"}
|
|
||||||
onChange={() => console.log("chage")}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
|
|
||||||
<div className={styles.formRow}>
|
|
||||||
<input type="radio" id="heilige_messe" name="massType" value="Heilige Messe" required />
|
|
||||||
<label htmlFor="heilige_messe">Heilige Messe</label>
|
|
||||||
|
|
||||||
<input type="radio" id="wort_gottes_feier" name="massType" value="Wort-Gottes-Feier" required />
|
|
||||||
<label htmlFor="wort_gottes_feier">Wort-Gottes-Feier</label>
|
|
||||||
|
|
||||||
<input type="radio" id="familienmesse" name="massType" value="Familienmesse" required />
|
|
||||||
<label htmlFor="familienmesse">Familienmesse</label>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div className={styles.formRow}>
|
|
||||||
<input type="text" id="title" name="title" placeholder={"Titel"} className={styles.input} required />
|
|
||||||
</div>
|
|
||||||
<div className={styles.formRow}>
|
|
||||||
<input type="text" id="celebrant" name="celebrant" placeholder={"Zelebrant"} className={styles.input}/>
|
|
||||||
</div>
|
|
||||||
<div className={styles.formRow}>
|
|
||||||
<textarea id="description" name="description" placeholder={"Hinweise"} className={styles.input} rows={4}></textarea>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<button>Entfernen</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
export default MassForm
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
||||||
.container {
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.time {
|
|
||||||
width: 130px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.formRow {
|
|
||||||
margin-bottom: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.input {
|
|
||||||
font-size: 12px;
|
|
||||||
padding: 3px;
|
|
||||||
width: 350px;
|
|
||||||
border: 1px solid #ababab;
|
|
||||||
border-radius: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.select {
|
|
||||||
font-size: 12px;
|
|
||||||
padding: 3px;
|
|
||||||
border: 1px solid #ababab;
|
|
||||||
border-radius: 4px;
|
|
||||||
width: 100px;
|
|
||||||
background-color: #ffffff;
|
|
||||||
font-family: inherit;
|
|
||||||
}
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
.container {
|
|
||||||
display: flex;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.day {
|
|
||||||
width: 300px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.date {
|
|
||||||
font-size: 18px;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
@ -1,40 +0,0 @@
|
||||||
import { Gutter } from '@payloadcms/ui'
|
|
||||||
import { DefaultTemplate } from '@payloadcms/next/templates'
|
|
||||||
import { AdminViewProps } from 'payload'
|
|
||||||
import Calendar from '@/admin/components/calendar/Calendar'
|
|
||||||
|
|
||||||
export default function TestPage({
|
|
||||||
initPageResult,
|
|
||||||
params,
|
|
||||||
searchParams,
|
|
||||||
}: AdminViewProps) {
|
|
||||||
const {
|
|
||||||
req: {
|
|
||||||
user
|
|
||||||
}
|
|
||||||
} = initPageResult
|
|
||||||
|
|
||||||
if (!user) {
|
|
||||||
return <p>You must be logged in to view this page.</p>
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
<DefaultTemplate
|
|
||||||
i18n={initPageResult.req.i18n}
|
|
||||||
locale={initPageResult.locale}
|
|
||||||
params={params}
|
|
||||||
payload={initPageResult.req.payload}
|
|
||||||
permissions={initPageResult.permissions}
|
|
||||||
searchParams={searchParams}
|
|
||||||
user={initPageResult.req.user || undefined}
|
|
||||||
visibleEntities={initPageResult.visibleEntities}
|
|
||||||
>
|
|
||||||
<Gutter>
|
|
||||||
<h1>Gottesdiensten</h1>
|
|
||||||
<p>This view uses the Default Template.</p>
|
|
||||||
|
|
||||||
<Calendar />
|
|
||||||
</Gutter>
|
|
||||||
</DefaultTemplate>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
@ -5,6 +5,8 @@ import { Metadata } from 'next'
|
||||||
import { AdminMenu } from '@/components/AdminMenu/AdminMenu'
|
import { AdminMenu } from '@/components/AdminMenu/AdminMenu'
|
||||||
import { Section } from '@/components/Section/Section'
|
import { Section } from '@/components/Section/Section'
|
||||||
import { isAuthenticated } from '@/utils/auth'
|
import { isAuthenticated } from '@/utils/auth'
|
||||||
|
import { RefreshRouteOnSave } from '@/components/RefreshRouteOnSave/RefreshRouteOnSave'
|
||||||
|
import { draftMode } from 'next/headers'
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
params: Promise<{ slug: string }>
|
params: Promise<{ slug: string }>
|
||||||
|
|
@ -24,19 +26,25 @@ export async function generateMetadata({ params }: Props): Promise<Metadata> {
|
||||||
|
|
||||||
export default async function DynamicPage({ params }: Props) {
|
export default async function DynamicPage({ params }: Props) {
|
||||||
const slug = (await params).slug
|
const slug = (await params).slug
|
||||||
const page = await fetchPageBySlug(slug)
|
const { isEnabled: isDraft } = await draftMode()
|
||||||
|
const page = await fetchPageBySlug(slug, isDraft)
|
||||||
const authenticated = await isAuthenticated()
|
const authenticated = await isAuthenticated()
|
||||||
|
|
||||||
if (!page) {
|
if (!page) {
|
||||||
notFound()
|
notFound()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!authenticated && page._status !== "published") {
|
||||||
|
notFound();
|
||||||
|
}
|
||||||
|
|
||||||
const firstBlockType = page.content?.[0]?.blockType
|
const firstBlockType = page.content?.[0]?.blockType
|
||||||
const needsTopPadding =
|
const needsTopPadding =
|
||||||
firstBlockType === 'title' || firstBlockType === 'text'
|
firstBlockType === 'title' || firstBlockType === 'text'
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
{isDraft && <RefreshRouteOnSave />}
|
||||||
{needsTopPadding && <Section padding={'medium'} />}
|
{needsTopPadding && <Section padding={'medium'} />}
|
||||||
|
|
||||||
{page.content && page.content.length > 0 && (
|
{page.content && page.content.length > 0 && (
|
||||||
|
|
|
||||||
42
src/app/(home)/api/draft/route.ts
Normal file
42
src/app/(home)/api/draft/route.ts
Normal file
|
|
@ -0,0 +1,42 @@
|
||||||
|
// Draft Mode API Route
|
||||||
|
//
|
||||||
|
// Enables Next.js draft mode so that pages can fetch unpublished
|
||||||
|
// Payload CMS content. This route is called by Payload's live preview
|
||||||
|
// iframe (configured in each collection's admin.livePreview.url) to
|
||||||
|
// set the draft mode cookie before redirecting to the actual page.
|
||||||
|
//
|
||||||
|
// Only authenticated Payload users can activate draft mode, ensuring
|
||||||
|
// public visitors never see draft content.
|
||||||
|
//
|
||||||
|
// See: https://nextjs.org/docs/app/guides/draft-mode
|
||||||
|
|
||||||
|
import { draftMode } from 'next/headers'
|
||||||
|
import { redirect } from 'next/navigation'
|
||||||
|
import { getPayload } from 'payload'
|
||||||
|
import config from '@/payload.config'
|
||||||
|
import { headers } from 'next/headers'
|
||||||
|
|
||||||
|
export async function GET(request: Request) {
|
||||||
|
const { searchParams } = new URL(request.url)
|
||||||
|
const url = searchParams.get('url')
|
||||||
|
|
||||||
|
if (!url) {
|
||||||
|
return new Response('Missing url parameter', { status: 400 })
|
||||||
|
}
|
||||||
|
|
||||||
|
// Verify the request comes from an authenticated Payload CMS user
|
||||||
|
const payload = await getPayload({ config })
|
||||||
|
const allHeaders = await headers()
|
||||||
|
const { user } = await payload.auth({ headers: allHeaders })
|
||||||
|
|
||||||
|
if (!user) {
|
||||||
|
return new Response('Unauthorized', { status: 401 })
|
||||||
|
}
|
||||||
|
|
||||||
|
// Enable draft mode cookie — subsequent page renders will see
|
||||||
|
// draftMode().isEnabled === true and can fetch draft content
|
||||||
|
const draft = await draftMode()
|
||||||
|
draft.enable()
|
||||||
|
|
||||||
|
redirect(url)
|
||||||
|
}
|
||||||
|
|
@ -7,21 +7,19 @@ import { notFound } from 'next/navigation'
|
||||||
import { readableDateTime } from '@/utils/readableDate'
|
import { readableDateTime } from '@/utils/readableDate'
|
||||||
import { HR } from '@/components/HorizontalRule/HorizontalRule'
|
import { HR } from '@/components/HorizontalRule/HorizontalRule'
|
||||||
import Image from 'next/image'
|
import Image from 'next/image'
|
||||||
import styles from "./styles.module.scss"
|
import styles from './styles.module.scss'
|
||||||
import { Blocks } from '@/compositions/Blocks/Blocks'
|
import { Blocks } from '@/compositions/Blocks/Blocks'
|
||||||
import { isAuthenticated } from '@/utils/auth'
|
import { isAuthenticated } from '@/utils/auth'
|
||||||
import { AdminMenu } from '@/components/AdminMenu/AdminMenu'
|
import { AdminMenu } from '@/components/AdminMenu/AdminMenu'
|
||||||
|
import { RefreshRouteOnSave } from '@/components/RefreshRouteOnSave/RefreshRouteOnSave'
|
||||||
async function fetchBlog(id: string) {
|
import { draftMode } from 'next/headers'
|
||||||
const res = await fetch(`http://localhost:3000/api/blog/${id}`)
|
import { fetchBlog } from '@/fetch/blog'
|
||||||
if (!res.ok) return undefined
|
|
||||||
return res.json();
|
|
||||||
}
|
|
||||||
|
|
||||||
export default async function BlogPage({ params }: { params: Promise<{id: string}>}){
|
export default async function BlogPage({ params }: { params: Promise<{id: string}>}){
|
||||||
|
|
||||||
const id = (await params).id;
|
const id = (await params).id;
|
||||||
const data = await fetchBlog(id) as Blog;
|
const { isEnabled: isDraft } = await draftMode()
|
||||||
|
const data = await fetchBlog(id, isDraft) as Blog;
|
||||||
const url = typeof data.photo === 'object' && data.photo?.sizes?.banner?.url;
|
const url = typeof data.photo === 'object' && data.photo?.sizes?.banner?.url;
|
||||||
const authenticated = await isAuthenticated();
|
const authenticated = await isAuthenticated();
|
||||||
|
|
||||||
|
|
@ -29,12 +27,17 @@ export default async function BlogPage({ params }: { params: Promise<{id: string
|
||||||
notFound();
|
notFound();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!authenticated && data._status !== "published") {
|
||||||
|
notFound();
|
||||||
|
}
|
||||||
|
|
||||||
// determine if some margin at the bottom should be added
|
// determine if some margin at the bottom should be added
|
||||||
const length = data.content.content.length;
|
const length = data.content.content.length;
|
||||||
const shouldAddMargin = data.content.content[length - 1].blockType === "text"
|
const shouldAddMargin = data.content.content[length - 1].blockType === "text"
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
{isDraft && <RefreshRouteOnSave />}
|
||||||
<Section paddingBottom={"small"}>
|
<Section paddingBottom={"small"}>
|
||||||
<Container>
|
<Container>
|
||||||
<Title title={data.title} color={"contrast"}></Title>
|
<Title title={data.title} color={"contrast"}></Title>
|
||||||
|
|
|
||||||
|
|
@ -8,13 +8,21 @@ import { getPhoto, transformGallery } from '@/utils/dto/gallery'
|
||||||
import { fetchLastCalendar } from '@/fetch/calendar'
|
import { fetchLastCalendar } from '@/fetch/calendar'
|
||||||
import { isAuthenticated } from '@/utils/auth'
|
import { isAuthenticated } from '@/utils/auth'
|
||||||
import { AdminMenu } from '@/components/AdminMenu/AdminMenu'
|
import { AdminMenu } from '@/components/AdminMenu/AdminMenu'
|
||||||
|
import { RefreshRouteOnSave } from '@/components/RefreshRouteOnSave/RefreshRouteOnSave'
|
||||||
|
import { draftMode } from 'next/headers'
|
||||||
|
|
||||||
export default async function ParishPage ({ params }: { params: Promise<{slug: string}>}) {
|
export default async function ParishPage ({ params }: { params: Promise<{slug: string}>}) {
|
||||||
|
|
||||||
const slug = (await params).slug;
|
const slug = (await params).slug;
|
||||||
const parish = await fetchParish(slug);
|
const { isEnabled: isDraft } = await draftMode()
|
||||||
|
const parish = await fetchParish(slug, isDraft);
|
||||||
|
const authenticated = await isAuthenticated();
|
||||||
|
|
||||||
if(!parish || !parish.docs[0]) {
|
if(!parish) {
|
||||||
|
notFound();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!authenticated && parish._status !== "published") {
|
||||||
notFound();
|
notFound();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -29,16 +37,16 @@ export default async function ParishPage ({ params }: { params: Promise<{slug: s
|
||||||
churches,
|
churches,
|
||||||
gallery,
|
gallery,
|
||||||
content
|
content
|
||||||
} = parish.docs[0]
|
} = parish
|
||||||
const events = await fetchEvents({ parishId: id })
|
const events = await fetchEvents({ parishId: id })
|
||||||
const churchIds = churches.map(c => typeof c === "string" ? c : c.id)
|
const churchIds = churches.map(c => typeof c === "string" ? c : c.id)
|
||||||
const worship = await fetchWorship({ locations: churchIds })
|
const worship = await fetchWorship({ locations: churchIds })
|
||||||
const announcement = await fetchLastAnnouncement(id);
|
const announcement = await fetchLastAnnouncement(id);
|
||||||
const calendar = await fetchLastCalendar(id);
|
const calendar = await fetchLastCalendar(id);
|
||||||
const authenticated = await isAuthenticated();
|
|
||||||
const image = getPhoto("tablet", photo)
|
const image = getPhoto("tablet", photo)
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
{isDraft && <RefreshRouteOnSave />}
|
||||||
<Parish
|
<Parish
|
||||||
title={name}
|
title={name}
|
||||||
slug={slug}
|
slug={slug}
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,19 @@
|
||||||
import { notFound } from 'next/navigation'
|
import { notFound } from 'next/navigation'
|
||||||
import { Worship as WorshipType } from '@/payload-types'
|
|
||||||
import { Worship } from '@/pageComponents/Worship/Worship'
|
import { Worship } from '@/pageComponents/Worship/Worship'
|
||||||
import { isAuthenticated } from '@/utils/auth'
|
import { isAuthenticated } from '@/utils/auth'
|
||||||
import { AdminMenu } from '@/components/AdminMenu/AdminMenu'
|
import { AdminMenu } from '@/components/AdminMenu/AdminMenu'
|
||||||
|
import { fetchWorshipById } from '@/fetch/worship'
|
||||||
|
|
||||||
export default async function WorshipPage({ params }: { params: Promise<{id: string}>}) {
|
export default async function WorshipPage({ params }: { params: Promise<{id: string}>}) {
|
||||||
|
|
||||||
const id = (await params).id;
|
const id = (await params).id;
|
||||||
const res = await fetch(`http://localhost:3000/api/worship/${id}`);
|
const worship = await fetchWorshipById(id)
|
||||||
if (!res.ok) {
|
|
||||||
|
if (!worship) {
|
||||||
notFound()
|
notFound()
|
||||||
}
|
}
|
||||||
const authenticated = await isAuthenticated();
|
|
||||||
|
|
||||||
const worship = await res.json() as WorshipType;
|
const authenticated = await isAuthenticated();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|
@ -27,4 +27,4 @@ export default async function WorshipPage({ params }: { params: Promise<{id: str
|
||||||
/>
|
/>
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,30 +9,37 @@ import { HR } from '@/components/HorizontalRule/HorizontalRule'
|
||||||
import { TextDiv } from '@/components/Text/TextDiv'
|
import { TextDiv } from '@/components/Text/TextDiv'
|
||||||
import { Col } from '@/components/Flex/Col'
|
import { Col } from '@/components/Flex/Col'
|
||||||
import { Row } from '@/components/Flex/Row'
|
import { Row } from '@/components/Flex/Row'
|
||||||
import { RawHTML } from '@/components/RawHTML/RawHTML'
|
|
||||||
import { Blocks } from '@/compositions/Blocks/Blocks'
|
import { Blocks } from '@/compositions/Blocks/Blocks'
|
||||||
import { getPhoto } from '@/utils/dto/gallery'
|
import { getPhoto } from '@/utils/dto/gallery'
|
||||||
import { isAuthenticated } from '@/utils/auth'
|
import { isAuthenticated } from '@/utils/auth'
|
||||||
import { AdminMenu } from '@/components/AdminMenu/AdminMenu'
|
import { AdminMenu } from '@/components/AdminMenu/AdminMenu'
|
||||||
import { GroupEvents } from '@/compositions/GroupEvents/GroupEvents'
|
import { GroupEvents } from '@/compositions/GroupEvents/GroupEvents'
|
||||||
import { RichText } from '@payloadcms/richtext-lexical/react'
|
import { RichText } from '@payloadcms/richtext-lexical/react'
|
||||||
|
import { RefreshRouteOnSave } from '@/components/RefreshRouteOnSave/RefreshRouteOnSave'
|
||||||
|
import { draftMode } from 'next/headers'
|
||||||
|
|
||||||
export default async function GroupPage({ params }: { params: Promise<{slug: string}>}) {
|
export default async function GroupPage({ params }: { params: Promise<{slug: string}>}) {
|
||||||
|
|
||||||
const slug = (await params).slug
|
const slug = (await params).slug
|
||||||
const groups = await fetchGroup(slug)
|
const { isEnabled: isDraft } = await draftMode()
|
||||||
|
const group = await fetchGroup(slug, isDraft)
|
||||||
|
|
||||||
if(!groups || groups.docs.length === 0) {
|
if(!group) {
|
||||||
notFound();
|
notFound();
|
||||||
}
|
}
|
||||||
|
|
||||||
const {id, shortDescription, photo,name, content, text } = groups.docs[0]
|
|
||||||
const media = getPhoto("tablet", photo)
|
|
||||||
|
|
||||||
const authenticated = await isAuthenticated();
|
const authenticated = await isAuthenticated();
|
||||||
|
|
||||||
|
if(!authenticated && group._status !== "published") {
|
||||||
|
notFound();
|
||||||
|
}
|
||||||
|
|
||||||
|
const {id, shortDescription, photo, name, content, text } = group
|
||||||
|
const media = getPhoto("tablet", photo)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
{isDraft && <RefreshRouteOnSave />}
|
||||||
|
|
||||||
{ media &&
|
{ media &&
|
||||||
<ImageWithText
|
<ImageWithText
|
||||||
|
|
|
||||||
|
|
@ -1,94 +1,56 @@
|
||||||
import type { Metadata } from 'next'
|
import type { Metadata } from 'next'
|
||||||
import './globals.css'
|
import './globals.css'
|
||||||
import { Menu } from '@/components/Menu/Menu'
|
|
||||||
import { Footer } from '@/compositions/Footer/Footer'
|
import { Footer } from '@/compositions/Footer/Footer'
|
||||||
import { comment } from '@/app/(home)/layout-comment'
|
import { comment } from '@/app/(home)/layout-comment'
|
||||||
import { FONT_MAP, getFont } from '@/assets/fonts'
|
import { FONT_MAP, getFont } from '@/assets/fonts'
|
||||||
import { siteConfig } from '@/config/site'
|
import { siteConfig } from '@/config/site'
|
||||||
import { fetchDesign } from '@/fetch/design'
|
|
||||||
import { fetchSiteConfig } from '@/fetch/siteConfig'
|
|
||||||
import { FetchedMenu } from '@/components/Menu/FetchedMenu'
|
import { FetchedMenu } from '@/components/Menu/FetchedMenu'
|
||||||
|
|
||||||
export const dynamic = 'force-dynamic'
|
export const dynamic = 'force-dynamic'
|
||||||
|
|
||||||
export async function generateMetadata(): Promise<Metadata> {
|
export async function generateMetadata(): Promise<Metadata> {
|
||||||
let site
|
|
||||||
try {
|
|
||||||
site = await fetchSiteConfig()
|
|
||||||
} catch {
|
|
||||||
site = null
|
|
||||||
}
|
|
||||||
|
|
||||||
const name = site?.name || siteConfig.name
|
|
||||||
const shortName = site?.shortName || siteConfig.shortName
|
|
||||||
const description = site?.description || siteConfig.description
|
|
||||||
const url = site?.url || siteConfig.url
|
|
||||||
const ogImage = site?.ogImage || siteConfig.ogImage
|
|
||||||
const keywords =
|
|
||||||
site?.keywords?.map((k) => k.keyword) || siteConfig.keywords
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
title: {
|
title: {
|
||||||
default: name,
|
default: siteConfig.name,
|
||||||
template: `%s | ${shortName}`,
|
template: `%s | ${siteConfig.shortName}`,
|
||||||
},
|
},
|
||||||
description,
|
description: siteConfig.description,
|
||||||
keywords,
|
keywords: siteConfig.keywords,
|
||||||
metadataBase: new URL(url),
|
metadataBase: new URL(siteConfig.url),
|
||||||
openGraph: {
|
openGraph: {
|
||||||
title: name,
|
title: siteConfig.name,
|
||||||
description,
|
description: siteConfig.description,
|
||||||
url,
|
url: siteConfig.url,
|
||||||
siteName: name,
|
siteName: siteConfig.name,
|
||||||
images: [ogImage],
|
images: [siteConfig.ogImage],
|
||||||
locale: 'de_DE',
|
locale: 'de_DE',
|
||||||
type: 'website',
|
type: 'website',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const DESIGN_DEFAULTS = {
|
|
||||||
baseColor: '#016699',
|
|
||||||
shade1: '#67A3C2',
|
|
||||||
shade2: '#DDECF7',
|
|
||||||
shade3: '#eff6ff',
|
|
||||||
contrastColor: '#CE490F',
|
|
||||||
contrastShade1: '#DA764B',
|
|
||||||
borderRadius: '13px',
|
|
||||||
defaultFont: 'cairo',
|
|
||||||
headerFont: 'faustina',
|
|
||||||
}
|
|
||||||
|
|
||||||
export default async function RootLayout({
|
export default async function RootLayout({
|
||||||
children,
|
children,
|
||||||
}: Readonly<{
|
}: Readonly<{
|
||||||
children: React.ReactNode
|
children: React.ReactNode
|
||||||
}>) {
|
}>) {
|
||||||
let design
|
|
||||||
try {
|
|
||||||
design = await fetchDesign()
|
|
||||||
} catch {
|
|
||||||
design = null
|
|
||||||
}
|
|
||||||
|
|
||||||
const selectedDefaultFont = getFont(
|
const selectedDefaultFont = getFont(
|
||||||
design?.defaultFont || DESIGN_DEFAULTS.defaultFont,
|
siteConfig.defaultFont,
|
||||||
FONT_MAP.cairo,
|
FONT_MAP.cairo,
|
||||||
)
|
)
|
||||||
const selectedHeaderFont = getFont(
|
const selectedHeaderFont = getFont(
|
||||||
design?.headerFont || DESIGN_DEFAULTS.headerFont,
|
siteConfig.headerFont,
|
||||||
FONT_MAP.faustina,
|
FONT_MAP.faustina,
|
||||||
)
|
)
|
||||||
|
|
||||||
const themeStyle = {
|
const themeStyle = {
|
||||||
'--base-color': design?.baseColor || DESIGN_DEFAULTS.baseColor,
|
'--base-color': siteConfig.baseColor,
|
||||||
'--shade1': design?.shade1 || DESIGN_DEFAULTS.shade1,
|
'--shade1': siteConfig.shade1,
|
||||||
'--shade2': design?.shade2 || DESIGN_DEFAULTS.shade2,
|
'--shade2': siteConfig.shade2,
|
||||||
'--shade3': design?.shade3 || DESIGN_DEFAULTS.shade3,
|
'--shade3': siteConfig.shade3,
|
||||||
'--contrast-color': design?.contrastColor || DESIGN_DEFAULTS.contrastColor,
|
'--contrast-color': siteConfig.contrastColor,
|
||||||
'--contrast-shade1':
|
'--contrast-shade1': siteConfig.contrastShade1,
|
||||||
design?.contrastShade1 || DESIGN_DEFAULTS.contrastShade1,
|
'--border-radius': siteConfig.borderRadius,
|
||||||
'--border-radius': design?.borderRadius || DESIGN_DEFAULTS.borderRadius,
|
|
||||||
'--header-font': selectedHeaderFont.style.fontFamily,
|
'--header-font': selectedHeaderFont.style.fontFamily,
|
||||||
} as React.CSSProperties
|
} as React.CSSProperties
|
||||||
|
|
||||||
|
|
@ -97,11 +59,11 @@ export default async function RootLayout({
|
||||||
<body>
|
<body>
|
||||||
<div dangerouslySetInnerHTML={{ __html: comment }}></div>
|
<div dangerouslySetInnerHTML={{ __html: comment }}></div>
|
||||||
<FetchedMenu />
|
<FetchedMenu />
|
||||||
<main className={"mainContent"}>
|
<main className={'mainContent'}>
|
||||||
{children}
|
{children}
|
||||||
</main>
|
</main>
|
||||||
<Footer />
|
<Footer />
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,47 +1,33 @@
|
||||||
import { notFound } from 'next/navigation'
|
import { notFound } from 'next/navigation'
|
||||||
import { Event } from '@/payload-types'
|
|
||||||
import { EventPage } from '@/pageComponents/Event/Event'
|
import { EventPage } from '@/pageComponents/Event/Event'
|
||||||
import { stringify } from 'qs-esm'
|
|
||||||
import { getPhoto } from '@/utils/dto/gallery'
|
import { getPhoto } from '@/utils/dto/gallery'
|
||||||
import { cookies } from 'next/headers'
|
|
||||||
import { isAuthenticated } from '@/utils/auth'
|
import { isAuthenticated } from '@/utils/auth'
|
||||||
|
import { fetchEventById } from '@/fetch/events'
|
||||||
|
import { RefreshRouteOnSave } from '@/components/RefreshRouteOnSave/RefreshRouteOnSave'
|
||||||
|
import { draftMode } from 'next/headers'
|
||||||
|
|
||||||
export default async function Page({ params }: { params: Promise<{id: string}>}) {
|
export default async function Page({ params }: { params: Promise<{id: string}>}) {
|
||||||
|
|
||||||
const id = (await params).id;
|
const id = (await params).id;
|
||||||
const stringifiedQuery = stringify(
|
const { isEnabled: isDraft } = await draftMode()
|
||||||
{
|
const event = await fetchEventById(id, isDraft)
|
||||||
select: {
|
|
||||||
title: true,
|
|
||||||
date: true,
|
|
||||||
createdAt: true,
|
|
||||||
cancelled: true,
|
|
||||||
isRecurring: true,
|
|
||||||
location: true,
|
|
||||||
description: true,
|
|
||||||
shortDescription: true,
|
|
||||||
contact: true,
|
|
||||||
flyer: true,
|
|
||||||
photo: true,
|
|
||||||
group: true,
|
|
||||||
rsvpLink: true
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{ addQueryPrefix: true },
|
|
||||||
)
|
|
||||||
const res = await fetch(`http://localhost:3000/api/event/${id}${stringifiedQuery}`);
|
|
||||||
|
|
||||||
if (!res.ok) {
|
if (!event) {
|
||||||
notFound()
|
notFound()
|
||||||
}
|
}
|
||||||
|
|
||||||
const authenticated = await isAuthenticated();
|
const authenticated = await isAuthenticated();
|
||||||
|
|
||||||
const event = await res.json() as Event;
|
if(!authenticated && event._status !== "published") {
|
||||||
|
notFound();
|
||||||
|
}
|
||||||
|
|
||||||
const group = Array.isArray(event.group) && event.group.length > 0 && typeof event.group[0] == "object" ? event.group[0].slug : undefined;
|
const group = Array.isArray(event.group) && event.group.length > 0 && typeof event.group[0] == "object" ? event.group[0].slug : undefined;
|
||||||
const photo = getPhoto("tablet", event.photo);
|
const photo = getPhoto("tablet", event.photo);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
<>
|
||||||
|
{isDraft && <RefreshRouteOnSave />}
|
||||||
<EventPage
|
<EventPage
|
||||||
id={event.id}
|
id={event.id}
|
||||||
title={event.title}
|
title={event.title}
|
||||||
|
|
@ -59,5 +45,6 @@ export default async function Page({ params }: { params: Promise<{id: string}>})
|
||||||
photo={photo}
|
photo={photo}
|
||||||
isAuthenticated={authenticated}
|
isAuthenticated={authenticated}
|
||||||
/>
|
/>
|
||||||
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,6 @@ import { HeadingFeatureClient as HeadingFeatureClient_e70f5e05f09f93e00b997edb1e
|
||||||
import { UnderlineFeatureClient as UnderlineFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client'
|
import { UnderlineFeatureClient as UnderlineFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client'
|
||||||
import { BoldFeatureClient as BoldFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client'
|
import { BoldFeatureClient as BoldFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client'
|
||||||
import { ItalicFeatureClient as ItalicFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client'
|
import { ItalicFeatureClient as ItalicFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client'
|
||||||
import { default as default_5697d501e5648edd0cfd5c3685214437 } from '@/admin/components/ColorPicker/ColorPicker'
|
|
||||||
import { default as default_9bcae99938dc292be0063ce32055e14c } from '../../../components/Logo/Logo'
|
import { default as default_9bcae99938dc292be0063ce32055e14c } from '../../../components/Logo/Logo'
|
||||||
import { GcsClientUploadHandler as GcsClientUploadHandler_06e62ca02c7c441053a9b643e5545934 } from '@payloadcms/storage-gcs/client'
|
import { GcsClientUploadHandler as GcsClientUploadHandler_06e62ca02c7c441053a9b643e5545934 } from '@payloadcms/storage-gcs/client'
|
||||||
import { CollectionCards as CollectionCards_f9c02e79a4aed9a3924487c0cd4cafb1 } from '@payloadcms/next/rsc'
|
import { CollectionCards as CollectionCards_f9c02e79a4aed9a3924487c0cd4cafb1 } from '@payloadcms/next/rsc'
|
||||||
|
|
@ -32,7 +31,6 @@ export const importMap = {
|
||||||
"@payloadcms/richtext-lexical/client#UnderlineFeatureClient": UnderlineFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
"@payloadcms/richtext-lexical/client#UnderlineFeatureClient": UnderlineFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||||
"@payloadcms/richtext-lexical/client#BoldFeatureClient": BoldFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
"@payloadcms/richtext-lexical/client#BoldFeatureClient": BoldFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||||
"@payloadcms/richtext-lexical/client#ItalicFeatureClient": ItalicFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
"@payloadcms/richtext-lexical/client#ItalicFeatureClient": ItalicFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||||
"@/admin/components/ColorPicker/ColorPicker#default": default_5697d501e5648edd0cfd5c3685214437,
|
|
||||||
"/components/Logo/Logo#default": default_9bcae99938dc292be0063ce32055e14c,
|
"/components/Logo/Logo#default": default_9bcae99938dc292be0063ce32055e14c,
|
||||||
"@payloadcms/storage-gcs/client#GcsClientUploadHandler": GcsClientUploadHandler_06e62ca02c7c441053a9b643e5545934,
|
"@payloadcms/storage-gcs/client#GcsClientUploadHandler": GcsClientUploadHandler_06e62ca02c7c441053a9b643e5545934,
|
||||||
"@payloadcms/next/rsc#CollectionCards": CollectionCards_f9c02e79a4aed9a3924487c0cd4cafb1
|
"@payloadcms/next/rsc#CollectionCards": CollectionCards_f9c02e79a4aed9a3924487c0cd4cafb1
|
||||||
|
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
export const FONT_OPTIONS = [
|
|
||||||
{ label: 'Cairo (Sans-Serif)', value: 'cairo' },
|
|
||||||
{ label: 'Roboto (Sans-Serif)', value: 'roboto' },
|
|
||||||
{ label: 'Open Sans (Sans-Serif)', value: 'openSans' },
|
|
||||||
{ label: 'Lato (Sans-Serif)', value: 'lato' },
|
|
||||||
{ label: 'Nunito (Sans-Serif)', value: 'nunito' },
|
|
||||||
{ label: 'Raleway (Sans-Serif)', value: 'raleway' },
|
|
||||||
{ label: 'Faustina (Serif)', value: 'faustina' },
|
|
||||||
{ label: 'Merriweather (Serif)', value: 'merriweather' },
|
|
||||||
{ label: 'Source Sans 3 (Sans-Serif)', value: 'sourceSans3' },
|
|
||||||
{ label: 'Playfair Display (Serif)', value: 'playfairDisplay' },
|
|
||||||
{ label: 'Lora (Serif)', value: 'lora' },
|
|
||||||
{ label: 'Crimson Text (Serif)', value: 'crimsonText' },
|
|
||||||
{ label: 'EB Garamond (Serif)', value: 'ebGaramond' },
|
|
||||||
] as const
|
|
||||||
|
|
@ -7,6 +7,7 @@ import { GalleryBlock } from '@/collections/blocks/Gallery'
|
||||||
import { DonationBlock } from '@/collections/blocks/Donation'
|
import { DonationBlock } from '@/collections/blocks/Donation'
|
||||||
import { ButtonBlock } from '@/collections/blocks/Button'
|
import { ButtonBlock } from '@/collections/blocks/Button'
|
||||||
import { YoutubePlayerBlock } from '@/collections/blocks/YoutubePlayer'
|
import { YoutubePlayerBlock } from '@/collections/blocks/YoutubePlayer'
|
||||||
|
import { isPublishedPublic } from '@/collections/access/public'
|
||||||
|
|
||||||
|
|
||||||
export const Blog: CollectionConfig = {
|
export const Blog: CollectionConfig = {
|
||||||
|
|
@ -117,9 +118,17 @@ export const Blog: CollectionConfig = {
|
||||||
admin: {
|
admin: {
|
||||||
useAsTitle: 'title',
|
useAsTitle: 'title',
|
||||||
hidden: hide,
|
hidden: hide,
|
||||||
|
livePreview: {
|
||||||
|
url: ({ data }) => `/api/draft?url=/blog/${data.id}`,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
versions: {
|
||||||
|
drafts: {
|
||||||
|
validate: true
|
||||||
|
}
|
||||||
},
|
},
|
||||||
access: {
|
access: {
|
||||||
read: () => true,
|
read: isPublishedPublic(),
|
||||||
create: isAdminOrEmployee(),
|
create: isAdminOrEmployee(),
|
||||||
update: isAdminOrEmployee(),
|
update: isAdminOrEmployee(),
|
||||||
delete: isAdminOrEmployee(),
|
delete: isAdminOrEmployee(),
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import { CollectionConfig } from 'payload'
|
import { CollectionConfig } from 'payload'
|
||||||
import { stringify } from 'qs-esm'
|
import { Group, User } from '@/payload-types'
|
||||||
import { Event, Group, User } from '@/payload-types'
|
import { fetchEventById } from '@/fetch/events'
|
||||||
|
import { isPublishedPublic } from '@/collections/access/public'
|
||||||
|
|
||||||
export const Events: CollectionConfig = {
|
export const Events: CollectionConfig = {
|
||||||
slug: 'event',
|
slug: 'event',
|
||||||
|
|
@ -182,9 +183,17 @@ export const Events: CollectionConfig = {
|
||||||
],
|
],
|
||||||
admin: {
|
admin: {
|
||||||
useAsTitle: 'title',
|
useAsTitle: 'title',
|
||||||
|
livePreview: {
|
||||||
|
url: ({ data }) => `/api/draft?url=/veranstaltungen/${data.id}`,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
versions: {
|
||||||
|
drafts: {
|
||||||
|
validate: true
|
||||||
|
},
|
||||||
},
|
},
|
||||||
access: {
|
access: {
|
||||||
read: () => true,
|
read: isPublishedPublic(),
|
||||||
// admins and employees can delete, others only if they are member of the group
|
// admins and employees can delete, others only if they are member of the group
|
||||||
delete: async ({ req: { user }, id }) => {
|
delete: async ({ req: { user }, id }) => {
|
||||||
if (!user) {
|
if (!user) {
|
||||||
|
|
@ -198,7 +207,7 @@ export const Events: CollectionConfig = {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
const event = await fetchEvent(id)
|
const event = await fetchEventById(id)
|
||||||
if (hasGroup(user, event)) {
|
if (hasGroup(user, event)) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
@ -235,20 +244,3 @@ const hasGroup = (user: null | User , data: Partial<any> | undefined) => {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Fetch event
|
|
||||||
* @param id
|
|
||||||
*/
|
|
||||||
const fetchEvent = async (id: string): Promise<undefined|Event> => {
|
|
||||||
const stringifiedQuery = stringify(
|
|
||||||
{
|
|
||||||
select: {
|
|
||||||
group: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{ addQueryPrefix: true },
|
|
||||||
)
|
|
||||||
const res = await fetch(`http://localhost:3000/api/event/${id}${stringifiedQuery}`);
|
|
||||||
if (!res.ok) return undefined
|
|
||||||
return res.json()
|
|
||||||
}
|
|
||||||
|
|
@ -7,6 +7,7 @@ import { DocumentBlock } from '@/collections/blocks/Document'
|
||||||
import { DonationBlock } from '@/collections/blocks/Donation'
|
import { DonationBlock } from '@/collections/blocks/Donation'
|
||||||
import { ButtonBlock } from '@/collections/blocks/Button'
|
import { ButtonBlock } from '@/collections/blocks/Button'
|
||||||
import { YoutubePlayerBlock } from '@/collections/blocks/YoutubePlayer'
|
import { YoutubePlayerBlock } from '@/collections/blocks/YoutubePlayer'
|
||||||
|
import { isPublishedPublic } from '@/collections/access/public'
|
||||||
|
|
||||||
export const Groups: CollectionConfig = {
|
export const Groups: CollectionConfig = {
|
||||||
slug: 'group',
|
slug: 'group',
|
||||||
|
|
@ -92,9 +93,17 @@ export const Groups: CollectionConfig = {
|
||||||
},
|
},
|
||||||
admin: {
|
admin: {
|
||||||
useAsTitle: 'name',
|
useAsTitle: 'name',
|
||||||
|
livePreview: {
|
||||||
|
url: ({ data }) => `/api/draft?url=/gruppe/${data.slug}`,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
versions: {
|
||||||
|
drafts: {
|
||||||
|
validate: true
|
||||||
|
},
|
||||||
},
|
},
|
||||||
access: {
|
access: {
|
||||||
read: () => true,
|
read: isPublishedPublic(),
|
||||||
create: isAdminOrEmployee(),
|
create: isAdminOrEmployee(),
|
||||||
update: ({ req, id }) => {
|
update: ({ req, id }) => {
|
||||||
if (!req.user) {
|
if (!req.user) {
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ import { MassTimesBlock } from '@/collections/blocks/MassTimes'
|
||||||
import { CollapsibleImageWithTextBlock } from '@/collections/blocks/CollapsibleImageWithText'
|
import { CollapsibleImageWithTextBlock } from '@/collections/blocks/CollapsibleImageWithText'
|
||||||
import { EventsBlock } from '@/collections/blocks/Events'
|
import { EventsBlock } from '@/collections/blocks/Events'
|
||||||
import { PublicationAndNewsletterBlock } from '@/collections/blocks/PublicationAndNewsletter'
|
import { PublicationAndNewsletterBlock } from '@/collections/blocks/PublicationAndNewsletter'
|
||||||
|
import { isPublishedPublic } from '@/collections/access/public'
|
||||||
|
|
||||||
export const Pages: CollectionConfig = {
|
export const Pages: CollectionConfig = {
|
||||||
slug: 'pages',
|
slug: 'pages',
|
||||||
|
|
@ -94,18 +95,24 @@ export const Pages: CollectionConfig = {
|
||||||
HorizontalRuleBlock,
|
HorizontalRuleBlock,
|
||||||
BlogSliderBlock,
|
BlogSliderBlock,
|
||||||
MassTimesBlock,
|
MassTimesBlock,
|
||||||
CollapsibleImageWithTextBlock,
|
|
||||||
EventsBlock,
|
EventsBlock,
|
||||||
PublicationAndNewsletterBlock,
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
admin: {
|
admin: {
|
||||||
useAsTitle: 'title',
|
useAsTitle: 'title',
|
||||||
hidden: hide,
|
hidden: hide,
|
||||||
|
livePreview: {
|
||||||
|
url: ({ data }) => `/api/draft?url=/${data.slug}`,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
versions: {
|
||||||
|
drafts: {
|
||||||
|
validate: true
|
||||||
|
},
|
||||||
},
|
},
|
||||||
access: {
|
access: {
|
||||||
read: () => true,
|
read: isPublishedPublic(),
|
||||||
create: isAdminOrEmployee(),
|
create: isAdminOrEmployee(),
|
||||||
update: isAdminOrEmployee(),
|
update: isAdminOrEmployee(),
|
||||||
delete: isAdminOrEmployee(),
|
delete: isAdminOrEmployee(),
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import { DocumentBlock } from '@/collections/blocks/Document'
|
||||||
import { DonationBlock } from '@/collections/blocks/Donation'
|
import { DonationBlock } from '@/collections/blocks/Donation'
|
||||||
import { YoutubePlayerBlock } from '@/collections/blocks/YoutubePlayer'
|
import { YoutubePlayerBlock } from '@/collections/blocks/YoutubePlayer'
|
||||||
import { DonationAppeal } from '@/collections/blocks/DonationAppeal'
|
import { DonationAppeal } from '@/collections/blocks/DonationAppeal'
|
||||||
|
import { isPublishedPublic } from '@/collections/access/public'
|
||||||
|
|
||||||
export const Parish: CollectionConfig = {
|
export const Parish: CollectionConfig = {
|
||||||
slug: 'parish',
|
slug: 'parish',
|
||||||
|
|
@ -163,10 +164,18 @@ export const Parish: CollectionConfig = {
|
||||||
],
|
],
|
||||||
admin: {
|
admin: {
|
||||||
useAsTitle: 'name',
|
useAsTitle: 'name',
|
||||||
hidden: hide
|
hidden: hide,
|
||||||
|
livePreview: {
|
||||||
|
url: ({ data }) => `/api/draft?url=/gemeinde/${data.slug}`,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
versions: {
|
||||||
|
drafts: {
|
||||||
|
validate: true
|
||||||
|
},
|
||||||
},
|
},
|
||||||
access: {
|
access: {
|
||||||
read: () => true,
|
read: isPublishedPublic(),
|
||||||
create: isAdmin(),
|
create: isAdmin(),
|
||||||
update: isAdminOrEmployee(),
|
update: isAdminOrEmployee(),
|
||||||
delete: isAdmin(),
|
delete: isAdmin(),
|
||||||
|
|
|
||||||
17
src/collections/access/public.ts
Normal file
17
src/collections/access/public.ts
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
import type { Access } from 'payload'
|
||||||
|
|
||||||
|
export const isPublishedPublic = (): Access =>
|
||||||
|
({ req: { user } }) => {
|
||||||
|
// If there is a user logged in,
|
||||||
|
// let them retrieve all documents
|
||||||
|
if (user) return true
|
||||||
|
|
||||||
|
// If there is no user,
|
||||||
|
// restrict the documents that are returned
|
||||||
|
// to only those where `_status` is equal to `published`
|
||||||
|
return {
|
||||||
|
_status: {
|
||||||
|
equals: 'published',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -33,12 +33,7 @@ export const ContactformBlock: Block = {
|
||||||
{
|
{
|
||||||
name: 'email',
|
name: 'email',
|
||||||
type: 'email',
|
type: 'email',
|
||||||
// defaultValue: async ({ req }) => {
|
defaultValue: siteConfig.email,
|
||||||
// const config = await req.payload.findGlobal({
|
|
||||||
// slug: 'site-config',
|
|
||||||
// })
|
|
||||||
// return config?.email || siteConfig.email
|
|
||||||
// },
|
|
||||||
required: true,
|
required: true,
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ export const CollapsibleArrow = ({direction, onClick, stroke = 2}: CollapsibleAr
|
||||||
className={style}
|
className={style}
|
||||||
onClick={onClick}
|
onClick={onClick}
|
||||||
>
|
>
|
||||||
<path d="M1 1L5.28326 8.50159C5.6627 9.16614 6.3373 9.16614 6.71674 8.50159L11 1" stroke="#426156"
|
<path d="M1 1L5.28326 8.50159C5.6627 9.16614 6.3373 9.16614 6.71674 8.50159L11 1" stroke="var(--base-color)"
|
||||||
strokeWidth={stroke} />
|
strokeWidth={stroke} />
|
||||||
</svg>
|
</svg>
|
||||||
)
|
)
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
15
src/components/RefreshRouteOnSave/RefreshRouteOnSave.tsx
Normal file
15
src/components/RefreshRouteOnSave/RefreshRouteOnSave.tsx
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
'use client'
|
||||||
|
import { RefreshRouteOnSave as PayloadLivePreview } from '@payloadcms/live-preview-react'
|
||||||
|
import { useRouter } from 'next/navigation.js'
|
||||||
|
import React from 'react'
|
||||||
|
|
||||||
|
export const RefreshRouteOnSave: React.FC = () => {
|
||||||
|
const router = useRouter()
|
||||||
|
|
||||||
|
return (
|
||||||
|
<PayloadLivePreview
|
||||||
|
refresh={() => router.refresh()}
|
||||||
|
serverURL={process.env.NEXT_PUBLIC_SERVER_URL || ''}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
@ -193,29 +193,29 @@ export function Blocks({ content }: BlocksProps) {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item.blockType === 'collapsibleImageWithText') {
|
// if (item.blockType === 'collapsibleImageWithText') {
|
||||||
const imageUrl = typeof item.image === 'object' && item.image?.url
|
// const imageUrl = typeof item.image === 'object' && item.image?.url
|
||||||
? item.image.url
|
// ? item.image.url
|
||||||
: ''
|
// : ''
|
||||||
const bg = item.backgroundColor === 'none'
|
// const bg = item.backgroundColor === 'none'
|
||||||
? undefined
|
// ? undefined
|
||||||
: item.backgroundColor as 'soft' | 'off-white' | undefined
|
// : item.backgroundColor as 'soft' | 'off-white' | undefined
|
||||||
return (
|
// return (
|
||||||
<CollapsibleImageWithText
|
// <CollapsibleImageWithText
|
||||||
key={item.id}
|
// key={item.id}
|
||||||
title={item.title}
|
// title={item.title}
|
||||||
text={item.text}
|
// text={item.text}
|
||||||
image={imageUrl}
|
// image={imageUrl}
|
||||||
backgroundColor={bg}
|
// backgroundColor={bg}
|
||||||
schema={item.schema as 'base' | 'contrast' | undefined}
|
// schema={item.schema as 'base' | 'contrast' | undefined}
|
||||||
content={
|
// content={
|
||||||
item.content
|
// item.content
|
||||||
? <HTMLText width={'1/2'} data={item.content} />
|
// ? <HTMLText width={'1/2'} data={item.content} />
|
||||||
: <></>
|
// : <></>
|
||||||
}
|
// }
|
||||||
/>
|
// />
|
||||||
)
|
// )
|
||||||
}
|
// }
|
||||||
|
|
||||||
if (item.blockType === 'events') {
|
if (item.blockType === 'events') {
|
||||||
return (
|
return (
|
||||||
|
|
@ -227,9 +227,9 @@ export function Blocks({ content }: BlocksProps) {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item.blockType === 'publicationAndNewsletter') {
|
// if (item.blockType === 'publicationAndNewsletter') {
|
||||||
return <PublicationAndNewsletter key={item.id} />
|
// return <PublicationAndNewsletter key={item.id} />
|
||||||
}
|
// }
|
||||||
})}
|
})}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ export const Footer = async () => {
|
||||||
<br />
|
<br />
|
||||||
<Logo
|
<Logo
|
||||||
color={'#ffffff'}
|
color={'#ffffff'}
|
||||||
textColor={'#426156'}
|
textColor={'var(--base-color)'}
|
||||||
withText={true}
|
withText={true}
|
||||||
height={100}
|
height={100}
|
||||||
/>
|
/>
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,53 @@
|
||||||
export const siteConfig = {
|
import dreikoenige from '../../sites/dreikoenige/config'
|
||||||
name: 'Katholische Pfarrei Heilige Drei Könige Berlin',
|
import chemnitz from '../../sites/chemnitz/config'
|
||||||
shortName: 'Hl. Drei Könige',
|
|
||||||
description:
|
export type FontKey =
|
||||||
'Katholische Pfarrei Heilige Drei Könige in Berlin – Gottesdienste, Veranstaltungen, Sakramente und Gemeindeleben.',
|
| 'cairo'
|
||||||
url: 'https://dreikoenige.berlin',
|
| 'roboto'
|
||||||
keywords: [
|
| 'openSans'
|
||||||
'Katholische Pfarrei',
|
| 'lato'
|
||||||
'Heilige Drei Könige',
|
| 'nunito'
|
||||||
'Berlin',
|
| 'raleway'
|
||||||
'Gottesdienst',
|
| 'faustina'
|
||||||
'Sakramente',
|
| 'merriweather'
|
||||||
'Veranstaltungen',
|
| 'sourceSans3'
|
||||||
'Gemeinde',
|
| 'playfairDisplay'
|
||||||
],
|
| 'lora'
|
||||||
ogImage: '/og-logo.svg',
|
| 'crimsonText'
|
||||||
email: 'kontakt@dreikoenige.berlin',
|
| 'ebGaramond'
|
||||||
}
|
|
||||||
|
export interface SiteConfig {
|
||||||
|
id: string
|
||||||
|
name: string
|
||||||
|
shortName: string
|
||||||
|
description: string
|
||||||
|
url: string
|
||||||
|
email: string
|
||||||
|
keywords: string[]
|
||||||
|
ogImage: string
|
||||||
|
baseColor: string
|
||||||
|
shade1: string
|
||||||
|
shade2: string
|
||||||
|
shade3: string
|
||||||
|
contrastColor: string
|
||||||
|
contrastShade1: string
|
||||||
|
defaultFont: FontKey
|
||||||
|
headerFont: FontKey
|
||||||
|
borderRadius: string
|
||||||
|
}
|
||||||
|
|
||||||
|
const sites: Record<string, SiteConfig> = {
|
||||||
|
dreikoenige,
|
||||||
|
chemnitz,
|
||||||
|
}
|
||||||
|
|
||||||
|
const siteId = process.env.NEXT_PUBLIC_SITE_ID || 'dreikoenige'
|
||||||
|
|
||||||
|
const config = sites[siteId]
|
||||||
|
if (!config) {
|
||||||
|
throw new Error(
|
||||||
|
`Unknown SITE_ID "${siteId}". Available: ${Object.keys(sites).join(', ')}`,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export const siteConfig: SiteConfig = config
|
||||||
|
|
|
||||||
|
|
@ -1,87 +1,75 @@
|
||||||
import { stringify } from 'qs-esm'
|
import { getPayload } from 'payload'
|
||||||
|
import config from '@/payload.config'
|
||||||
import { Announcement } from '@/payload-types'
|
import { Announcement } from '@/payload-types'
|
||||||
import { PaginatedDocs } from 'payload'
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetch last announcement for a parish
|
* Fetch last announcement for a parish
|
||||||
*/
|
*/
|
||||||
export const fetchLastAnnouncement = async (parishId: string): Promise<Announcement | undefined> => {
|
export const fetchLastAnnouncement = async (
|
||||||
const date = new Date();
|
parishId: string,
|
||||||
|
): Promise<Announcement | undefined> => {
|
||||||
|
const date = new Date()
|
||||||
date.setDate(date.getDate() - 14)
|
date.setDate(date.getDate() - 14)
|
||||||
const tomorrow = new Date();
|
const tomorrow = new Date()
|
||||||
tomorrow.setDate(tomorrow.getDate() + 1);
|
tomorrow.setDate(tomorrow.getDate() + 1)
|
||||||
tomorrow.setHours(23,59,59,59);
|
tomorrow.setHours(23, 59, 59, 59)
|
||||||
|
|
||||||
const query: any = {
|
const payload = await getPayload({ config })
|
||||||
and: [
|
const result = await payload.find({
|
||||||
{
|
collection: 'announcement',
|
||||||
parish: {
|
sort: '-date',
|
||||||
equals: parishId
|
where: {
|
||||||
}
|
and: [
|
||||||
},
|
{
|
||||||
{
|
parish: {
|
||||||
date: {
|
equals: parishId,
|
||||||
greater_than_equal: date.toISOString(),
|
},
|
||||||
}
|
},
|
||||||
},
|
{
|
||||||
{
|
date: {
|
||||||
date: {
|
greater_than_equal: date.toISOString(),
|
||||||
less_than_equal: tomorrow.toISOString()
|
},
|
||||||
}
|
},
|
||||||
}
|
{
|
||||||
]
|
date: {
|
||||||
}
|
less_than_equal: tomorrow.toISOString(),
|
||||||
|
},
|
||||||
const stringifiedQuery = stringify(
|
},
|
||||||
{
|
],
|
||||||
sort: "-date",
|
|
||||||
where: query,
|
|
||||||
limit: 1,
|
|
||||||
},
|
},
|
||||||
{ addQueryPrefix: true },
|
limit: 1,
|
||||||
)
|
})
|
||||||
|
return result.docs[0]
|
||||||
const response = await fetch(`http://localhost:3000/api/announcement${stringifiedQuery}`)
|
|
||||||
if (!response.ok) return undefined
|
|
||||||
const announcements = await response.json() as PaginatedDocs<Announcement>
|
|
||||||
return announcements.docs[0]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetch the last few announcements
|
* Fetch the last few announcements
|
||||||
*/
|
*/
|
||||||
export const fetchLastAnnouncements = async (): Promise<PaginatedDocs<Announcement> | undefined> => {
|
export const fetchLastAnnouncements = async () => {
|
||||||
const date = new Date();
|
const date = new Date()
|
||||||
date.setDate(date.getDate() - 14)
|
date.setDate(date.getDate() - 14)
|
||||||
const tomorrow = new Date();
|
const tomorrow = new Date()
|
||||||
tomorrow.setDate(tomorrow.getDate() + 1);
|
tomorrow.setDate(tomorrow.getDate() + 1)
|
||||||
tomorrow.setHours(23,59,59,59);
|
tomorrow.setHours(23, 59, 59, 59)
|
||||||
|
|
||||||
const query: any = {
|
const payload = await getPayload({ config })
|
||||||
and: [
|
return payload.find({
|
||||||
{
|
collection: 'announcement',
|
||||||
date: {
|
sort: '-date',
|
||||||
greater_than_equal: date.toISOString(),
|
where: {
|
||||||
}
|
and: [
|
||||||
},
|
{
|
||||||
{
|
date: {
|
||||||
date: {
|
greater_than_equal: date.toISOString(),
|
||||||
less_than_equal: tomorrow.toISOString()
|
},
|
||||||
}
|
},
|
||||||
}
|
{
|
||||||
]
|
date: {
|
||||||
}
|
less_than_equal: tomorrow.toISOString(),
|
||||||
|
},
|
||||||
const stringifiedQuery = stringify(
|
},
|
||||||
{
|
],
|
||||||
sort: "-date",
|
|
||||||
where: query,
|
|
||||||
limit: 3,
|
|
||||||
},
|
},
|
||||||
{ addQueryPrefix: true },
|
limit: 3,
|
||||||
)
|
})
|
||||||
|
}
|
||||||
const response = await fetch(`http://localhost:3000/api/announcement${stringifiedQuery}`)
|
|
||||||
if (!response.ok) return undefined
|
|
||||||
return await response.json() as PaginatedDocs<Announcement>
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -1,73 +1,81 @@
|
||||||
import { Blog } from '@/payload-types'
|
import { getPayload } from 'payload'
|
||||||
import { PaginatedDocs } from 'payload'
|
import config from '@/payload.config'
|
||||||
import { stringify } from 'qs-esm'
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetches blog posts based on given criteria.
|
* Fetches blog posts based on given criteria.
|
||||||
*
|
*
|
||||||
* @param {boolean} displayOnFrontpage - Indicates whether to display posts on the front page.
|
* @param {boolean} displayOnFrontpage - Indicates whether to display posts on the front page.
|
||||||
* @returns {Promise<PaginatedDocs<Blog> | undefined>} - A Promise that resolves to the paginated list of blog posts, or undefined if an error occurs.
|
|
||||||
*/
|
*/
|
||||||
export const fetchBlogPosts = async (displayOnFrontpage: boolean): Promise<PaginatedDocs<Blog> | undefined> => {
|
export const fetchBlogPosts = async (displayOnFrontpage: boolean) => {
|
||||||
const today = new Date();
|
const today = new Date()
|
||||||
today.setHours(23, 59);
|
today.setHours(23, 59)
|
||||||
|
|
||||||
const query: any =
|
const query: any = {
|
||||||
{
|
and: [
|
||||||
sort: "-date",
|
{
|
||||||
select: {
|
'_status': {
|
||||||
title: true,
|
equals: 'published',
|
||||||
date: true,
|
}
|
||||||
photo: true,
|
|
||||||
content: displayOnFrontpage ? undefined : true, // hack to fetch content only for the `/blog` page
|
|
||||||
},
|
},
|
||||||
where: {
|
{
|
||||||
and: [
|
or: [
|
||||||
{
|
{
|
||||||
or: [
|
'configuration.displayFromDate': {
|
||||||
{
|
equals: null,
|
||||||
"configuration.displayFromDate": {
|
},
|
||||||
equals: null
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"configuration.displayFromDate": {
|
|
||||||
less_than_equal: today.toISOString(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
or: [
|
'configuration.displayFromDate': {
|
||||||
{
|
less_than_equal: today.toISOString(),
|
||||||
"configuration.displayTillDate": {
|
},
|
||||||
equals: null
|
},
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"configuration.displayTillDate": {
|
|
||||||
greater_than_equal: today.toISOString(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
limit: 18
|
{
|
||||||
};
|
or: [
|
||||||
|
{
|
||||||
|
'configuration.displayTillDate': {
|
||||||
|
equals: null,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'configuration.displayTillDate': {
|
||||||
|
greater_than_equal: today.toISOString(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
if(displayOnFrontpage) {
|
if (displayOnFrontpage) {
|
||||||
query.where.and.push({
|
query.and.push({
|
||||||
"configuration.showOnFrontpage": {
|
'configuration.showOnFrontpage': {
|
||||||
equals: true
|
equals: true,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const stringifiedQuery = stringify(query, {addQueryPrefix: true})
|
const payload = await getPayload({ config })
|
||||||
|
return payload.find({
|
||||||
|
collection: 'blog',
|
||||||
|
sort: '-date',
|
||||||
|
select: {
|
||||||
|
title: true,
|
||||||
|
date: true,
|
||||||
|
photo: true,
|
||||||
|
content: displayOnFrontpage ? undefined : true,
|
||||||
|
},
|
||||||
|
where: query,
|
||||||
|
limit: 18,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function fetchBlog(id: string, draft: boolean) {
|
||||||
const resp = await fetch(`http://localhost:3000/api/blog${stringifiedQuery}`);
|
const payload = await getPayload({ config })
|
||||||
if (!resp.ok) return undefined;
|
return await payload.findByID({
|
||||||
return resp.json();
|
collection: 'blog',
|
||||||
|
id: id,
|
||||||
|
draft,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
@ -1,89 +1,75 @@
|
||||||
import { stringify } from 'qs-esm'
|
import { getPayload } from 'payload'
|
||||||
import { PaginatedDocs } from 'payload'
|
import config from '@/payload.config'
|
||||||
import { Calendar } from '@/payload-types'
|
import { Calendar } from '@/payload-types'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetch last calendar for a parish
|
* Fetch last calendar for a parish
|
||||||
*/
|
*/
|
||||||
export const fetchLastCalendar = async (parishId: string): Promise<Calendar | undefined> => {
|
export const fetchLastCalendar = async (
|
||||||
const date = new Date();
|
parishId: string,
|
||||||
date.setDate(date.getDate() - 14);
|
): Promise<Calendar | undefined> => {
|
||||||
const tomorrow = new Date();
|
const date = new Date()
|
||||||
tomorrow.setDate(tomorrow.getDate() + 1);
|
date.setDate(date.getDate() - 14)
|
||||||
tomorrow.setHours(23,59,59,59);
|
const tomorrow = new Date()
|
||||||
|
tomorrow.setDate(tomorrow.getDate() + 1)
|
||||||
|
tomorrow.setHours(23, 59, 59, 59)
|
||||||
|
|
||||||
const query: any = {
|
const payload = await getPayload({ config })
|
||||||
and: [
|
const result = await payload.find({
|
||||||
{
|
collection: 'calendar',
|
||||||
parish: {
|
sort: '-date',
|
||||||
equals: parishId
|
where: {
|
||||||
}
|
and: [
|
||||||
},
|
{
|
||||||
{
|
parish: {
|
||||||
date: {
|
equals: parishId,
|
||||||
greater_than_equal: date.toISOString(),
|
},
|
||||||
}
|
},
|
||||||
},
|
{
|
||||||
{
|
date: {
|
||||||
date: {
|
greater_than_equal: date.toISOString(),
|
||||||
less_than_equal: tomorrow.toISOString()
|
},
|
||||||
}
|
},
|
||||||
}
|
{
|
||||||
]
|
date: {
|
||||||
|
less_than_equal: tomorrow.toISOString(),
|
||||||
}
|
},
|
||||||
|
},
|
||||||
const stringifiedQuery = stringify(
|
],
|
||||||
{
|
|
||||||
sort: "-date",
|
|
||||||
where: query,
|
|
||||||
limit: 1,
|
|
||||||
},
|
},
|
||||||
{ addQueryPrefix: true },
|
limit: 1,
|
||||||
)
|
})
|
||||||
|
return result.docs[0]
|
||||||
const response = await fetch(`http://localhost:3000/api/calendar${stringifiedQuery}`)
|
|
||||||
if (!response.ok) return undefined
|
|
||||||
const announcements = await response.json() as PaginatedDocs<Calendar>
|
|
||||||
return announcements.docs[0]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetch last calendars
|
* Fetch last calendars
|
||||||
*/
|
*/
|
||||||
export const fetchLastCalendars = async (): Promise<PaginatedDocs<Calendar> | undefined> => {
|
export const fetchLastCalendars = async () => {
|
||||||
const date = new Date();
|
const date = new Date()
|
||||||
date.setDate(date.getDate() - 14);
|
date.setDate(date.getDate() - 14)
|
||||||
const tomorrow = new Date();
|
const tomorrow = new Date()
|
||||||
tomorrow.setDate(tomorrow.getDate() + 1);
|
tomorrow.setDate(tomorrow.getDate() + 1)
|
||||||
tomorrow.setHours(23,59,59,59);
|
tomorrow.setHours(23, 59, 59, 59)
|
||||||
|
|
||||||
const query: any = {
|
const payload = await getPayload({ config })
|
||||||
and: [
|
return payload.find({
|
||||||
{
|
collection: 'calendar',
|
||||||
date: {
|
sort: '-date',
|
||||||
greater_than_equal: date.toISOString(),
|
where: {
|
||||||
}
|
and: [
|
||||||
},
|
{
|
||||||
{
|
date: {
|
||||||
date: {
|
greater_than_equal: date.toISOString(),
|
||||||
less_than_equal: tomorrow.toISOString()
|
},
|
||||||
}
|
},
|
||||||
}
|
{
|
||||||
]
|
date: {
|
||||||
|
less_than_equal: tomorrow.toISOString(),
|
||||||
}
|
},
|
||||||
|
},
|
||||||
const stringifiedQuery = stringify(
|
],
|
||||||
{
|
|
||||||
sort: "-date",
|
|
||||||
where: query,
|
|
||||||
limit: 3,
|
|
||||||
},
|
},
|
||||||
{ addQueryPrefix: true },
|
limit: 3,
|
||||||
)
|
})
|
||||||
|
}
|
||||||
const response = await fetch(`http://localhost:3000/api/calendar${stringifiedQuery}`)
|
|
||||||
if (!response.ok) return undefined
|
|
||||||
return await response.json() as PaginatedDocs<Calendar>
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
import { Church } from '@/payload-types'
|
|
||||||
import { PaginatedDocs } from 'payload'
|
|
||||||
import { stringify } from 'qs-esm'
|
|
||||||
|
|
||||||
export const fetchChurches = async (): Promise<PaginatedDocs<Church> | undefined> => {
|
|
||||||
const stringifiedQuery = stringify(
|
|
||||||
{
|
|
||||||
sort: "name",
|
|
||||||
limit: 50
|
|
||||||
},
|
|
||||||
{ addQueryPrefix: true },
|
|
||||||
)
|
|
||||||
|
|
||||||
const resp = await fetch(`http://localhost:3000/api/church`);
|
|
||||||
if (!resp.ok) return undefined;
|
|
||||||
return resp.json();
|
|
||||||
}
|
|
||||||
|
|
@ -1,27 +1,19 @@
|
||||||
import { PaginatedDocs } from 'payload'
|
import { getPayload } from 'payload'
|
||||||
import { Classified } from '@/payload-types'
|
import config from '@/payload.config'
|
||||||
import { stringify } from 'qs-esm'
|
|
||||||
|
|
||||||
export const fetchClassifieds = async (): Promise<PaginatedDocs<Classified> | undefined> => {
|
export const fetchClassifieds = async () => {
|
||||||
const date = new Date();
|
const date = new Date()
|
||||||
date.setHours(0, 0, 0, 0);
|
date.setHours(0, 0, 0, 0)
|
||||||
|
|
||||||
const query = {
|
const payload = await getPayload({ config })
|
||||||
until: {
|
return payload.find({
|
||||||
greater_than_equal: date.toISOString(),
|
collection: 'classifieds',
|
||||||
}
|
sort: 'date',
|
||||||
}
|
where: {
|
||||||
|
until: {
|
||||||
const stringifiedQuery = stringify(
|
greater_than_equal: date.toISOString(),
|
||||||
{
|
},
|
||||||
sort: "date",
|
|
||||||
where: query,
|
|
||||||
limit: 50
|
|
||||||
},
|
},
|
||||||
{ addQueryPrefix: true },
|
limit: 50,
|
||||||
)
|
})
|
||||||
|
|
||||||
const response = await fetch(`http://localhost:3000/api/classifieds${stringifiedQuery}`)
|
|
||||||
if (!response.ok) return undefined
|
|
||||||
return response.json()
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,13 @@
|
||||||
|
import { unstable_cache } from 'next/cache'
|
||||||
|
import { getPayload } from 'payload'
|
||||||
|
import config from '@/payload.config'
|
||||||
import { Menu } from '@/payload-types'
|
import { Menu } from '@/payload-types'
|
||||||
|
|
||||||
export const fetchMenu = async (): Promise<Menu> => {
|
export const fetchMenu = unstable_cache(
|
||||||
const rep = await fetch(
|
async (): Promise<Menu> => {
|
||||||
"http://localhost:3000/api/globals/menu",
|
const payload = await getPayload({ config })
|
||||||
{ next: { tags: ['menu'] } } // cache fetch result
|
return payload.findGlobal({ slug: 'menu' })
|
||||||
);
|
},
|
||||||
|
['menu'],
|
||||||
if (!rep.ok) {
|
{ tags: ['menu'] },
|
||||||
throw new Error("Could not fetch menu")
|
)
|
||||||
}
|
|
||||||
return await rep.json()
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
import { Design } from '@/payload-types'
|
|
||||||
|
|
||||||
export async function fetchDesign(): Promise<Design> {
|
|
||||||
const res = await fetch('http://localhost:3000/api/globals/design', {
|
|
||||||
next: { tags: ['design'] },
|
|
||||||
})
|
|
||||||
|
|
||||||
if (!res.ok) {
|
|
||||||
throw new Error('Could not fetch design')
|
|
||||||
}
|
|
||||||
|
|
||||||
return res.json()
|
|
||||||
}
|
|
||||||
|
|
@ -1,21 +1,17 @@
|
||||||
|
import { getPayload } from 'payload'
|
||||||
|
import config from '@/payload.config'
|
||||||
import { DonationForm } from '@/payload-types'
|
import { DonationForm } from '@/payload-types'
|
||||||
|
|
||||||
export async function fetchDonationForm(id: string): Promise<DonationForm | undefined> {
|
export async function fetchDonationForm(
|
||||||
// const query = {
|
id: string,
|
||||||
// id: {
|
): Promise<DonationForm | undefined> {
|
||||||
// equals: id,
|
try {
|
||||||
// },
|
const payload = await getPayload({ config })
|
||||||
// }
|
return await payload.findByID({
|
||||||
//
|
collection: 'donation-form',
|
||||||
// const stringifiedQuery = stringify(
|
id,
|
||||||
// {
|
})
|
||||||
// where: query,
|
} catch {
|
||||||
// },
|
return undefined
|
||||||
// { addQueryPrefix: true },
|
}
|
||||||
// )
|
}
|
||||||
|
|
||||||
const res = await fetch(`http://localhost:3000/api/donation-form/${id}`);
|
|
||||||
if (!res.ok) return undefined
|
|
||||||
const response = await res.json() as DonationForm;
|
|
||||||
return response
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -1,33 +1,43 @@
|
||||||
import { stringify } from 'qs-esm'
|
import { getPayload, PaginatedDocs } from 'payload'
|
||||||
import { PaginatedDocs } from 'payload'
|
import config from '@/payload.config'
|
||||||
import { Event } from '@/payload-types'
|
import { Event } from '@/payload-types'
|
||||||
|
|
||||||
type Args = {
|
type Args = {
|
||||||
parishId?: string;
|
parishId?: string
|
||||||
groupId?: string;
|
groupId?: string
|
||||||
limit?: number;
|
limit?: number
|
||||||
page?: number;
|
page?: number
|
||||||
fromDate?: Date
|
fromDate?: Date
|
||||||
toDate?: Date
|
toDate?: Date
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetch a list of events
|
* Fetch a list of events
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
export async function fetchEvents(args?: Args): Promise<PaginatedDocs<Event> | undefined> {
|
export async function fetchEvents(
|
||||||
|
args?: Args,
|
||||||
const {parishId, groupId, limit = 30, page = 0, fromDate = new Date(), toDate} = args || {};
|
): Promise<PaginatedDocs<Event>> {
|
||||||
|
const {
|
||||||
|
parishId,
|
||||||
|
groupId,
|
||||||
|
limit = 30,
|
||||||
|
page = 0,
|
||||||
|
fromDate = new Date(),
|
||||||
|
toDate,
|
||||||
|
} = args || {}
|
||||||
|
|
||||||
const query: any = {
|
const query: any = {
|
||||||
and: [
|
and: [
|
||||||
|
{
|
||||||
|
'_status': {
|
||||||
|
equals: 'published',
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
date: {
|
date: {
|
||||||
greater_than_equal: fromDate.toISOString(),
|
greater_than_equal: fromDate.toISOString(),
|
||||||
},
|
},
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -35,45 +45,54 @@ export async function fetchEvents(args?: Args): Promise<PaginatedDocs<Event> | u
|
||||||
query.and.push({
|
query.and.push({
|
||||||
date: {
|
date: {
|
||||||
less_than: toDate.toISOString(),
|
less_than: toDate.toISOString(),
|
||||||
}
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if (parishId) {
|
if (parishId) {
|
||||||
query.and.push({
|
query.and.push({
|
||||||
"parish": {
|
parish: {
|
||||||
equals: parishId
|
equals: parishId,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if (groupId) {
|
if (groupId) {
|
||||||
query.and.push({
|
query.and.push({
|
||||||
"group": {
|
group: {
|
||||||
equals: groupId
|
equals: groupId,
|
||||||
}
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const payload = await getPayload({ config })
|
||||||
const stringifiedQuery = stringify(
|
return payload.find({
|
||||||
{
|
collection: 'event',
|
||||||
sort: "date",
|
sort: 'date',
|
||||||
where: query,
|
where: query,
|
||||||
select: {
|
select: {
|
||||||
location: true,
|
location: true,
|
||||||
date: true,
|
date: true,
|
||||||
title: true,
|
title: true,
|
||||||
cancelled: true
|
cancelled: true,
|
||||||
},
|
|
||||||
depth: 1,
|
|
||||||
limit,
|
|
||||||
page
|
|
||||||
},
|
},
|
||||||
{ addQueryPrefix: true },
|
depth: 1,
|
||||||
)
|
limit,
|
||||||
|
page,
|
||||||
const response = await fetch(`http://localhost:3000/api/event${stringifiedQuery}`)
|
}) as Promise<PaginatedDocs<Event>>
|
||||||
if (!response.ok) return undefined
|
}
|
||||||
return response.json()
|
|
||||||
|
/**
|
||||||
|
* Fetch a single event by ID
|
||||||
|
*/
|
||||||
|
export async function fetchEventById(
|
||||||
|
id: string,
|
||||||
|
draft: boolean = false,
|
||||||
|
): Promise<Event | undefined> {
|
||||||
|
try {
|
||||||
|
const payload = await getPayload({ config })
|
||||||
|
return await payload.findByID({ collection: 'event', id, draft })
|
||||||
|
} catch {
|
||||||
|
return undefined
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,13 @@
|
||||||
|
import { unstable_cache } from 'next/cache'
|
||||||
|
import { getPayload } from 'payload'
|
||||||
|
import config from '@/payload.config'
|
||||||
import { Footer } from '@/payload-types'
|
import { Footer } from '@/payload-types'
|
||||||
|
|
||||||
export async function fetchFooter(): Promise<Footer> {
|
export const fetchFooter = unstable_cache(
|
||||||
const res = await fetch('http://localhost:3000/api/globals/footer', {
|
async (): Promise<Footer> => {
|
||||||
next: { tags: ['footer'] },
|
const payload = await getPayload({ config })
|
||||||
})
|
return payload.findGlobal({ slug: 'footer' })
|
||||||
|
},
|
||||||
if (!res.ok) {
|
['footer'],
|
||||||
throw new Error('Could not fetch footer')
|
{ tags: ['footer'] },
|
||||||
}
|
)
|
||||||
|
|
||||||
return res.json()
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,16 @@
|
||||||
import { stringify } from 'qs-esm'
|
import { getPayload } from 'payload'
|
||||||
import { PaginatedDocs } from 'payload'
|
import config from '@/payload.config'
|
||||||
import { Group } from '@/payload-types'
|
|
||||||
|
|
||||||
export async function fetchGroup(slug: string): Promise<PaginatedDocs<Group> | undefined> {
|
export async function fetchGroup(slug: string, draft: boolean = false) {
|
||||||
const query = {
|
const payload = await getPayload({ config })
|
||||||
slug: {
|
const result = await payload.find({
|
||||||
equals: slug,
|
collection: 'group',
|
||||||
|
where: {
|
||||||
|
slug: {
|
||||||
|
equals: slug,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
draft,
|
||||||
|
})
|
||||||
const stringifiedQuery = stringify(
|
return result.docs[0] ?? null
|
||||||
{
|
}
|
||||||
where: query,
|
|
||||||
},
|
|
||||||
{ addQueryPrefix: true },
|
|
||||||
)
|
|
||||||
|
|
||||||
const res = await fetch(`http://localhost:3000/api/group${stringifiedQuery}`)
|
|
||||||
if (!res.ok) return undefined
|
|
||||||
return res.json()
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -1,64 +1,52 @@
|
||||||
import { stringify } from 'qs-esm'
|
import { getPayload } from 'payload'
|
||||||
import { PaginatedDocs } from 'payload'
|
import config from '@/payload.config'
|
||||||
import { Highlight } from '@/payload-types'
|
|
||||||
|
|
||||||
export const fetchHighlights = async (): Promise<PaginatedDocs<Highlight> | undefined> => {
|
export const fetchHighlights = async () => {
|
||||||
const date = new Date();
|
const date = new Date()
|
||||||
date.setHours(0, 0, 0, 0);
|
date.setHours(0, 0, 0, 0)
|
||||||
|
|
||||||
const query: any = {
|
const payload = await getPayload({ config })
|
||||||
and: [
|
return payload.find({
|
||||||
{
|
collection: 'highlight',
|
||||||
from: {
|
sort: 'date',
|
||||||
less_than_equal: date.toISOString(),
|
where: {
|
||||||
|
and: [
|
||||||
|
{
|
||||||
|
from: {
|
||||||
|
less_than_equal: date.toISOString(),
|
||||||
|
},
|
||||||
|
until: {
|
||||||
|
greater_than_equal: date.toISOString(),
|
||||||
|
},
|
||||||
},
|
},
|
||||||
until: {
|
],
|
||||||
greater_than_equal: date.toISOString(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
}
|
|
||||||
|
|
||||||
const stringifiedQuery = stringify(
|
|
||||||
{
|
|
||||||
sort: "date",
|
|
||||||
where: query,
|
|
||||||
limit: 3
|
|
||||||
},
|
},
|
||||||
{ addQueryPrefix: true },
|
limit: 3,
|
||||||
)
|
})
|
||||||
|
|
||||||
const response = await fetch(`http://localhost:3000/api/highlight${stringifiedQuery}`)
|
|
||||||
if (!response.ok) return undefined
|
|
||||||
return response.json()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export const fetchHighlightsBetweenDates = async (from: Date, until: Date): Promise<PaginatedDocs<Highlight> | undefined> => {
|
export const fetchHighlightsBetweenDates = async (
|
||||||
const query: any = {
|
from: Date,
|
||||||
and: [
|
until: Date,
|
||||||
{
|
) => {
|
||||||
date: {
|
const payload = await getPayload({ config })
|
||||||
greater_than_equal: from.toISOString(),
|
return payload.find({
|
||||||
}
|
collection: 'highlight',
|
||||||
},
|
sort: 'date',
|
||||||
{
|
where: {
|
||||||
date: {
|
and: [
|
||||||
less_than: until.toISOString(),
|
{
|
||||||
}
|
date: {
|
||||||
}
|
greater_than_equal: from.toISOString(),
|
||||||
],
|
},
|
||||||
}
|
},
|
||||||
|
{
|
||||||
const stringifiedQuery = stringify(
|
date: {
|
||||||
{
|
less_than: until.toISOString(),
|
||||||
sort: "date",
|
},
|
||||||
where: query,
|
},
|
||||||
limit: 5
|
],
|
||||||
},
|
},
|
||||||
{ addQueryPrefix: true },
|
limit: 5,
|
||||||
)
|
})
|
||||||
|
}
|
||||||
const response = await fetch(`http://localhost:3000/api/highlight${stringifiedQuery}`)
|
|
||||||
if (!response.ok) return undefined
|
|
||||||
return response.json()
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -1,27 +1,20 @@
|
||||||
import { stringify } from 'qs-esm'
|
import { getPayload } from 'payload'
|
||||||
import { PaginatedDocs } from 'payload'
|
import config from '@/payload.config'
|
||||||
import { Magazine } from '@/payload-types'
|
import { Magazine } from '@/payload-types'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Asynchronously fetches the last magazine entry from the specified API endpoint.
|
* Asynchronously fetches the last magazine entry.
|
||||||
*
|
*
|
||||||
* This function sends a request to the specified API endpoint to fetch the last magazine based on the given sorting criteria.
|
* @returns {Promise<Magazine | undefined>} The last magazine entry if successful, or undefined.
|
||||||
*
|
|
||||||
* @returns {Promise<Magazine | undefined>} A Promise that resolves to the last fetched magazine entry if successful, or undefined if an error occurs.
|
|
||||||
*/
|
*/
|
||||||
export const fetchLastMagazine = async (): Promise<Magazine | undefined> => {
|
export const fetchLastMagazine = async (): Promise<
|
||||||
|
Magazine | undefined
|
||||||
const stringifiedQuery = stringify(
|
> => {
|
||||||
{
|
const payload = await getPayload({ config })
|
||||||
sort: "-date",
|
const result = await payload.find({
|
||||||
limit: 1,
|
collection: 'magazine',
|
||||||
},
|
sort: '-date',
|
||||||
{ addQueryPrefix: true },
|
limit: 1,
|
||||||
)
|
})
|
||||||
|
return result.docs[0]
|
||||||
const response = await fetch(`http://localhost:3000/api/magazine${stringifiedQuery}`)
|
}
|
||||||
if (!response.ok) return undefined
|
|
||||||
const announcements = await response.json() as PaginatedDocs<Magazine>
|
|
||||||
return announcements.docs[0]
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -1,25 +1,32 @@
|
||||||
|
import { unstable_cache } from 'next/cache'
|
||||||
|
import { getPayload } from 'payload'
|
||||||
|
import config from '@/payload.config'
|
||||||
import { Page } from '@/payload-types'
|
import { Page } from '@/payload-types'
|
||||||
import { stringify } from 'qs-esm'
|
|
||||||
|
|
||||||
export async function fetchPageBySlug(
|
export async function fetchPageBySlug(
|
||||||
slug: string,
|
slug: string,
|
||||||
|
draft: boolean = false,
|
||||||
): Promise<Page | undefined> {
|
): Promise<Page | undefined> {
|
||||||
const query = stringify(
|
const fetchPage = async () => {
|
||||||
{
|
const payload = await getPayload({ config })
|
||||||
|
const data = await payload.find({
|
||||||
|
collection: 'pages',
|
||||||
where: {
|
where: {
|
||||||
slug: {
|
slug: {
|
||||||
equals: slug,
|
equals: slug,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
limit: 1,
|
limit: 1,
|
||||||
},
|
draft,
|
||||||
{ addQueryPrefix: true },
|
})
|
||||||
)
|
return data.docs?.[0] ?? undefined
|
||||||
|
}
|
||||||
|
|
||||||
const res = await fetch(`http://localhost:3000/api/pages${query}`, {
|
if (draft) {
|
||||||
next: { tags: ['pages', `pages-${slug}`] },
|
return fetchPage()
|
||||||
})
|
}
|
||||||
if (!res.ok) return undefined
|
|
||||||
const data = await res.json()
|
return unstable_cache(fetchPage, ['pages', slug], {
|
||||||
return data.docs?.[0]
|
tags: ['pages', `pages-${slug}`],
|
||||||
|
})()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,16 @@
|
||||||
import { stringify } from 'qs-esm'
|
import { getPayload } from 'payload'
|
||||||
import { PaginatedDocs } from 'payload'
|
import config from '@/payload.config'
|
||||||
import { Parish } from '@/payload-types'
|
|
||||||
|
|
||||||
export async function fetchParish(slug: string): Promise<PaginatedDocs<Parish> | undefined> {
|
export async function fetchParish(slug: string, draft: boolean = false) {
|
||||||
const query = {
|
const payload = await getPayload({ config })
|
||||||
slug: {
|
const result = await payload.find({
|
||||||
equals: slug,
|
collection: 'parish',
|
||||||
|
where: {
|
||||||
|
slug: {
|
||||||
|
equals: slug,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
draft,
|
||||||
|
})
|
||||||
const stringifiedQuery = stringify(
|
return result.docs[0] ?? null
|
||||||
{
|
}
|
||||||
where: query,
|
|
||||||
},
|
|
||||||
{ addQueryPrefix: true },
|
|
||||||
)
|
|
||||||
|
|
||||||
const res = await fetch(`http://localhost:3000/api/parish${stringifiedQuery}`)
|
|
||||||
if (!res.ok) return undefined
|
|
||||||
return res.json()
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
import { stringify } from 'qs-esm'
|
import { getPayload } from 'payload'
|
||||||
|
import config from '@/payload.config'
|
||||||
import { PopePrayerIntention } from '@/payload-types'
|
import { PopePrayerIntention } from '@/payload-types'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -7,30 +8,26 @@ import { PopePrayerIntention } from '@/payload-types'
|
||||||
* @param year
|
* @param year
|
||||||
* @param month - in the form of '01' for january, '02' for february ...
|
* @param month - in the form of '01' for january, '02' for february ...
|
||||||
*/
|
*/
|
||||||
export const fetchPopePrayerIntentions = async (year: number, month: string): Promise<PopePrayerIntention | undefined> => {
|
export const fetchPopePrayerIntentions = async (
|
||||||
const query: any = {
|
year: number,
|
||||||
and: [
|
month: string,
|
||||||
{
|
): Promise<PopePrayerIntention | undefined> => {
|
||||||
month: {
|
const payload = await getPayload({ config })
|
||||||
equals: month,
|
const result = await payload.find({
|
||||||
|
collection: 'popePrayerIntentions',
|
||||||
|
where: {
|
||||||
|
and: [
|
||||||
|
{
|
||||||
|
month: {
|
||||||
|
equals: month,
|
||||||
|
},
|
||||||
|
year: {
|
||||||
|
equals: year,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
year: {
|
],
|
||||||
equals: year
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
}
|
|
||||||
|
|
||||||
const stringifiedQuery = stringify(
|
|
||||||
{
|
|
||||||
where: query,
|
|
||||||
limit: 1
|
|
||||||
},
|
},
|
||||||
{ addQueryPrefix: true },
|
limit: 1,
|
||||||
)
|
})
|
||||||
|
return result.docs[0]
|
||||||
const response = await fetch(`http://localhost:3000/api/popePrayerIntentions${stringifiedQuery}`)
|
}
|
||||||
if (!response.ok) return undefined
|
|
||||||
let data = await response.json()
|
|
||||||
return data.docs[0]
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,16 @@
|
||||||
import { Prayer } from '@/payload-types'
|
import { unstable_cache } from 'next/cache'
|
||||||
|
import { getPayload } from 'payload'
|
||||||
|
import config from '@/payload.config'
|
||||||
|
|
||||||
export async function fetchPrayers(): Promise<string[]> {
|
export const fetchPrayers = unstable_cache(
|
||||||
const res = await fetch(
|
async (): Promise<string[]> => {
|
||||||
'http://localhost:3000/api/prayers?limit=0',
|
const payload = await getPayload({ config })
|
||||||
{ next: { tags: ['prayers'] } },
|
const data = await payload.find({
|
||||||
)
|
collection: 'prayers',
|
||||||
if (!res.ok) return []
|
limit: 0,
|
||||||
const data = await res.json()
|
})
|
||||||
return (data.docs as Prayer[]).map((p) => p.text)
|
return data.docs.map((p) => p.text)
|
||||||
}
|
},
|
||||||
|
['prayers'],
|
||||||
|
{ tags: ['prayers'] },
|
||||||
|
)
|
||||||
|
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
import { SiteConfig } from '@/payload-types'
|
|
||||||
|
|
||||||
export async function fetchSiteConfig(): Promise<SiteConfig> {
|
|
||||||
const res = await fetch(
|
|
||||||
'http://localhost:3000/api/globals/site-config',
|
|
||||||
{
|
|
||||||
next: { tags: ['site-config'] },
|
|
||||||
},
|
|
||||||
)
|
|
||||||
|
|
||||||
if (!res.ok) {
|
|
||||||
throw new Error('Could not fetch site-config')
|
|
||||||
}
|
|
||||||
|
|
||||||
return res.json()
|
|
||||||
}
|
|
||||||
|
|
@ -1,67 +1,76 @@
|
||||||
import { stringify } from 'qs-esm'
|
import { getPayload, PaginatedDocs } from 'payload'
|
||||||
import { PaginatedDocs } from 'payload'
|
import config from '@/payload.config'
|
||||||
import { Worship } from '@/payload-types'
|
import { Worship } from '@/payload-types'
|
||||||
|
|
||||||
type FetchWorshipArgs = {
|
type FetchWorshipArgs = {
|
||||||
fromDate?: Date,
|
fromDate?: Date
|
||||||
tillDate?: Date,
|
tillDate?: Date
|
||||||
locations?: string[]
|
locations?: string[]
|
||||||
}
|
}
|
||||||
|
|
||||||
export const fetchWorship = async (args?: FetchWorshipArgs): Promise<PaginatedDocs<Worship> | undefined> => {
|
export const fetchWorship = async (
|
||||||
|
args?: FetchWorshipArgs,
|
||||||
|
): Promise<PaginatedDocs<Worship>> => {
|
||||||
|
const { fromDate, tillDate, locations } = args || {}
|
||||||
|
|
||||||
const {fromDate, tillDate, locations} = args || {}
|
let date = fromDate
|
||||||
|
|
||||||
let date = fromDate;
|
|
||||||
if (!date) {
|
if (!date) {
|
||||||
date = new Date();
|
date = new Date()
|
||||||
date.setHours(0, 0, 0, 0);
|
date.setHours(0, 0, 0, 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const query: any = {
|
const query: any = {
|
||||||
and: [
|
and: [
|
||||||
{
|
{
|
||||||
date: {
|
date: {
|
||||||
greater_than_equal: date.toISOString(),
|
greater_than_equal: date.toISOString(),
|
||||||
},
|
},
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tillDate) {
|
if (tillDate) {
|
||||||
query.and.push({
|
query.and.push({
|
||||||
date: {
|
date: {
|
||||||
less_than: tillDate.toISOString()
|
less_than: tillDate.toISOString(),
|
||||||
}
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if (locations ) {
|
if (locations) {
|
||||||
query.and.push({
|
query.and.push({
|
||||||
location: {
|
location: {
|
||||||
in: locations
|
in: locations,
|
||||||
}
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const stringifiedQuery = stringify(
|
const payload = await getPayload({ config })
|
||||||
{
|
return payload.find({
|
||||||
sort: "date",
|
collection: 'worship',
|
||||||
where: query,
|
sort: 'date',
|
||||||
select: {
|
where: query,
|
||||||
type: true,
|
select: {
|
||||||
date: true,
|
type: true,
|
||||||
cancelled: true,
|
date: true,
|
||||||
location: true,
|
cancelled: true,
|
||||||
title: true,
|
location: true,
|
||||||
},
|
title: true,
|
||||||
limit: 15
|
|
||||||
},
|
},
|
||||||
{ addQueryPrefix: true },
|
limit: 15,
|
||||||
)
|
}) as Promise<PaginatedDocs<Worship>>
|
||||||
|
}
|
||||||
|
|
||||||
const response = await fetch(`http://localhost:3000/api/worship${stringifiedQuery}`)
|
/**
|
||||||
if (!response.ok) return undefined
|
* Fetch a single worship entry by ID
|
||||||
return response.json()
|
*/
|
||||||
}
|
export async function fetchWorshipById(
|
||||||
|
id: string,
|
||||||
|
): Promise<Worship | undefined> {
|
||||||
|
try {
|
||||||
|
const payload = await getPayload({ config })
|
||||||
|
return await payload.findByID({ collection: 'worship', id })
|
||||||
|
} catch {
|
||||||
|
return undefined
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,131 +0,0 @@
|
||||||
import { GlobalConfig } from 'payload'
|
|
||||||
import { isAdmin } from '@/collections/access/admin'
|
|
||||||
import { revalidateTag } from 'next/cache'
|
|
||||||
import { FONT_OPTIONS } from '@/assets/fontOptions'
|
|
||||||
|
|
||||||
const hexColorValidation = (value: string | null | undefined) => {
|
|
||||||
if (!value) return true
|
|
||||||
if (/^#([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$/.test(value)) return true
|
|
||||||
return 'Bitte geben Sie einen gültigen Hex-Farbwert ein (z.B. #016699)'
|
|
||||||
}
|
|
||||||
|
|
||||||
const colorFieldAdmin = {
|
|
||||||
components: {
|
|
||||||
Field: '@/admin/components/ColorPicker/ColorPicker',
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
export const DesignGlobal: GlobalConfig = {
|
|
||||||
slug: 'design',
|
|
||||||
label: {
|
|
||||||
de: 'Design',
|
|
||||||
},
|
|
||||||
admin: {
|
|
||||||
description:
|
|
||||||
'Hier können Sie die Farben und das Erscheinungsbild der Website konfigurieren.',
|
|
||||||
hidden: args => args.user?.roles === "user"
|
|
||||||
},
|
|
||||||
fields: [
|
|
||||||
{
|
|
||||||
type: 'collapsible',
|
|
||||||
label: 'Farben',
|
|
||||||
fields: [
|
|
||||||
{
|
|
||||||
name: 'baseColor',
|
|
||||||
type: 'text',
|
|
||||||
label: { de: 'Grundfarbe' },
|
|
||||||
defaultValue: '#016699',
|
|
||||||
validate: hexColorValidation,
|
|
||||||
admin: colorFieldAdmin,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'shade1',
|
|
||||||
type: 'text',
|
|
||||||
label: { de: 'Farbton 1' },
|
|
||||||
defaultValue: '#67A3C2',
|
|
||||||
validate: hexColorValidation,
|
|
||||||
admin: colorFieldAdmin,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'shade2',
|
|
||||||
type: 'text',
|
|
||||||
label: { de: 'Farbton 2' },
|
|
||||||
defaultValue: '#DDECF7',
|
|
||||||
validate: hexColorValidation,
|
|
||||||
admin: colorFieldAdmin,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'shade3',
|
|
||||||
type: 'text',
|
|
||||||
label: { de: 'Farbton 3' },
|
|
||||||
defaultValue: '#eff6ff',
|
|
||||||
validate: hexColorValidation,
|
|
||||||
admin: colorFieldAdmin,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'contrastColor',
|
|
||||||
type: 'text',
|
|
||||||
label: { de: 'Kontrastfarbe' },
|
|
||||||
defaultValue: '#CE490F',
|
|
||||||
validate: hexColorValidation,
|
|
||||||
admin: colorFieldAdmin,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'contrastShade1',
|
|
||||||
type: 'text',
|
|
||||||
label: { de: 'Kontrastfarbton 1' },
|
|
||||||
defaultValue: '#DA764B',
|
|
||||||
validate: hexColorValidation,
|
|
||||||
admin: colorFieldAdmin,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'collapsible',
|
|
||||||
label: 'Schriftarten',
|
|
||||||
fields: [
|
|
||||||
{
|
|
||||||
name: 'defaultFont',
|
|
||||||
type: 'select',
|
|
||||||
label: { de: 'Standardschrift' },
|
|
||||||
defaultValue: 'cairo',
|
|
||||||
options: FONT_OPTIONS.map((o) => ({
|
|
||||||
label: o.label,
|
|
||||||
value: o.value,
|
|
||||||
})),
|
|
||||||
admin: {
|
|
||||||
description:
|
|
||||||
'Die Hauptschrift für den gesamten Text der Website.',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'headerFont',
|
|
||||||
type: 'select',
|
|
||||||
label: { de: 'Überschriftenschrift' },
|
|
||||||
defaultValue: 'faustina',
|
|
||||||
options: FONT_OPTIONS.map((o) => ({
|
|
||||||
label: o.label,
|
|
||||||
value: o.value,
|
|
||||||
})),
|
|
||||||
admin: {
|
|
||||||
description:
|
|
||||||
'Die Schrift für Überschriften und hervorgehobenen Text.',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'borderRadius',
|
|
||||||
type: 'text',
|
|
||||||
label: { de: 'Eckenradius' },
|
|
||||||
defaultValue: '13px',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
access: {
|
|
||||||
read: () => true,
|
|
||||||
update: isAdmin(),
|
|
||||||
},
|
|
||||||
hooks: {
|
|
||||||
afterChange: [() => revalidateTag('design')],
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import { GlobalConfig } from 'payload'
|
import { GlobalConfig } from 'payload'
|
||||||
import { isAdmin } from '@/collections/access/admin'
|
import { isAdmin } from '@/collections/access/admin'
|
||||||
import { revalidateTag } from 'next/cache'
|
import { revalidateTag } from 'next/cache'
|
||||||
|
import { validateHref } from '@/globals/ValidateHref'
|
||||||
|
|
||||||
export const FooterGlobal: GlobalConfig = {
|
export const FooterGlobal: GlobalConfig = {
|
||||||
slug: 'footer',
|
slug: 'footer',
|
||||||
|
|
@ -50,6 +51,7 @@ export const FooterGlobal: GlobalConfig = {
|
||||||
label: {
|
label: {
|
||||||
de: 'Zieladresse',
|
de: 'Zieladresse',
|
||||||
},
|
},
|
||||||
|
validate: validateHref,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import { Block, GlobalConfig } from 'payload'
|
import { Block, GlobalConfig } from 'payload'
|
||||||
import { hide, isAdmin } from '@/collections/access/admin'
|
import { isAdmin } from '@/collections/access/admin'
|
||||||
import { revalidateTag } from 'next/cache'
|
import { revalidateTag } from 'next/cache'
|
||||||
|
import { validateHref } from '@/globals/ValidateHref'
|
||||||
|
|
||||||
const SimpleItem: Block = {
|
const SimpleItem: Block = {
|
||||||
slug: 'simple-item',
|
slug: 'simple-item',
|
||||||
|
|
@ -18,7 +19,8 @@ const SimpleItem: Block = {
|
||||||
name: 'href',
|
name: 'href',
|
||||||
type: 'text',
|
type: 'text',
|
||||||
label: 'Zieladresse',
|
label: 'Zieladresse',
|
||||||
required: true
|
required: true,
|
||||||
|
validate: validateHref,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'type',
|
name: 'type',
|
||||||
|
|
@ -93,6 +95,7 @@ const MegaMenuItem: Block = {
|
||||||
label: 'Zieladresse',
|
label: 'Zieladresse',
|
||||||
type: 'text',
|
type: 'text',
|
||||||
required: true,
|
required: true,
|
||||||
|
validate: validateHref,
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
required: true,
|
required: true,
|
||||||
|
|
|
||||||
|
|
@ -1,103 +0,0 @@
|
||||||
import { GlobalConfig } from 'payload'
|
|
||||||
import { isAdmin } from '@/collections/access/admin'
|
|
||||||
import { revalidateTag } from 'next/cache'
|
|
||||||
|
|
||||||
export const SiteConfigGlobal: GlobalConfig = {
|
|
||||||
slug: 'site-config',
|
|
||||||
label: {
|
|
||||||
de: 'Website-Einstellungen',
|
|
||||||
},
|
|
||||||
admin: {
|
|
||||||
description:
|
|
||||||
'Hier können Sie den Namen, die Beschreibung und andere allgemeine Einstellungen der Website konfigurieren.',
|
|
||||||
hidden: args => args.user?.roles === "user"
|
|
||||||
},
|
|
||||||
fields: [
|
|
||||||
{
|
|
||||||
name: 'name',
|
|
||||||
type: 'text',
|
|
||||||
label: { de: 'Name der Pfarrei' },
|
|
||||||
required: true,
|
|
||||||
defaultValue:
|
|
||||||
'Katholische Pfarrei Heilige Drei Könige Berlin',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'shortName',
|
|
||||||
type: 'text',
|
|
||||||
label: { de: 'Kurzname' },
|
|
||||||
required: true,
|
|
||||||
defaultValue: 'Hl. Drei Könige',
|
|
||||||
admin: {
|
|
||||||
description:
|
|
||||||
'Wird im Browser-Tab als Suffix verwendet (z.B. "Seite | Hl. Drei Könige").',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'description',
|
|
||||||
type: 'textarea',
|
|
||||||
label: { de: 'Beschreibung' },
|
|
||||||
required: true,
|
|
||||||
defaultValue:
|
|
||||||
'Katholische Pfarrei Heilige Drei Könige in Berlin – Gottesdienste, Veranstaltungen, Sakramente und Gemeindeleben.',
|
|
||||||
admin: {
|
|
||||||
description: 'Meta-Beschreibung für Suchmaschinen.',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'url',
|
|
||||||
type: 'text',
|
|
||||||
label: { de: 'Website-URL' },
|
|
||||||
required: true,
|
|
||||||
defaultValue: 'https://dreikoenige.berlin',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'ogImage',
|
|
||||||
type: 'text',
|
|
||||||
label: { de: 'Open Graph Bild' },
|
|
||||||
defaultValue: '/og-logo.svg',
|
|
||||||
admin: {
|
|
||||||
description:
|
|
||||||
'Pfad zum Vorschaubild für soziale Medien.',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'email',
|
|
||||||
type: 'email',
|
|
||||||
label: { de: 'Kontakt-E-Mail' },
|
|
||||||
required: true,
|
|
||||||
defaultValue: 'kontakt@dreikoenige.berlin',
|
|
||||||
admin: {
|
|
||||||
description:
|
|
||||||
'Standard-E-Mail-Adresse für Kontaktformulare.',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'keywords',
|
|
||||||
type: 'array',
|
|
||||||
label: { de: 'Schlüsselwörter' },
|
|
||||||
labels: {
|
|
||||||
singular: { de: 'Schlüsselwort' },
|
|
||||||
plural: { de: 'Schlüsselwörter' },
|
|
||||||
},
|
|
||||||
admin: {
|
|
||||||
description:
|
|
||||||
'SEO-Schlüsselwörter für Suchmaschinen.',
|
|
||||||
},
|
|
||||||
fields: [
|
|
||||||
{
|
|
||||||
name: 'keyword',
|
|
||||||
type: 'text',
|
|
||||||
required: true,
|
|
||||||
label: { de: 'Schlüsselwort' },
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
access: {
|
|
||||||
read: () => true,
|
|
||||||
update: isAdmin(),
|
|
||||||
},
|
|
||||||
hooks: {
|
|
||||||
afterChange: [() => revalidateTag('site-config')],
|
|
||||||
},
|
|
||||||
}
|
|
||||||
16
src/globals/ValidateHref.ts
Normal file
16
src/globals/ValidateHref.ts
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
/**
|
||||||
|
* Payload field validator for href/link fields.
|
||||||
|
* Ensures values start with `/`, `http://`, or `https://`
|
||||||
|
* to prevent malformed or relative URLs.
|
||||||
|
*/
|
||||||
|
export const validateHref = (value: string | null | undefined) => {
|
||||||
|
if (
|
||||||
|
value &&
|
||||||
|
!value.startsWith('/') &&
|
||||||
|
!value.startsWith('http://') &&
|
||||||
|
!value.startsWith('https://')
|
||||||
|
) {
|
||||||
|
return 'Zieladresse muss mit "/", "http://" oder "https://" beginnen'
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
10757
src/migrations/20260310_105814.json
Normal file
10757
src/migrations/20260310_105814.json
Normal file
File diff suppressed because it is too large
Load diff
66
src/migrations/20260310_105814.ts
Normal file
66
src/migrations/20260310_105814.ts
Normal file
|
|
@ -0,0 +1,66 @@
|
||||||
|
import { MigrateUpArgs, MigrateDownArgs, sql } from '@payloadcms/db-postgres'
|
||||||
|
|
||||||
|
export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
||||||
|
await db.execute(sql`
|
||||||
|
ALTER TABLE "design" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "site_config_keywords" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "site_config" DISABLE ROW LEVEL SECURITY;
|
||||||
|
DROP TABLE "design" CASCADE;
|
||||||
|
DROP TABLE "site_config_keywords" CASCADE;
|
||||||
|
DROP TABLE "site_config" CASCADE;
|
||||||
|
ALTER TABLE "announcement" ALTER COLUMN "date" SET DEFAULT '2026-03-15T10:58:14.115Z';
|
||||||
|
ALTER TABLE "calendar" ALTER COLUMN "date" SET DEFAULT '2026-03-15T10:58:14.432Z';
|
||||||
|
ALTER TABLE "classifieds" ALTER COLUMN "until" SET DEFAULT '2026-04-09T09:58:14.493Z';
|
||||||
|
ALTER TABLE "documents" DROP COLUMN "prefix";
|
||||||
|
ALTER TABLE "media" DROP COLUMN "prefix";
|
||||||
|
DROP TYPE "public"."enum_design_default_font";
|
||||||
|
DROP TYPE "public"."enum_design_header_font";`)
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function down({ db, payload, req }: MigrateDownArgs): Promise<void> {
|
||||||
|
await db.execute(sql`
|
||||||
|
CREATE TYPE "public"."enum_design_default_font" AS ENUM('cairo', 'roboto', 'openSans', 'lato', 'nunito', 'raleway', 'faustina', 'merriweather', 'sourceSans3', 'playfairDisplay', 'lora', 'crimsonText', 'ebGaramond');
|
||||||
|
CREATE TYPE "public"."enum_design_header_font" AS ENUM('cairo', 'roboto', 'openSans', 'lato', 'nunito', 'raleway', 'faustina', 'merriweather', 'sourceSans3', 'playfairDisplay', 'lora', 'crimsonText', 'ebGaramond');
|
||||||
|
CREATE TABLE "design" (
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"base_color" varchar DEFAULT '#016699',
|
||||||
|
"shade1" varchar DEFAULT '#67A3C2',
|
||||||
|
"shade2" varchar DEFAULT '#DDECF7',
|
||||||
|
"shade3" varchar DEFAULT '#eff6ff',
|
||||||
|
"contrast_color" varchar DEFAULT '#CE490F',
|
||||||
|
"contrast_shade1" varchar DEFAULT '#DA764B',
|
||||||
|
"default_font" "enum_design_default_font" DEFAULT 'cairo',
|
||||||
|
"header_font" "enum_design_header_font" DEFAULT 'faustina',
|
||||||
|
"border_radius" varchar DEFAULT '13px',
|
||||||
|
"updated_at" timestamp(3) with time zone,
|
||||||
|
"created_at" timestamp(3) with time zone
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "site_config_keywords" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"id" varchar PRIMARY KEY NOT NULL,
|
||||||
|
"keyword" varchar NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "site_config" (
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"name" varchar DEFAULT 'Katholische Pfarrei Heilige Drei Könige Berlin' NOT NULL,
|
||||||
|
"short_name" varchar DEFAULT 'Hl. Drei Könige' NOT NULL,
|
||||||
|
"description" varchar DEFAULT 'Katholische Pfarrei Heilige Drei Könige in Berlin – Gottesdienste, Veranstaltungen, Sakramente und Gemeindeleben.' NOT NULL,
|
||||||
|
"url" varchar DEFAULT 'https://dreikoenige.berlin' NOT NULL,
|
||||||
|
"og_image" varchar DEFAULT '/og-logo.svg',
|
||||||
|
"email" varchar DEFAULT 'kontakt@dreikoenige.berlin' NOT NULL,
|
||||||
|
"updated_at" timestamp(3) with time zone,
|
||||||
|
"created_at" timestamp(3) with time zone
|
||||||
|
);
|
||||||
|
|
||||||
|
ALTER TABLE "announcement" ALTER COLUMN "date" SET DEFAULT '2026-03-15T11:16:16.612Z';
|
||||||
|
ALTER TABLE "calendar" ALTER COLUMN "date" SET DEFAULT '2026-03-15T11:16:16.901Z';
|
||||||
|
ALTER TABLE "classifieds" ALTER COLUMN "until" SET DEFAULT '2026-04-08T10:16:16.962Z';
|
||||||
|
ALTER TABLE "documents" ADD COLUMN "prefix" varchar DEFAULT 'documents/';
|
||||||
|
ALTER TABLE "media" ADD COLUMN "prefix" varchar DEFAULT 'media/';
|
||||||
|
ALTER TABLE "site_config_keywords" ADD CONSTRAINT "site_config_keywords_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."site_config"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
CREATE INDEX "site_config_keywords_order_idx" ON "site_config_keywords" USING btree ("_order");
|
||||||
|
CREATE INDEX "site_config_keywords_parent_id_idx" ON "site_config_keywords" USING btree ("_parent_id");`)
|
||||||
|
}
|
||||||
12191
src/migrations/20260310_143800.json
Normal file
12191
src/migrations/20260310_143800.json
Normal file
File diff suppressed because it is too large
Load diff
238
src/migrations/20260310_143800.ts
Normal file
238
src/migrations/20260310_143800.ts
Normal file
|
|
@ -0,0 +1,238 @@
|
||||||
|
import { MigrateUpArgs, MigrateDownArgs, sql } from '@payloadcms/db-postgres'
|
||||||
|
|
||||||
|
export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
||||||
|
await db.execute(sql`
|
||||||
|
CREATE TYPE "public"."enum_blog_status" AS ENUM('draft', 'published');
|
||||||
|
CREATE TYPE "public"."enum__blog_v_blocks_text_width" AS ENUM('1/2', '3/4');
|
||||||
|
CREATE TYPE "public"."enum__blog_v_version_status" AS ENUM('draft', 'published');
|
||||||
|
CREATE TABLE "_blog_v_blocks_text" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"content" jsonb,
|
||||||
|
"width" "enum__blog_v_blocks_text_width" DEFAULT '1/2',
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_blog_v_blocks_document" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"file_id" uuid,
|
||||||
|
"button" varchar DEFAULT 'Download Flyer',
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_blog_v_blocks_donation" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_blog_v_blocks_contactform" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"title" varchar DEFAULT 'Ich bin dabei!',
|
||||||
|
"description" varchar DEFAULT 'Um dich anzumelden oder uns zu unterstützen, fülle bitte das Kontaktformular aus. Wir freuen uns sehr, dass du Teil unserer Gemeinschaft bist und mit deinem Engagement dazu beiträgst, unsere Ziele zu erreichen. Solltest du Fragen haben oder weitere Informationen benötigen, zögere nicht, uns zu kontaktieren – wir sind gerne für dich da!',
|
||||||
|
"email" varchar DEFAULT 'kontakt@mutter-teresa-chemnitz.de',
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_blog_v_blocks_gallery_items" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"photo_id" uuid,
|
||||||
|
"_uuid" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_blog_v_blocks_gallery" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_blog_v_blocks_youtube" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"youtube_id" varchar,
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_blog_v_blocks_button" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"text" varchar,
|
||||||
|
"url" varchar,
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_blog_v" (
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"parent_id" uuid,
|
||||||
|
"version_photo_id" uuid,
|
||||||
|
"version_title" varchar,
|
||||||
|
"version_content_excerpt" varchar,
|
||||||
|
"version_configuration_show_on_frontpage" boolean DEFAULT true,
|
||||||
|
"version_configuration_display_from_date" timestamp(3) with time zone,
|
||||||
|
"version_configuration_display_till_date" timestamp(3) with time zone,
|
||||||
|
"version_updated_at" timestamp(3) with time zone,
|
||||||
|
"version_created_at" timestamp(3) with time zone,
|
||||||
|
"version__status" "enum__blog_v_version_status" DEFAULT 'draft',
|
||||||
|
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
|
||||||
|
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
|
||||||
|
"latest" boolean,
|
||||||
|
"autosave" boolean
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_blog_v_rels" (
|
||||||
|
"id" serial PRIMARY KEY NOT NULL,
|
||||||
|
"order" integer,
|
||||||
|
"parent_id" uuid NOT NULL,
|
||||||
|
"path" varchar NOT NULL,
|
||||||
|
"parish_id" uuid
|
||||||
|
);
|
||||||
|
|
||||||
|
ALTER TABLE "announcement" ALTER COLUMN "date" SET DEFAULT '2026-03-15T14:38:00.254Z';
|
||||||
|
ALTER TABLE "calendar" ALTER COLUMN "date" SET DEFAULT '2026-03-15T14:38:00.534Z';
|
||||||
|
ALTER TABLE "blog_blocks_text" ALTER COLUMN "content" DROP NOT NULL;
|
||||||
|
ALTER TABLE "blog_blocks_text" ALTER COLUMN "width" DROP NOT NULL;
|
||||||
|
ALTER TABLE "blog_blocks_document" ALTER COLUMN "file_id" DROP NOT NULL;
|
||||||
|
ALTER TABLE "blog_blocks_document" ALTER COLUMN "button" DROP NOT NULL;
|
||||||
|
ALTER TABLE "blog_blocks_contactform" ALTER COLUMN "title" DROP NOT NULL;
|
||||||
|
ALTER TABLE "blog_blocks_contactform" ALTER COLUMN "description" DROP NOT NULL;
|
||||||
|
ALTER TABLE "blog_blocks_contactform" ALTER COLUMN "email" SET DEFAULT 'kontakt@mutter-teresa-chemnitz.de';
|
||||||
|
ALTER TABLE "blog_blocks_contactform" ALTER COLUMN "email" DROP NOT NULL;
|
||||||
|
ALTER TABLE "blog_blocks_gallery_items" ALTER COLUMN "photo_id" DROP NOT NULL;
|
||||||
|
ALTER TABLE "blog_blocks_youtube" ALTER COLUMN "youtube_id" DROP NOT NULL;
|
||||||
|
ALTER TABLE "blog_blocks_button" ALTER COLUMN "text" DROP NOT NULL;
|
||||||
|
ALTER TABLE "blog_blocks_button" ALTER COLUMN "url" DROP NOT NULL;
|
||||||
|
ALTER TABLE "blog" ALTER COLUMN "title" DROP NOT NULL;
|
||||||
|
ALTER TABLE "blog" ALTER COLUMN "content_excerpt" DROP NOT NULL;
|
||||||
|
ALTER TABLE "blog" ALTER COLUMN "configuration_show_on_frontpage" DROP NOT NULL;
|
||||||
|
ALTER TABLE "classifieds" ALTER COLUMN "until" SET DEFAULT '2026-04-09T13:38:00.592Z';
|
||||||
|
ALTER TABLE "group_blocks_contactform" ALTER COLUMN "email" SET DEFAULT 'kontakt@mutter-teresa-chemnitz.de';
|
||||||
|
ALTER TABLE "pages_blocks_contactform" ALTER COLUMN "email" SET DEFAULT 'kontakt@mutter-teresa-chemnitz.de';
|
||||||
|
ALTER TABLE "blog" ADD COLUMN "_status" "enum_blog_status" DEFAULT 'draft';
|
||||||
|
ALTER TABLE "_blog_v_blocks_text" ADD CONSTRAINT "_blog_v_blocks_text_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_blog_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_blog_v_blocks_document" ADD CONSTRAINT "_blog_v_blocks_document_file_id_documents_id_fk" FOREIGN KEY ("file_id") REFERENCES "public"."documents"("id") ON DELETE set null ON UPDATE no action;
|
||||||
|
ALTER TABLE "_blog_v_blocks_document" ADD CONSTRAINT "_blog_v_blocks_document_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_blog_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_blog_v_blocks_donation" ADD CONSTRAINT "_blog_v_blocks_donation_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_blog_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_blog_v_blocks_contactform" ADD CONSTRAINT "_blog_v_blocks_contactform_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_blog_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_blog_v_blocks_gallery_items" ADD CONSTRAINT "_blog_v_blocks_gallery_items_photo_id_media_id_fk" FOREIGN KEY ("photo_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
|
||||||
|
ALTER TABLE "_blog_v_blocks_gallery_items" ADD CONSTRAINT "_blog_v_blocks_gallery_items_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_blog_v_blocks_gallery"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_blog_v_blocks_gallery" ADD CONSTRAINT "_blog_v_blocks_gallery_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_blog_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_blog_v_blocks_youtube" ADD CONSTRAINT "_blog_v_blocks_youtube_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_blog_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_blog_v_blocks_button" ADD CONSTRAINT "_blog_v_blocks_button_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_blog_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_blog_v" ADD CONSTRAINT "_blog_v_parent_id_blog_id_fk" FOREIGN KEY ("parent_id") REFERENCES "public"."blog"("id") ON DELETE set null ON UPDATE no action;
|
||||||
|
ALTER TABLE "_blog_v" ADD CONSTRAINT "_blog_v_version_photo_id_media_id_fk" FOREIGN KEY ("version_photo_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
|
||||||
|
ALTER TABLE "_blog_v_rels" ADD CONSTRAINT "_blog_v_rels_parent_fk" FOREIGN KEY ("parent_id") REFERENCES "public"."_blog_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_blog_v_rels" ADD CONSTRAINT "_blog_v_rels_parish_fk" FOREIGN KEY ("parish_id") REFERENCES "public"."parish"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
CREATE INDEX "_blog_v_blocks_text_order_idx" ON "_blog_v_blocks_text" USING btree ("_order");
|
||||||
|
CREATE INDEX "_blog_v_blocks_text_parent_id_idx" ON "_blog_v_blocks_text" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_blog_v_blocks_text_path_idx" ON "_blog_v_blocks_text" USING btree ("_path");
|
||||||
|
CREATE INDEX "_blog_v_blocks_document_order_idx" ON "_blog_v_blocks_document" USING btree ("_order");
|
||||||
|
CREATE INDEX "_blog_v_blocks_document_parent_id_idx" ON "_blog_v_blocks_document" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_blog_v_blocks_document_path_idx" ON "_blog_v_blocks_document" USING btree ("_path");
|
||||||
|
CREATE INDEX "_blog_v_blocks_document_file_idx" ON "_blog_v_blocks_document" USING btree ("file_id");
|
||||||
|
CREATE INDEX "_blog_v_blocks_donation_order_idx" ON "_blog_v_blocks_donation" USING btree ("_order");
|
||||||
|
CREATE INDEX "_blog_v_blocks_donation_parent_id_idx" ON "_blog_v_blocks_donation" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_blog_v_blocks_donation_path_idx" ON "_blog_v_blocks_donation" USING btree ("_path");
|
||||||
|
CREATE INDEX "_blog_v_blocks_contactform_order_idx" ON "_blog_v_blocks_contactform" USING btree ("_order");
|
||||||
|
CREATE INDEX "_blog_v_blocks_contactform_parent_id_idx" ON "_blog_v_blocks_contactform" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_blog_v_blocks_contactform_path_idx" ON "_blog_v_blocks_contactform" USING btree ("_path");
|
||||||
|
CREATE INDEX "_blog_v_blocks_gallery_items_order_idx" ON "_blog_v_blocks_gallery_items" USING btree ("_order");
|
||||||
|
CREATE INDEX "_blog_v_blocks_gallery_items_parent_id_idx" ON "_blog_v_blocks_gallery_items" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_blog_v_blocks_gallery_items_photo_idx" ON "_blog_v_blocks_gallery_items" USING btree ("photo_id");
|
||||||
|
CREATE INDEX "_blog_v_blocks_gallery_order_idx" ON "_blog_v_blocks_gallery" USING btree ("_order");
|
||||||
|
CREATE INDEX "_blog_v_blocks_gallery_parent_id_idx" ON "_blog_v_blocks_gallery" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_blog_v_blocks_gallery_path_idx" ON "_blog_v_blocks_gallery" USING btree ("_path");
|
||||||
|
CREATE INDEX "_blog_v_blocks_youtube_order_idx" ON "_blog_v_blocks_youtube" USING btree ("_order");
|
||||||
|
CREATE INDEX "_blog_v_blocks_youtube_parent_id_idx" ON "_blog_v_blocks_youtube" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_blog_v_blocks_youtube_path_idx" ON "_blog_v_blocks_youtube" USING btree ("_path");
|
||||||
|
CREATE INDEX "_blog_v_blocks_button_order_idx" ON "_blog_v_blocks_button" USING btree ("_order");
|
||||||
|
CREATE INDEX "_blog_v_blocks_button_parent_id_idx" ON "_blog_v_blocks_button" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_blog_v_blocks_button_path_idx" ON "_blog_v_blocks_button" USING btree ("_path");
|
||||||
|
CREATE INDEX "_blog_v_parent_idx" ON "_blog_v" USING btree ("parent_id");
|
||||||
|
CREATE INDEX "_blog_v_version_version_photo_idx" ON "_blog_v" USING btree ("version_photo_id");
|
||||||
|
CREATE INDEX "_blog_v_version_version_updated_at_idx" ON "_blog_v" USING btree ("version_updated_at");
|
||||||
|
CREATE INDEX "_blog_v_version_version_created_at_idx" ON "_blog_v" USING btree ("version_created_at");
|
||||||
|
CREATE INDEX "_blog_v_version_version__status_idx" ON "_blog_v" USING btree ("version__status");
|
||||||
|
CREATE INDEX "_blog_v_created_at_idx" ON "_blog_v" USING btree ("created_at");
|
||||||
|
CREATE INDEX "_blog_v_updated_at_idx" ON "_blog_v" USING btree ("updated_at");
|
||||||
|
CREATE INDEX "_blog_v_latest_idx" ON "_blog_v" USING btree ("latest");
|
||||||
|
CREATE INDEX "_blog_v_autosave_idx" ON "_blog_v" USING btree ("autosave");
|
||||||
|
CREATE INDEX "_blog_v_rels_order_idx" ON "_blog_v_rels" USING btree ("order");
|
||||||
|
CREATE INDEX "_blog_v_rels_parent_idx" ON "_blog_v_rels" USING btree ("parent_id");
|
||||||
|
CREATE INDEX "_blog_v_rels_path_idx" ON "_blog_v_rels" USING btree ("path");
|
||||||
|
CREATE INDEX "_blog_v_rels_parish_id_idx" ON "_blog_v_rels" USING btree ("parish_id");
|
||||||
|
CREATE INDEX "blog__status_idx" ON "blog" USING btree ("_status");`)
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function down({ db, payload, req }: MigrateDownArgs): Promise<void> {
|
||||||
|
await db.execute(sql`
|
||||||
|
ALTER TABLE "_blog_v_blocks_text" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_blog_v_blocks_document" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_blog_v_blocks_donation" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_blog_v_blocks_contactform" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_blog_v_blocks_gallery_items" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_blog_v_blocks_gallery" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_blog_v_blocks_youtube" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_blog_v_blocks_button" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_blog_v" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_blog_v_rels" DISABLE ROW LEVEL SECURITY;
|
||||||
|
DROP TABLE "_blog_v_blocks_text" CASCADE;
|
||||||
|
DROP TABLE "_blog_v_blocks_document" CASCADE;
|
||||||
|
DROP TABLE "_blog_v_blocks_donation" CASCADE;
|
||||||
|
DROP TABLE "_blog_v_blocks_contactform" CASCADE;
|
||||||
|
DROP TABLE "_blog_v_blocks_gallery_items" CASCADE;
|
||||||
|
DROP TABLE "_blog_v_blocks_gallery" CASCADE;
|
||||||
|
DROP TABLE "_blog_v_blocks_youtube" CASCADE;
|
||||||
|
DROP TABLE "_blog_v_blocks_button" CASCADE;
|
||||||
|
DROP TABLE "_blog_v" CASCADE;
|
||||||
|
DROP TABLE "_blog_v_rels" CASCADE;
|
||||||
|
DROP INDEX "blog__status_idx";
|
||||||
|
ALTER TABLE "announcement" ALTER COLUMN "date" SET DEFAULT '2026-03-15T10:58:14.115Z';
|
||||||
|
ALTER TABLE "calendar" ALTER COLUMN "date" SET DEFAULT '2026-03-15T10:58:14.432Z';
|
||||||
|
ALTER TABLE "blog_blocks_text" ALTER COLUMN "content" SET NOT NULL;
|
||||||
|
ALTER TABLE "blog_blocks_text" ALTER COLUMN "width" SET NOT NULL;
|
||||||
|
ALTER TABLE "blog_blocks_document" ALTER COLUMN "file_id" SET NOT NULL;
|
||||||
|
ALTER TABLE "blog_blocks_document" ALTER COLUMN "button" SET NOT NULL;
|
||||||
|
ALTER TABLE "blog_blocks_contactform" ALTER COLUMN "title" SET NOT NULL;
|
||||||
|
ALTER TABLE "blog_blocks_contactform" ALTER COLUMN "description" SET NOT NULL;
|
||||||
|
ALTER TABLE "blog_blocks_contactform" ALTER COLUMN "email" DROP DEFAULT;
|
||||||
|
ALTER TABLE "blog_blocks_contactform" ALTER COLUMN "email" SET NOT NULL;
|
||||||
|
ALTER TABLE "blog_blocks_gallery_items" ALTER COLUMN "photo_id" SET NOT NULL;
|
||||||
|
ALTER TABLE "blog_blocks_youtube" ALTER COLUMN "youtube_id" SET NOT NULL;
|
||||||
|
ALTER TABLE "blog_blocks_button" ALTER COLUMN "text" SET NOT NULL;
|
||||||
|
ALTER TABLE "blog_blocks_button" ALTER COLUMN "url" SET NOT NULL;
|
||||||
|
ALTER TABLE "blog" ALTER COLUMN "title" SET NOT NULL;
|
||||||
|
ALTER TABLE "blog" ALTER COLUMN "content_excerpt" SET NOT NULL;
|
||||||
|
ALTER TABLE "blog" ALTER COLUMN "configuration_show_on_frontpage" SET NOT NULL;
|
||||||
|
ALTER TABLE "classifieds" ALTER COLUMN "until" SET DEFAULT '2026-04-09T09:58:14.493Z';
|
||||||
|
ALTER TABLE "group_blocks_contactform" ALTER COLUMN "email" DROP DEFAULT;
|
||||||
|
ALTER TABLE "pages_blocks_contactform" ALTER COLUMN "email" DROP DEFAULT;
|
||||||
|
ALTER TABLE "blog" DROP COLUMN "_status";
|
||||||
|
DROP TYPE "public"."enum_blog_status";
|
||||||
|
DROP TYPE "public"."enum__blog_v_blocks_text_width";
|
||||||
|
DROP TYPE "public"."enum__blog_v_version_status";`)
|
||||||
|
}
|
||||||
11879
src/migrations/20260311_105947_drop_features.json
Normal file
11879
src/migrations/20260311_105947_drop_features.json
Normal file
File diff suppressed because it is too large
Load diff
59
src/migrations/20260311_105947_drop_features.ts
Normal file
59
src/migrations/20260311_105947_drop_features.ts
Normal file
|
|
@ -0,0 +1,59 @@
|
||||||
|
import { MigrateUpArgs, MigrateDownArgs, sql } from '@payloadcms/db-postgres'
|
||||||
|
|
||||||
|
export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
||||||
|
await db.execute(sql`
|
||||||
|
ALTER TABLE "pages_blocks_collapsible_image_with_text" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "pages_blocks_publication_and_newsletter" DISABLE ROW LEVEL SECURITY;
|
||||||
|
DROP TABLE "pages_blocks_collapsible_image_with_text" CASCADE;
|
||||||
|
DROP TABLE "pages_blocks_publication_and_newsletter" CASCADE;
|
||||||
|
DROP INDEX "_blog_v_autosave_idx";
|
||||||
|
ALTER TABLE "announcement" ALTER COLUMN "date" SET DEFAULT '2026-03-15T10:59:47.266Z';
|
||||||
|
ALTER TABLE "calendar" ALTER COLUMN "date" SET DEFAULT '2026-03-15T10:59:47.547Z';
|
||||||
|
ALTER TABLE "classifieds" ALTER COLUMN "until" SET DEFAULT '2026-04-10T09:59:47.604Z';
|
||||||
|
ALTER TABLE "_blog_v" DROP COLUMN "autosave";
|
||||||
|
DROP TYPE "public"."enum_pages_blocks_collapsible_image_with_text_background_color";
|
||||||
|
DROP TYPE "public"."enum_pages_blocks_collapsible_image_with_text_schema";`)
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function down({ db, payload, req }: MigrateDownArgs): Promise<void> {
|
||||||
|
await db.execute(sql`
|
||||||
|
CREATE TYPE "public"."enum_pages_blocks_collapsible_image_with_text_background_color" AS ENUM('none', 'soft', 'off-white');
|
||||||
|
CREATE TYPE "public"."enum_pages_blocks_collapsible_image_with_text_schema" AS ENUM('base', 'contrast');
|
||||||
|
CREATE TABLE "pages_blocks_collapsible_image_with_text" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" varchar PRIMARY KEY NOT NULL,
|
||||||
|
"title" varchar NOT NULL,
|
||||||
|
"text" varchar NOT NULL,
|
||||||
|
"image_id" uuid NOT NULL,
|
||||||
|
"content" jsonb NOT NULL,
|
||||||
|
"background_color" "enum_pages_blocks_collapsible_image_with_text_background_color" DEFAULT 'none',
|
||||||
|
"schema" "enum_pages_blocks_collapsible_image_with_text_schema" DEFAULT 'base',
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "pages_blocks_publication_and_newsletter" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" varchar PRIMARY KEY NOT NULL,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
ALTER TABLE "announcement" ALTER COLUMN "date" SET DEFAULT '2026-03-15T14:38:00.254Z';
|
||||||
|
ALTER TABLE "calendar" ALTER COLUMN "date" SET DEFAULT '2026-03-15T14:38:00.534Z';
|
||||||
|
ALTER TABLE "classifieds" ALTER COLUMN "until" SET DEFAULT '2026-04-09T13:38:00.592Z';
|
||||||
|
ALTER TABLE "_blog_v" ADD COLUMN "autosave" boolean;
|
||||||
|
ALTER TABLE "pages_blocks_collapsible_image_with_text" ADD CONSTRAINT "pages_blocks_collapsible_image_with_text_image_id_media_id_fk" FOREIGN KEY ("image_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
|
||||||
|
ALTER TABLE "pages_blocks_collapsible_image_with_text" ADD CONSTRAINT "pages_blocks_collapsible_image_with_text_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."pages"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "pages_blocks_publication_and_newsletter" ADD CONSTRAINT "pages_blocks_publication_and_newsletter_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."pages"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
CREATE INDEX "pages_blocks_collapsible_image_with_text_order_idx" ON "pages_blocks_collapsible_image_with_text" USING btree ("_order");
|
||||||
|
CREATE INDEX "pages_blocks_collapsible_image_with_text_parent_id_idx" ON "pages_blocks_collapsible_image_with_text" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "pages_blocks_collapsible_image_with_text_path_idx" ON "pages_blocks_collapsible_image_with_text" USING btree ("_path");
|
||||||
|
CREATE INDEX "pages_blocks_collapsible_image_with_text_image_idx" ON "pages_blocks_collapsible_image_with_text" USING btree ("image_id");
|
||||||
|
CREATE INDEX "pages_blocks_publication_and_newsletter_order_idx" ON "pages_blocks_publication_and_newsletter" USING btree ("_order");
|
||||||
|
CREATE INDEX "pages_blocks_publication_and_newsletter_parent_id_idx" ON "pages_blocks_publication_and_newsletter" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "pages_blocks_publication_and_newsletter_path_idx" ON "pages_blocks_publication_and_newsletter" USING btree ("_path");
|
||||||
|
CREATE INDEX "_blog_v_autosave_idx" ON "_blog_v" USING btree ("autosave");`)
|
||||||
|
}
|
||||||
17509
src/migrations/20260311_110236_live_preview.json
Normal file
17509
src/migrations/20260311_110236_live_preview.json
Normal file
File diff suppressed because it is too large
Load diff
901
src/migrations/20260311_110236_live_preview.ts
Normal file
901
src/migrations/20260311_110236_live_preview.ts
Normal file
|
|
@ -0,0 +1,901 @@
|
||||||
|
import { MigrateUpArgs, MigrateDownArgs, sql } from '@payloadcms/db-postgres'
|
||||||
|
|
||||||
|
export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
||||||
|
await db.execute(sql`
|
||||||
|
CREATE TYPE "public"."enum_parish_status" AS ENUM('draft', 'published');
|
||||||
|
CREATE TYPE "public"."enum__parish_v_blocks_text_width" AS ENUM('1/2', '3/4');
|
||||||
|
CREATE TYPE "public"."enum__parish_v_version_status" AS ENUM('draft', 'published');
|
||||||
|
CREATE TYPE "public"."enum_event_status" AS ENUM('draft', 'published');
|
||||||
|
CREATE TYPE "public"."enum__event_v_version_status" AS ENUM('draft', 'published');
|
||||||
|
CREATE TYPE "public"."enum_group_status" AS ENUM('draft', 'published');
|
||||||
|
CREATE TYPE "public"."enum__group_v_blocks_text_width" AS ENUM('1/2', '3/4');
|
||||||
|
CREATE TYPE "public"."enum__group_v_version_status" AS ENUM('draft', 'published');
|
||||||
|
CREATE TYPE "public"."enum_pages_status" AS ENUM('draft', 'published');
|
||||||
|
CREATE TYPE "public"."enum__pages_v_blocks_text_width" AS ENUM('1/2', '3/4');
|
||||||
|
CREATE TYPE "public"."enum__pages_v_blocks_title_size" AS ENUM('xl', 'lg', 'md', 'sm');
|
||||||
|
CREATE TYPE "public"."enum__pages_v_blocks_title_align" AS ENUM('left', 'center');
|
||||||
|
CREATE TYPE "public"."enum__pages_v_blocks_section_background_color" AS ENUM('none', 'soft', 'off-white');
|
||||||
|
CREATE TYPE "public"."enum__pages_v_blocks_section_padding" AS ENUM('small', 'medium', 'large');
|
||||||
|
CREATE TYPE "public"."enum__pages_v_blocks_banner_background_position" AS ENUM('center center', 'top center', 'bottom center', 'center left', 'center right', 'top left', 'top right', 'bottom left', 'bottom right');
|
||||||
|
CREATE TYPE "public"."enum__pages_v_blocks_banner_background_size" AS ENUM('cover', 'contain', 'auto');
|
||||||
|
CREATE TYPE "public"."enum__pages_v_blocks_horizontal_rule_color" AS ENUM('base', 'shade1', 'shade2', 'shade3', 'contrast', 'contrastShade1');
|
||||||
|
CREATE TYPE "public"."enum__pages_v_version_status" AS ENUM('draft', 'published');
|
||||||
|
CREATE TABLE "_parish_v_version_contact_persons" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"title" varchar,
|
||||||
|
"description" varchar,
|
||||||
|
"_uuid" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_parish_v_blocks_text" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"content" jsonb,
|
||||||
|
"width" "enum__parish_v_blocks_text_width" DEFAULT '1/2',
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_parish_v_blocks_document" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"file_id" uuid,
|
||||||
|
"button" varchar DEFAULT 'Download Flyer',
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_parish_v_blocks_donation" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_parish_v_blocks_youtube" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"youtube_id" varchar,
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_parish_v_blocks_donation_appeal" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_parish_v_version_gallery" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"photo_id" uuid,
|
||||||
|
"_uuid" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_parish_v" (
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"parent_id" uuid,
|
||||||
|
"version_name" varchar,
|
||||||
|
"version_slug" varchar,
|
||||||
|
"version_description" varchar,
|
||||||
|
"version_history" varchar,
|
||||||
|
"version_contact" varchar,
|
||||||
|
"version_photo_id" uuid,
|
||||||
|
"version_updated_at" timestamp(3) with time zone,
|
||||||
|
"version_created_at" timestamp(3) with time zone,
|
||||||
|
"version__status" "enum__parish_v_version_status" DEFAULT 'draft',
|
||||||
|
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
|
||||||
|
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
|
||||||
|
"latest" boolean
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_parish_v_rels" (
|
||||||
|
"id" serial PRIMARY KEY NOT NULL,
|
||||||
|
"order" integer,
|
||||||
|
"parent_id" uuid NOT NULL,
|
||||||
|
"path" varchar NOT NULL,
|
||||||
|
"church_id" uuid
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_event_v" (
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"parent_id" uuid,
|
||||||
|
"version_title" varchar,
|
||||||
|
"version_date" timestamp(3) with time zone,
|
||||||
|
"version_location_id" uuid,
|
||||||
|
"version_contact_id" uuid,
|
||||||
|
"version_short_description" varchar,
|
||||||
|
"version_description" varchar,
|
||||||
|
"version_rsvp_link" varchar,
|
||||||
|
"version_photo_id" uuid,
|
||||||
|
"version_flyer_id" uuid,
|
||||||
|
"version_cancelled" boolean DEFAULT false,
|
||||||
|
"version_is_recurring" boolean DEFAULT false,
|
||||||
|
"version_updated_at" timestamp(3) with time zone,
|
||||||
|
"version_created_at" timestamp(3) with time zone,
|
||||||
|
"version__status" "enum__event_v_version_status" DEFAULT 'draft',
|
||||||
|
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
|
||||||
|
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
|
||||||
|
"latest" boolean
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_event_v_rels" (
|
||||||
|
"id" serial PRIMARY KEY NOT NULL,
|
||||||
|
"order" integer,
|
||||||
|
"parent_id" uuid NOT NULL,
|
||||||
|
"path" varchar NOT NULL,
|
||||||
|
"parish_id" uuid,
|
||||||
|
"group_id" uuid
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_group_v_blocks_text" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"content" jsonb,
|
||||||
|
"width" "enum__group_v_blocks_text_width" DEFAULT '1/2',
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_group_v_blocks_gallery_items" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"photo_id" uuid,
|
||||||
|
"_uuid" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_group_v_blocks_gallery" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_group_v_blocks_document" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"file_id" uuid,
|
||||||
|
"button" varchar DEFAULT 'Download Flyer',
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_group_v_blocks_donation" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_group_v_blocks_youtube" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"youtube_id" varchar,
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_group_v_blocks_contactform" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"title" varchar DEFAULT 'Ich bin dabei!',
|
||||||
|
"description" varchar DEFAULT 'Um dich anzumelden oder uns zu unterstützen, fülle bitte das Kontaktformular aus. Wir freuen uns sehr, dass du Teil unserer Gemeinschaft bist und mit deinem Engagement dazu beiträgst, unsere Ziele zu erreichen. Solltest du Fragen haben oder weitere Informationen benötigen, zögere nicht, uns zu kontaktieren – wir sind gerne für dich da!',
|
||||||
|
"email" varchar DEFAULT 'kontakt@mutter-teresa-chemnitz.de',
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_group_v_blocks_button" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"text" varchar,
|
||||||
|
"url" varchar,
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_group_v" (
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"parent_id" uuid,
|
||||||
|
"version_photo_id" uuid,
|
||||||
|
"version_name" varchar,
|
||||||
|
"version_slug" varchar,
|
||||||
|
"version_short_description" varchar,
|
||||||
|
"version_text" jsonb,
|
||||||
|
"version_updated_at" timestamp(3) with time zone,
|
||||||
|
"version_created_at" timestamp(3) with time zone,
|
||||||
|
"version__status" "enum__group_v_version_status" DEFAULT 'draft',
|
||||||
|
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
|
||||||
|
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
|
||||||
|
"latest" boolean
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_pages_v_blocks_page_header" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"title" varchar,
|
||||||
|
"description" varchar,
|
||||||
|
"image_id" uuid,
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_pages_v_blocks_text" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"content" jsonb,
|
||||||
|
"width" "enum__pages_v_blocks_text_width" DEFAULT '1/2',
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_pages_v_blocks_title" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"title" varchar,
|
||||||
|
"subtitle" varchar,
|
||||||
|
"size" "enum__pages_v_blocks_title_size" DEFAULT 'lg',
|
||||||
|
"align" "enum__pages_v_blocks_title_align" DEFAULT 'left',
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_pages_v_blocks_section" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"background_color" "enum__pages_v_blocks_section_background_color" DEFAULT 'none',
|
||||||
|
"padding" "enum__pages_v_blocks_section_padding" DEFAULT 'large',
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_pages_v_blocks_gallery_items" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"photo_id" uuid,
|
||||||
|
"_uuid" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_pages_v_blocks_gallery" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_pages_v_blocks_document" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"file_id" uuid,
|
||||||
|
"button" varchar DEFAULT 'Download Flyer',
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_pages_v_blocks_youtube" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"youtube_id" varchar,
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_pages_v_blocks_button" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"text" varchar,
|
||||||
|
"url" varchar,
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_pages_v_blocks_contactform" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"title" varchar DEFAULT 'Ich bin dabei!',
|
||||||
|
"description" varchar DEFAULT 'Um dich anzumelden oder uns zu unterstützen, fülle bitte das Kontaktformular aus. Wir freuen uns sehr, dass du Teil unserer Gemeinschaft bist und mit deinem Engagement dazu beiträgst, unsere Ziele zu erreichen. Solltest du Fragen haben oder weitere Informationen benötigen, zögere nicht, uns zu kontaktieren – wir sind gerne für dich da!',
|
||||||
|
"email" varchar DEFAULT 'kontakt@mutter-teresa-chemnitz.de',
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_pages_v_blocks_donation" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_pages_v_blocks_banner" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"text_line1" varchar,
|
||||||
|
"text_line2" varchar,
|
||||||
|
"text_line3" varchar,
|
||||||
|
"background_color" varchar,
|
||||||
|
"background_image_id" uuid,
|
||||||
|
"background_position" "enum__pages_v_blocks_banner_background_position" DEFAULT 'center center',
|
||||||
|
"background_size" "enum__pages_v_blocks_banner_background_size" DEFAULT 'cover',
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_pages_v_blocks_main_text" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"text" varchar DEFAULT 'Jesus sagte zu ihm: Ich bin der Weg und die Wahrheit und das Leben; niemand kommt zum Vater außer durch mich. Wenn ihr mich erkannt habt, werdet ihr auch meinen Vater erkennen.',
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_pages_v_blocks_horizontal_rule" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"color" "enum__pages_v_blocks_horizontal_rule_color" DEFAULT 'base',
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_pages_v_blocks_blog_slider" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"title" varchar DEFAULT 'Aktuelles',
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_pages_v_blocks_mass_times" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"title" varchar DEFAULT 'Nächste Gottesdienste',
|
||||||
|
"subtitle" varchar,
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_pages_v_blocks_events" (
|
||||||
|
"_order" integer NOT NULL,
|
||||||
|
"_parent_id" uuid NOT NULL,
|
||||||
|
"_path" text NOT NULL,
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"title" varchar DEFAULT 'Veranstaltungen',
|
||||||
|
"items_per_page" numeric DEFAULT 6,
|
||||||
|
"_uuid" varchar,
|
||||||
|
"block_name" varchar
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "_pages_v" (
|
||||||
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
"parent_id" uuid,
|
||||||
|
"version_title" varchar,
|
||||||
|
"version_description" varchar,
|
||||||
|
"version_slug" varchar,
|
||||||
|
"version_updated_at" timestamp(3) with time zone,
|
||||||
|
"version_created_at" timestamp(3) with time zone,
|
||||||
|
"version__status" "enum__pages_v_version_status" DEFAULT 'draft',
|
||||||
|
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
|
||||||
|
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
|
||||||
|
"latest" boolean
|
||||||
|
);
|
||||||
|
|
||||||
|
ALTER TABLE "parish_contact_persons" ALTER COLUMN "title" DROP NOT NULL;
|
||||||
|
ALTER TABLE "parish_contact_persons" ALTER COLUMN "description" DROP NOT NULL;
|
||||||
|
ALTER TABLE "parish_blocks_text" ALTER COLUMN "content" DROP NOT NULL;
|
||||||
|
ALTER TABLE "parish_blocks_text" ALTER COLUMN "width" DROP NOT NULL;
|
||||||
|
ALTER TABLE "parish_blocks_document" ALTER COLUMN "file_id" DROP NOT NULL;
|
||||||
|
ALTER TABLE "parish_blocks_document" ALTER COLUMN "button" DROP NOT NULL;
|
||||||
|
ALTER TABLE "parish_blocks_youtube" ALTER COLUMN "youtube_id" DROP NOT NULL;
|
||||||
|
ALTER TABLE "parish_gallery" ALTER COLUMN "photo_id" DROP NOT NULL;
|
||||||
|
ALTER TABLE "parish" ALTER COLUMN "name" DROP NOT NULL;
|
||||||
|
ALTER TABLE "parish" ALTER COLUMN "slug" DROP NOT NULL;
|
||||||
|
ALTER TABLE "parish" ALTER COLUMN "description" DROP NOT NULL;
|
||||||
|
ALTER TABLE "parish" ALTER COLUMN "history" DROP NOT NULL;
|
||||||
|
ALTER TABLE "parish" ALTER COLUMN "contact" DROP NOT NULL;
|
||||||
|
ALTER TABLE "parish" ALTER COLUMN "photo_id" DROP NOT NULL;
|
||||||
|
ALTER TABLE "announcement" ALTER COLUMN "date" SET DEFAULT '2026-03-15T11:02:35.690Z';
|
||||||
|
ALTER TABLE "calendar" ALTER COLUMN "date" SET DEFAULT '2026-03-15T11:02:35.969Z';
|
||||||
|
ALTER TABLE "event" ALTER COLUMN "title" DROP NOT NULL;
|
||||||
|
ALTER TABLE "event" ALTER COLUMN "date" DROP NOT NULL;
|
||||||
|
ALTER TABLE "event" ALTER COLUMN "location_id" DROP NOT NULL;
|
||||||
|
ALTER TABLE "event" ALTER COLUMN "short_description" DROP NOT NULL;
|
||||||
|
ALTER TABLE "event" ALTER COLUMN "description" DROP NOT NULL;
|
||||||
|
ALTER TABLE "event" ALTER COLUMN "cancelled" DROP NOT NULL;
|
||||||
|
ALTER TABLE "event" ALTER COLUMN "is_recurring" DROP NOT NULL;
|
||||||
|
ALTER TABLE "classifieds" ALTER COLUMN "until" SET DEFAULT '2026-04-10T10:02:36.027Z';
|
||||||
|
ALTER TABLE "group_blocks_text" ALTER COLUMN "content" DROP NOT NULL;
|
||||||
|
ALTER TABLE "group_blocks_text" ALTER COLUMN "width" DROP NOT NULL;
|
||||||
|
ALTER TABLE "group_blocks_gallery_items" ALTER COLUMN "photo_id" DROP NOT NULL;
|
||||||
|
ALTER TABLE "group_blocks_document" ALTER COLUMN "file_id" DROP NOT NULL;
|
||||||
|
ALTER TABLE "group_blocks_document" ALTER COLUMN "button" DROP NOT NULL;
|
||||||
|
ALTER TABLE "group_blocks_youtube" ALTER COLUMN "youtube_id" DROP NOT NULL;
|
||||||
|
ALTER TABLE "group_blocks_contactform" ALTER COLUMN "title" DROP NOT NULL;
|
||||||
|
ALTER TABLE "group_blocks_contactform" ALTER COLUMN "description" DROP NOT NULL;
|
||||||
|
ALTER TABLE "group_blocks_contactform" ALTER COLUMN "email" DROP NOT NULL;
|
||||||
|
ALTER TABLE "group_blocks_button" ALTER COLUMN "text" DROP NOT NULL;
|
||||||
|
ALTER TABLE "group_blocks_button" ALTER COLUMN "url" DROP NOT NULL;
|
||||||
|
ALTER TABLE "group" ALTER COLUMN "name" DROP NOT NULL;
|
||||||
|
ALTER TABLE "group" ALTER COLUMN "slug" DROP NOT NULL;
|
||||||
|
ALTER TABLE "group" ALTER COLUMN "short_description" DROP NOT NULL;
|
||||||
|
ALTER TABLE "pages_blocks_page_header" ALTER COLUMN "title" DROP NOT NULL;
|
||||||
|
ALTER TABLE "pages_blocks_page_header" ALTER COLUMN "description" DROP NOT NULL;
|
||||||
|
ALTER TABLE "pages_blocks_text" ALTER COLUMN "content" DROP NOT NULL;
|
||||||
|
ALTER TABLE "pages_blocks_text" ALTER COLUMN "width" DROP NOT NULL;
|
||||||
|
ALTER TABLE "pages_blocks_title" ALTER COLUMN "title" DROP NOT NULL;
|
||||||
|
ALTER TABLE "pages_blocks_gallery_items" ALTER COLUMN "photo_id" DROP NOT NULL;
|
||||||
|
ALTER TABLE "pages_blocks_document" ALTER COLUMN "file_id" DROP NOT NULL;
|
||||||
|
ALTER TABLE "pages_blocks_document" ALTER COLUMN "button" DROP NOT NULL;
|
||||||
|
ALTER TABLE "pages_blocks_youtube" ALTER COLUMN "youtube_id" DROP NOT NULL;
|
||||||
|
ALTER TABLE "pages_blocks_button" ALTER COLUMN "text" DROP NOT NULL;
|
||||||
|
ALTER TABLE "pages_blocks_button" ALTER COLUMN "url" DROP NOT NULL;
|
||||||
|
ALTER TABLE "pages_blocks_contactform" ALTER COLUMN "title" DROP NOT NULL;
|
||||||
|
ALTER TABLE "pages_blocks_contactform" ALTER COLUMN "description" DROP NOT NULL;
|
||||||
|
ALTER TABLE "pages_blocks_contactform" ALTER COLUMN "email" DROP NOT NULL;
|
||||||
|
ALTER TABLE "pages_blocks_main_text" ALTER COLUMN "text" DROP NOT NULL;
|
||||||
|
ALTER TABLE "pages_blocks_horizontal_rule" ALTER COLUMN "color" DROP NOT NULL;
|
||||||
|
ALTER TABLE "pages" ALTER COLUMN "title" DROP NOT NULL;
|
||||||
|
ALTER TABLE "pages" ALTER COLUMN "slug" DROP NOT NULL;
|
||||||
|
ALTER TABLE "parish" ADD COLUMN "_status" "enum_parish_status" DEFAULT 'draft';
|
||||||
|
ALTER TABLE "event" ADD COLUMN "_status" "enum_event_status" DEFAULT 'draft';
|
||||||
|
ALTER TABLE "group" ADD COLUMN "_status" "enum_group_status" DEFAULT 'draft';
|
||||||
|
ALTER TABLE "pages" ADD COLUMN "_status" "enum_pages_status" DEFAULT 'draft';
|
||||||
|
ALTER TABLE "_parish_v_version_contact_persons" ADD CONSTRAINT "_parish_v_version_contact_persons_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_parish_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_parish_v_blocks_text" ADD CONSTRAINT "_parish_v_blocks_text_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_parish_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_parish_v_blocks_document" ADD CONSTRAINT "_parish_v_blocks_document_file_id_documents_id_fk" FOREIGN KEY ("file_id") REFERENCES "public"."documents"("id") ON DELETE set null ON UPDATE no action;
|
||||||
|
ALTER TABLE "_parish_v_blocks_document" ADD CONSTRAINT "_parish_v_blocks_document_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_parish_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_parish_v_blocks_donation" ADD CONSTRAINT "_parish_v_blocks_donation_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_parish_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_parish_v_blocks_youtube" ADD CONSTRAINT "_parish_v_blocks_youtube_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_parish_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_parish_v_blocks_donation_appeal" ADD CONSTRAINT "_parish_v_blocks_donation_appeal_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_parish_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_parish_v_version_gallery" ADD CONSTRAINT "_parish_v_version_gallery_photo_id_media_id_fk" FOREIGN KEY ("photo_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
|
||||||
|
ALTER TABLE "_parish_v_version_gallery" ADD CONSTRAINT "_parish_v_version_gallery_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_parish_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_parish_v" ADD CONSTRAINT "_parish_v_parent_id_parish_id_fk" FOREIGN KEY ("parent_id") REFERENCES "public"."parish"("id") ON DELETE set null ON UPDATE no action;
|
||||||
|
ALTER TABLE "_parish_v" ADD CONSTRAINT "_parish_v_version_photo_id_media_id_fk" FOREIGN KEY ("version_photo_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
|
||||||
|
ALTER TABLE "_parish_v_rels" ADD CONSTRAINT "_parish_v_rels_parent_fk" FOREIGN KEY ("parent_id") REFERENCES "public"."_parish_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_parish_v_rels" ADD CONSTRAINT "_parish_v_rels_church_fk" FOREIGN KEY ("church_id") REFERENCES "public"."church"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_event_v" ADD CONSTRAINT "_event_v_parent_id_event_id_fk" FOREIGN KEY ("parent_id") REFERENCES "public"."event"("id") ON DELETE set null ON UPDATE no action;
|
||||||
|
ALTER TABLE "_event_v" ADD CONSTRAINT "_event_v_version_location_id_locations_id_fk" FOREIGN KEY ("version_location_id") REFERENCES "public"."locations"("id") ON DELETE set null ON UPDATE no action;
|
||||||
|
ALTER TABLE "_event_v" ADD CONSTRAINT "_event_v_version_contact_id_contact_person_id_fk" FOREIGN KEY ("version_contact_id") REFERENCES "public"."contact_person"("id") ON DELETE set null ON UPDATE no action;
|
||||||
|
ALTER TABLE "_event_v" ADD CONSTRAINT "_event_v_version_photo_id_media_id_fk" FOREIGN KEY ("version_photo_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
|
||||||
|
ALTER TABLE "_event_v" ADD CONSTRAINT "_event_v_version_flyer_id_documents_id_fk" FOREIGN KEY ("version_flyer_id") REFERENCES "public"."documents"("id") ON DELETE set null ON UPDATE no action;
|
||||||
|
ALTER TABLE "_event_v_rels" ADD CONSTRAINT "_event_v_rels_parent_fk" FOREIGN KEY ("parent_id") REFERENCES "public"."_event_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_event_v_rels" ADD CONSTRAINT "_event_v_rels_parish_fk" FOREIGN KEY ("parish_id") REFERENCES "public"."parish"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_event_v_rels" ADD CONSTRAINT "_event_v_rels_group_fk" FOREIGN KEY ("group_id") REFERENCES "public"."group"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_group_v_blocks_text" ADD CONSTRAINT "_group_v_blocks_text_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_group_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_group_v_blocks_gallery_items" ADD CONSTRAINT "_group_v_blocks_gallery_items_photo_id_media_id_fk" FOREIGN KEY ("photo_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
|
||||||
|
ALTER TABLE "_group_v_blocks_gallery_items" ADD CONSTRAINT "_group_v_blocks_gallery_items_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_group_v_blocks_gallery"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_group_v_blocks_gallery" ADD CONSTRAINT "_group_v_blocks_gallery_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_group_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_group_v_blocks_document" ADD CONSTRAINT "_group_v_blocks_document_file_id_documents_id_fk" FOREIGN KEY ("file_id") REFERENCES "public"."documents"("id") ON DELETE set null ON UPDATE no action;
|
||||||
|
ALTER TABLE "_group_v_blocks_document" ADD CONSTRAINT "_group_v_blocks_document_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_group_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_group_v_blocks_donation" ADD CONSTRAINT "_group_v_blocks_donation_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_group_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_group_v_blocks_youtube" ADD CONSTRAINT "_group_v_blocks_youtube_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_group_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_group_v_blocks_contactform" ADD CONSTRAINT "_group_v_blocks_contactform_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_group_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_group_v_blocks_button" ADD CONSTRAINT "_group_v_blocks_button_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_group_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_group_v" ADD CONSTRAINT "_group_v_parent_id_group_id_fk" FOREIGN KEY ("parent_id") REFERENCES "public"."group"("id") ON DELETE set null ON UPDATE no action;
|
||||||
|
ALTER TABLE "_group_v" ADD CONSTRAINT "_group_v_version_photo_id_media_id_fk" FOREIGN KEY ("version_photo_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
|
||||||
|
ALTER TABLE "_pages_v_blocks_page_header" ADD CONSTRAINT "_pages_v_blocks_page_header_image_id_media_id_fk" FOREIGN KEY ("image_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
|
||||||
|
ALTER TABLE "_pages_v_blocks_page_header" ADD CONSTRAINT "_pages_v_blocks_page_header_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_pages_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_pages_v_blocks_text" ADD CONSTRAINT "_pages_v_blocks_text_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_pages_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_pages_v_blocks_title" ADD CONSTRAINT "_pages_v_blocks_title_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_pages_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_pages_v_blocks_section" ADD CONSTRAINT "_pages_v_blocks_section_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_pages_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_pages_v_blocks_gallery_items" ADD CONSTRAINT "_pages_v_blocks_gallery_items_photo_id_media_id_fk" FOREIGN KEY ("photo_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
|
||||||
|
ALTER TABLE "_pages_v_blocks_gallery_items" ADD CONSTRAINT "_pages_v_blocks_gallery_items_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_pages_v_blocks_gallery"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_pages_v_blocks_gallery" ADD CONSTRAINT "_pages_v_blocks_gallery_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_pages_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_pages_v_blocks_document" ADD CONSTRAINT "_pages_v_blocks_document_file_id_documents_id_fk" FOREIGN KEY ("file_id") REFERENCES "public"."documents"("id") ON DELETE set null ON UPDATE no action;
|
||||||
|
ALTER TABLE "_pages_v_blocks_document" ADD CONSTRAINT "_pages_v_blocks_document_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_pages_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_pages_v_blocks_youtube" ADD CONSTRAINT "_pages_v_blocks_youtube_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_pages_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_pages_v_blocks_button" ADD CONSTRAINT "_pages_v_blocks_button_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_pages_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_pages_v_blocks_contactform" ADD CONSTRAINT "_pages_v_blocks_contactform_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_pages_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_pages_v_blocks_donation" ADD CONSTRAINT "_pages_v_blocks_donation_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_pages_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_pages_v_blocks_banner" ADD CONSTRAINT "_pages_v_blocks_banner_background_image_id_media_id_fk" FOREIGN KEY ("background_image_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
|
||||||
|
ALTER TABLE "_pages_v_blocks_banner" ADD CONSTRAINT "_pages_v_blocks_banner_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_pages_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_pages_v_blocks_main_text" ADD CONSTRAINT "_pages_v_blocks_main_text_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_pages_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_pages_v_blocks_horizontal_rule" ADD CONSTRAINT "_pages_v_blocks_horizontal_rule_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_pages_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_pages_v_blocks_blog_slider" ADD CONSTRAINT "_pages_v_blocks_blog_slider_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_pages_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_pages_v_blocks_mass_times" ADD CONSTRAINT "_pages_v_blocks_mass_times_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_pages_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_pages_v_blocks_events" ADD CONSTRAINT "_pages_v_blocks_events_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."_pages_v"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
ALTER TABLE "_pages_v" ADD CONSTRAINT "_pages_v_parent_id_pages_id_fk" FOREIGN KEY ("parent_id") REFERENCES "public"."pages"("id") ON DELETE set null ON UPDATE no action;
|
||||||
|
CREATE INDEX "_parish_v_version_contact_persons_order_idx" ON "_parish_v_version_contact_persons" USING btree ("_order");
|
||||||
|
CREATE INDEX "_parish_v_version_contact_persons_parent_id_idx" ON "_parish_v_version_contact_persons" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_parish_v_blocks_text_order_idx" ON "_parish_v_blocks_text" USING btree ("_order");
|
||||||
|
CREATE INDEX "_parish_v_blocks_text_parent_id_idx" ON "_parish_v_blocks_text" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_parish_v_blocks_text_path_idx" ON "_parish_v_blocks_text" USING btree ("_path");
|
||||||
|
CREATE INDEX "_parish_v_blocks_document_order_idx" ON "_parish_v_blocks_document" USING btree ("_order");
|
||||||
|
CREATE INDEX "_parish_v_blocks_document_parent_id_idx" ON "_parish_v_blocks_document" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_parish_v_blocks_document_path_idx" ON "_parish_v_blocks_document" USING btree ("_path");
|
||||||
|
CREATE INDEX "_parish_v_blocks_document_file_idx" ON "_parish_v_blocks_document" USING btree ("file_id");
|
||||||
|
CREATE INDEX "_parish_v_blocks_donation_order_idx" ON "_parish_v_blocks_donation" USING btree ("_order");
|
||||||
|
CREATE INDEX "_parish_v_blocks_donation_parent_id_idx" ON "_parish_v_blocks_donation" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_parish_v_blocks_donation_path_idx" ON "_parish_v_blocks_donation" USING btree ("_path");
|
||||||
|
CREATE INDEX "_parish_v_blocks_youtube_order_idx" ON "_parish_v_blocks_youtube" USING btree ("_order");
|
||||||
|
CREATE INDEX "_parish_v_blocks_youtube_parent_id_idx" ON "_parish_v_blocks_youtube" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_parish_v_blocks_youtube_path_idx" ON "_parish_v_blocks_youtube" USING btree ("_path");
|
||||||
|
CREATE INDEX "_parish_v_blocks_donation_appeal_order_idx" ON "_parish_v_blocks_donation_appeal" USING btree ("_order");
|
||||||
|
CREATE INDEX "_parish_v_blocks_donation_appeal_parent_id_idx" ON "_parish_v_blocks_donation_appeal" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_parish_v_blocks_donation_appeal_path_idx" ON "_parish_v_blocks_donation_appeal" USING btree ("_path");
|
||||||
|
CREATE INDEX "_parish_v_version_gallery_order_idx" ON "_parish_v_version_gallery" USING btree ("_order");
|
||||||
|
CREATE INDEX "_parish_v_version_gallery_parent_id_idx" ON "_parish_v_version_gallery" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_parish_v_version_gallery_photo_idx" ON "_parish_v_version_gallery" USING btree ("photo_id");
|
||||||
|
CREATE INDEX "_parish_v_parent_idx" ON "_parish_v" USING btree ("parent_id");
|
||||||
|
CREATE INDEX "_parish_v_version_version_photo_idx" ON "_parish_v" USING btree ("version_photo_id");
|
||||||
|
CREATE INDEX "_parish_v_version_version_updated_at_idx" ON "_parish_v" USING btree ("version_updated_at");
|
||||||
|
CREATE INDEX "_parish_v_version_version_created_at_idx" ON "_parish_v" USING btree ("version_created_at");
|
||||||
|
CREATE INDEX "_parish_v_version_version__status_idx" ON "_parish_v" USING btree ("version__status");
|
||||||
|
CREATE INDEX "_parish_v_created_at_idx" ON "_parish_v" USING btree ("created_at");
|
||||||
|
CREATE INDEX "_parish_v_updated_at_idx" ON "_parish_v" USING btree ("updated_at");
|
||||||
|
CREATE INDEX "_parish_v_latest_idx" ON "_parish_v" USING btree ("latest");
|
||||||
|
CREATE INDEX "_parish_v_rels_order_idx" ON "_parish_v_rels" USING btree ("order");
|
||||||
|
CREATE INDEX "_parish_v_rels_parent_idx" ON "_parish_v_rels" USING btree ("parent_id");
|
||||||
|
CREATE INDEX "_parish_v_rels_path_idx" ON "_parish_v_rels" USING btree ("path");
|
||||||
|
CREATE INDEX "_parish_v_rels_church_id_idx" ON "_parish_v_rels" USING btree ("church_id");
|
||||||
|
CREATE INDEX "_event_v_parent_idx" ON "_event_v" USING btree ("parent_id");
|
||||||
|
CREATE INDEX "_event_v_version_version_location_idx" ON "_event_v" USING btree ("version_location_id");
|
||||||
|
CREATE INDEX "_event_v_version_version_contact_idx" ON "_event_v" USING btree ("version_contact_id");
|
||||||
|
CREATE INDEX "_event_v_version_version_photo_idx" ON "_event_v" USING btree ("version_photo_id");
|
||||||
|
CREATE INDEX "_event_v_version_version_flyer_idx" ON "_event_v" USING btree ("version_flyer_id");
|
||||||
|
CREATE INDEX "_event_v_version_version_updated_at_idx" ON "_event_v" USING btree ("version_updated_at");
|
||||||
|
CREATE INDEX "_event_v_version_version_created_at_idx" ON "_event_v" USING btree ("version_created_at");
|
||||||
|
CREATE INDEX "_event_v_version_version__status_idx" ON "_event_v" USING btree ("version__status");
|
||||||
|
CREATE INDEX "_event_v_created_at_idx" ON "_event_v" USING btree ("created_at");
|
||||||
|
CREATE INDEX "_event_v_updated_at_idx" ON "_event_v" USING btree ("updated_at");
|
||||||
|
CREATE INDEX "_event_v_latest_idx" ON "_event_v" USING btree ("latest");
|
||||||
|
CREATE INDEX "_event_v_rels_order_idx" ON "_event_v_rels" USING btree ("order");
|
||||||
|
CREATE INDEX "_event_v_rels_parent_idx" ON "_event_v_rels" USING btree ("parent_id");
|
||||||
|
CREATE INDEX "_event_v_rels_path_idx" ON "_event_v_rels" USING btree ("path");
|
||||||
|
CREATE INDEX "_event_v_rels_parish_id_idx" ON "_event_v_rels" USING btree ("parish_id");
|
||||||
|
CREATE INDEX "_event_v_rels_group_id_idx" ON "_event_v_rels" USING btree ("group_id");
|
||||||
|
CREATE INDEX "_group_v_blocks_text_order_idx" ON "_group_v_blocks_text" USING btree ("_order");
|
||||||
|
CREATE INDEX "_group_v_blocks_text_parent_id_idx" ON "_group_v_blocks_text" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_group_v_blocks_text_path_idx" ON "_group_v_blocks_text" USING btree ("_path");
|
||||||
|
CREATE INDEX "_group_v_blocks_gallery_items_order_idx" ON "_group_v_blocks_gallery_items" USING btree ("_order");
|
||||||
|
CREATE INDEX "_group_v_blocks_gallery_items_parent_id_idx" ON "_group_v_blocks_gallery_items" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_group_v_blocks_gallery_items_photo_idx" ON "_group_v_blocks_gallery_items" USING btree ("photo_id");
|
||||||
|
CREATE INDEX "_group_v_blocks_gallery_order_idx" ON "_group_v_blocks_gallery" USING btree ("_order");
|
||||||
|
CREATE INDEX "_group_v_blocks_gallery_parent_id_idx" ON "_group_v_blocks_gallery" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_group_v_blocks_gallery_path_idx" ON "_group_v_blocks_gallery" USING btree ("_path");
|
||||||
|
CREATE INDEX "_group_v_blocks_document_order_idx" ON "_group_v_blocks_document" USING btree ("_order");
|
||||||
|
CREATE INDEX "_group_v_blocks_document_parent_id_idx" ON "_group_v_blocks_document" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_group_v_blocks_document_path_idx" ON "_group_v_blocks_document" USING btree ("_path");
|
||||||
|
CREATE INDEX "_group_v_blocks_document_file_idx" ON "_group_v_blocks_document" USING btree ("file_id");
|
||||||
|
CREATE INDEX "_group_v_blocks_donation_order_idx" ON "_group_v_blocks_donation" USING btree ("_order");
|
||||||
|
CREATE INDEX "_group_v_blocks_donation_parent_id_idx" ON "_group_v_blocks_donation" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_group_v_blocks_donation_path_idx" ON "_group_v_blocks_donation" USING btree ("_path");
|
||||||
|
CREATE INDEX "_group_v_blocks_youtube_order_idx" ON "_group_v_blocks_youtube" USING btree ("_order");
|
||||||
|
CREATE INDEX "_group_v_blocks_youtube_parent_id_idx" ON "_group_v_blocks_youtube" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_group_v_blocks_youtube_path_idx" ON "_group_v_blocks_youtube" USING btree ("_path");
|
||||||
|
CREATE INDEX "_group_v_blocks_contactform_order_idx" ON "_group_v_blocks_contactform" USING btree ("_order");
|
||||||
|
CREATE INDEX "_group_v_blocks_contactform_parent_id_idx" ON "_group_v_blocks_contactform" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_group_v_blocks_contactform_path_idx" ON "_group_v_blocks_contactform" USING btree ("_path");
|
||||||
|
CREATE INDEX "_group_v_blocks_button_order_idx" ON "_group_v_blocks_button" USING btree ("_order");
|
||||||
|
CREATE INDEX "_group_v_blocks_button_parent_id_idx" ON "_group_v_blocks_button" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_group_v_blocks_button_path_idx" ON "_group_v_blocks_button" USING btree ("_path");
|
||||||
|
CREATE INDEX "_group_v_parent_idx" ON "_group_v" USING btree ("parent_id");
|
||||||
|
CREATE INDEX "_group_v_version_version_photo_idx" ON "_group_v" USING btree ("version_photo_id");
|
||||||
|
CREATE INDEX "_group_v_version_version_slug_idx" ON "_group_v" USING btree ("version_slug");
|
||||||
|
CREATE INDEX "_group_v_version_version_updated_at_idx" ON "_group_v" USING btree ("version_updated_at");
|
||||||
|
CREATE INDEX "_group_v_version_version_created_at_idx" ON "_group_v" USING btree ("version_created_at");
|
||||||
|
CREATE INDEX "_group_v_version_version__status_idx" ON "_group_v" USING btree ("version__status");
|
||||||
|
CREATE INDEX "_group_v_created_at_idx" ON "_group_v" USING btree ("created_at");
|
||||||
|
CREATE INDEX "_group_v_updated_at_idx" ON "_group_v" USING btree ("updated_at");
|
||||||
|
CREATE INDEX "_group_v_latest_idx" ON "_group_v" USING btree ("latest");
|
||||||
|
CREATE INDEX "_pages_v_blocks_page_header_order_idx" ON "_pages_v_blocks_page_header" USING btree ("_order");
|
||||||
|
CREATE INDEX "_pages_v_blocks_page_header_parent_id_idx" ON "_pages_v_blocks_page_header" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_pages_v_blocks_page_header_path_idx" ON "_pages_v_blocks_page_header" USING btree ("_path");
|
||||||
|
CREATE INDEX "_pages_v_blocks_page_header_image_idx" ON "_pages_v_blocks_page_header" USING btree ("image_id");
|
||||||
|
CREATE INDEX "_pages_v_blocks_text_order_idx" ON "_pages_v_blocks_text" USING btree ("_order");
|
||||||
|
CREATE INDEX "_pages_v_blocks_text_parent_id_idx" ON "_pages_v_blocks_text" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_pages_v_blocks_text_path_idx" ON "_pages_v_blocks_text" USING btree ("_path");
|
||||||
|
CREATE INDEX "_pages_v_blocks_title_order_idx" ON "_pages_v_blocks_title" USING btree ("_order");
|
||||||
|
CREATE INDEX "_pages_v_blocks_title_parent_id_idx" ON "_pages_v_blocks_title" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_pages_v_blocks_title_path_idx" ON "_pages_v_blocks_title" USING btree ("_path");
|
||||||
|
CREATE INDEX "_pages_v_blocks_section_order_idx" ON "_pages_v_blocks_section" USING btree ("_order");
|
||||||
|
CREATE INDEX "_pages_v_blocks_section_parent_id_idx" ON "_pages_v_blocks_section" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_pages_v_blocks_section_path_idx" ON "_pages_v_blocks_section" USING btree ("_path");
|
||||||
|
CREATE INDEX "_pages_v_blocks_gallery_items_order_idx" ON "_pages_v_blocks_gallery_items" USING btree ("_order");
|
||||||
|
CREATE INDEX "_pages_v_blocks_gallery_items_parent_id_idx" ON "_pages_v_blocks_gallery_items" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_pages_v_blocks_gallery_items_photo_idx" ON "_pages_v_blocks_gallery_items" USING btree ("photo_id");
|
||||||
|
CREATE INDEX "_pages_v_blocks_gallery_order_idx" ON "_pages_v_blocks_gallery" USING btree ("_order");
|
||||||
|
CREATE INDEX "_pages_v_blocks_gallery_parent_id_idx" ON "_pages_v_blocks_gallery" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_pages_v_blocks_gallery_path_idx" ON "_pages_v_blocks_gallery" USING btree ("_path");
|
||||||
|
CREATE INDEX "_pages_v_blocks_document_order_idx" ON "_pages_v_blocks_document" USING btree ("_order");
|
||||||
|
CREATE INDEX "_pages_v_blocks_document_parent_id_idx" ON "_pages_v_blocks_document" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_pages_v_blocks_document_path_idx" ON "_pages_v_blocks_document" USING btree ("_path");
|
||||||
|
CREATE INDEX "_pages_v_blocks_document_file_idx" ON "_pages_v_blocks_document" USING btree ("file_id");
|
||||||
|
CREATE INDEX "_pages_v_blocks_youtube_order_idx" ON "_pages_v_blocks_youtube" USING btree ("_order");
|
||||||
|
CREATE INDEX "_pages_v_blocks_youtube_parent_id_idx" ON "_pages_v_blocks_youtube" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_pages_v_blocks_youtube_path_idx" ON "_pages_v_blocks_youtube" USING btree ("_path");
|
||||||
|
CREATE INDEX "_pages_v_blocks_button_order_idx" ON "_pages_v_blocks_button" USING btree ("_order");
|
||||||
|
CREATE INDEX "_pages_v_blocks_button_parent_id_idx" ON "_pages_v_blocks_button" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_pages_v_blocks_button_path_idx" ON "_pages_v_blocks_button" USING btree ("_path");
|
||||||
|
CREATE INDEX "_pages_v_blocks_contactform_order_idx" ON "_pages_v_blocks_contactform" USING btree ("_order");
|
||||||
|
CREATE INDEX "_pages_v_blocks_contactform_parent_id_idx" ON "_pages_v_blocks_contactform" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_pages_v_blocks_contactform_path_idx" ON "_pages_v_blocks_contactform" USING btree ("_path");
|
||||||
|
CREATE INDEX "_pages_v_blocks_donation_order_idx" ON "_pages_v_blocks_donation" USING btree ("_order");
|
||||||
|
CREATE INDEX "_pages_v_blocks_donation_parent_id_idx" ON "_pages_v_blocks_donation" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_pages_v_blocks_donation_path_idx" ON "_pages_v_blocks_donation" USING btree ("_path");
|
||||||
|
CREATE INDEX "_pages_v_blocks_banner_order_idx" ON "_pages_v_blocks_banner" USING btree ("_order");
|
||||||
|
CREATE INDEX "_pages_v_blocks_banner_parent_id_idx" ON "_pages_v_blocks_banner" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_pages_v_blocks_banner_path_idx" ON "_pages_v_blocks_banner" USING btree ("_path");
|
||||||
|
CREATE INDEX "_pages_v_blocks_banner_background_image_idx" ON "_pages_v_blocks_banner" USING btree ("background_image_id");
|
||||||
|
CREATE INDEX "_pages_v_blocks_main_text_order_idx" ON "_pages_v_blocks_main_text" USING btree ("_order");
|
||||||
|
CREATE INDEX "_pages_v_blocks_main_text_parent_id_idx" ON "_pages_v_blocks_main_text" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_pages_v_blocks_main_text_path_idx" ON "_pages_v_blocks_main_text" USING btree ("_path");
|
||||||
|
CREATE INDEX "_pages_v_blocks_horizontal_rule_order_idx" ON "_pages_v_blocks_horizontal_rule" USING btree ("_order");
|
||||||
|
CREATE INDEX "_pages_v_blocks_horizontal_rule_parent_id_idx" ON "_pages_v_blocks_horizontal_rule" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_pages_v_blocks_horizontal_rule_path_idx" ON "_pages_v_blocks_horizontal_rule" USING btree ("_path");
|
||||||
|
CREATE INDEX "_pages_v_blocks_blog_slider_order_idx" ON "_pages_v_blocks_blog_slider" USING btree ("_order");
|
||||||
|
CREATE INDEX "_pages_v_blocks_blog_slider_parent_id_idx" ON "_pages_v_blocks_blog_slider" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_pages_v_blocks_blog_slider_path_idx" ON "_pages_v_blocks_blog_slider" USING btree ("_path");
|
||||||
|
CREATE INDEX "_pages_v_blocks_mass_times_order_idx" ON "_pages_v_blocks_mass_times" USING btree ("_order");
|
||||||
|
CREATE INDEX "_pages_v_blocks_mass_times_parent_id_idx" ON "_pages_v_blocks_mass_times" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_pages_v_blocks_mass_times_path_idx" ON "_pages_v_blocks_mass_times" USING btree ("_path");
|
||||||
|
CREATE INDEX "_pages_v_blocks_events_order_idx" ON "_pages_v_blocks_events" USING btree ("_order");
|
||||||
|
CREATE INDEX "_pages_v_blocks_events_parent_id_idx" ON "_pages_v_blocks_events" USING btree ("_parent_id");
|
||||||
|
CREATE INDEX "_pages_v_blocks_events_path_idx" ON "_pages_v_blocks_events" USING btree ("_path");
|
||||||
|
CREATE INDEX "_pages_v_parent_idx" ON "_pages_v" USING btree ("parent_id");
|
||||||
|
CREATE INDEX "_pages_v_version_version_slug_idx" ON "_pages_v" USING btree ("version_slug");
|
||||||
|
CREATE INDEX "_pages_v_version_version_updated_at_idx" ON "_pages_v" USING btree ("version_updated_at");
|
||||||
|
CREATE INDEX "_pages_v_version_version_created_at_idx" ON "_pages_v" USING btree ("version_created_at");
|
||||||
|
CREATE INDEX "_pages_v_version_version__status_idx" ON "_pages_v" USING btree ("version__status");
|
||||||
|
CREATE INDEX "_pages_v_created_at_idx" ON "_pages_v" USING btree ("created_at");
|
||||||
|
CREATE INDEX "_pages_v_updated_at_idx" ON "_pages_v" USING btree ("updated_at");
|
||||||
|
CREATE INDEX "_pages_v_latest_idx" ON "_pages_v" USING btree ("latest");
|
||||||
|
CREATE INDEX "parish__status_idx" ON "parish" USING btree ("_status");
|
||||||
|
CREATE INDEX "event__status_idx" ON "event" USING btree ("_status");
|
||||||
|
CREATE INDEX "group__status_idx" ON "group" USING btree ("_status");
|
||||||
|
CREATE INDEX "pages__status_idx" ON "pages" USING btree ("_status");
|
||||||
|
|
||||||
|
|
||||||
|
UPDATE "blog" SET "_status" = 'published' WHERE "_status" = 'draft';
|
||||||
|
UPDATE "parish" SET "_status" = 'published' WHERE "_status" = 'draft';
|
||||||
|
UPDATE "event" SET "_status" = 'published' WHERE "_status" = 'draft';
|
||||||
|
UPDATE "group" SET "_status" = 'published' WHERE "_status" = 'draft';
|
||||||
|
UPDATE "pages" SET "_status" = 'published' WHERE "_status" = 'draft';
|
||||||
|
|
||||||
|
INSERT INTO "_blog_v" (parent_id, version_photo_id, version_title, version_content_excerpt, version_configuration_show_on_frontpage, version_configuration_display_from_date, version_configuration_display_till_date, version_updated_at, version_created_at, version__status, latest)
|
||||||
|
SELECT id, photo_id, title, content_excerpt, configuration_show_on_frontpage, configuration_display_from_date, configuration_display_till_date, updated_at, created_at, 'published', true
|
||||||
|
FROM "blog" b
|
||||||
|
WHERE NOT EXISTS (SELECT 1 FROM "_blog_v" v WHERE v.parent_id = b.id);
|
||||||
|
|
||||||
|
INSERT INTO "_event_v" (parent_id, version_title, version_date, version_location_id, version_contact_id, version_short_description, version_description, version_rsvp_link, version_photo_id, version_flyer_id, version_cancelled, version_is_recurring, version_updated_at, version_created_at, version__status, latest)
|
||||||
|
SELECT id, title, date, location_id, contact_id, short_description, description, rsvp_link, photo_id, flyer_id, cancelled, is_recurring, updated_at, created_at, 'published', true
|
||||||
|
FROM "event" e
|
||||||
|
WHERE NOT EXISTS (SELECT 1 FROM "_event_v" v WHERE v.parent_id = e.id);
|
||||||
|
|
||||||
|
INSERT INTO "_group_v" (parent_id, version_photo_id, version_name, version_slug, version_short_description, version_text, version_updated_at, version_created_at, version__status, latest)
|
||||||
|
SELECT id, photo_id, name, slug, short_description, text, updated_at, created_at, 'published', true
|
||||||
|
FROM "group" g
|
||||||
|
WHERE NOT EXISTS (SELECT 1 FROM "_group_v" v WHERE v.parent_id = g.id);
|
||||||
|
|
||||||
|
INSERT INTO "_pages_v" (parent_id, version_title, version_description, version_slug, version_updated_at, version_created_at, version__status, latest)
|
||||||
|
SELECT id, title, description, slug, updated_at, created_at, 'published', true
|
||||||
|
FROM "pages" p
|
||||||
|
WHERE NOT EXISTS (SELECT 1 FROM "_pages_v" v WHERE v.parent_id = p.id);
|
||||||
|
|
||||||
|
INSERT INTO "_parish_v" (parent_id, version_name, version_slug, version_description, version_history, version_contact, version_photo_id, version_updated_at, version_created_at, version__status, latest)
|
||||||
|
SELECT id, name, slug, description, history, contact, photo_id, updated_at, created_at, 'published', true
|
||||||
|
FROM "parish" pa
|
||||||
|
WHERE NOT EXISTS (SELECT 1 FROM "_parish_v" v WHERE v.parent_id = pa.id);
|
||||||
|
`)
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function down({ db, payload, req }: MigrateDownArgs): Promise<void> {
|
||||||
|
await db.execute(sql`
|
||||||
|
ALTER TABLE "_parish_v_version_contact_persons" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_parish_v_blocks_text" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_parish_v_blocks_document" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_parish_v_blocks_donation" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_parish_v_blocks_youtube" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_parish_v_blocks_donation_appeal" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_parish_v_version_gallery" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_parish_v" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_parish_v_rels" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_event_v" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_event_v_rels" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_group_v_blocks_text" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_group_v_blocks_gallery_items" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_group_v_blocks_gallery" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_group_v_blocks_document" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_group_v_blocks_donation" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_group_v_blocks_youtube" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_group_v_blocks_contactform" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_group_v_blocks_button" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_group_v" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_pages_v_blocks_page_header" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_pages_v_blocks_text" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_pages_v_blocks_title" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_pages_v_blocks_section" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_pages_v_blocks_gallery_items" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_pages_v_blocks_gallery" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_pages_v_blocks_document" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_pages_v_blocks_youtube" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_pages_v_blocks_button" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_pages_v_blocks_contactform" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_pages_v_blocks_donation" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_pages_v_blocks_banner" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_pages_v_blocks_main_text" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_pages_v_blocks_horizontal_rule" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_pages_v_blocks_blog_slider" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_pages_v_blocks_mass_times" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_pages_v_blocks_events" DISABLE ROW LEVEL SECURITY;
|
||||||
|
ALTER TABLE "_pages_v" DISABLE ROW LEVEL SECURITY;
|
||||||
|
DROP TABLE "_parish_v_version_contact_persons" CASCADE;
|
||||||
|
DROP TABLE "_parish_v_blocks_text" CASCADE;
|
||||||
|
DROP TABLE "_parish_v_blocks_document" CASCADE;
|
||||||
|
DROP TABLE "_parish_v_blocks_donation" CASCADE;
|
||||||
|
DROP TABLE "_parish_v_blocks_youtube" CASCADE;
|
||||||
|
DROP TABLE "_parish_v_blocks_donation_appeal" CASCADE;
|
||||||
|
DROP TABLE "_parish_v_version_gallery" CASCADE;
|
||||||
|
DROP TABLE "_parish_v" CASCADE;
|
||||||
|
DROP TABLE "_parish_v_rels" CASCADE;
|
||||||
|
DROP TABLE "_event_v" CASCADE;
|
||||||
|
DROP TABLE "_event_v_rels" CASCADE;
|
||||||
|
DROP TABLE "_group_v_blocks_text" CASCADE;
|
||||||
|
DROP TABLE "_group_v_blocks_gallery_items" CASCADE;
|
||||||
|
DROP TABLE "_group_v_blocks_gallery" CASCADE;
|
||||||
|
DROP TABLE "_group_v_blocks_document" CASCADE;
|
||||||
|
DROP TABLE "_group_v_blocks_donation" CASCADE;
|
||||||
|
DROP TABLE "_group_v_blocks_youtube" CASCADE;
|
||||||
|
DROP TABLE "_group_v_blocks_contactform" CASCADE;
|
||||||
|
DROP TABLE "_group_v_blocks_button" CASCADE;
|
||||||
|
DROP TABLE "_group_v" CASCADE;
|
||||||
|
DROP TABLE "_pages_v_blocks_page_header" CASCADE;
|
||||||
|
DROP TABLE "_pages_v_blocks_text" CASCADE;
|
||||||
|
DROP TABLE "_pages_v_blocks_title" CASCADE;
|
||||||
|
DROP TABLE "_pages_v_blocks_section" CASCADE;
|
||||||
|
DROP TABLE "_pages_v_blocks_gallery_items" CASCADE;
|
||||||
|
DROP TABLE "_pages_v_blocks_gallery" CASCADE;
|
||||||
|
DROP TABLE "_pages_v_blocks_document" CASCADE;
|
||||||
|
DROP TABLE "_pages_v_blocks_youtube" CASCADE;
|
||||||
|
DROP TABLE "_pages_v_blocks_button" CASCADE;
|
||||||
|
DROP TABLE "_pages_v_blocks_contactform" CASCADE;
|
||||||
|
DROP TABLE "_pages_v_blocks_donation" CASCADE;
|
||||||
|
DROP TABLE "_pages_v_blocks_banner" CASCADE;
|
||||||
|
DROP TABLE "_pages_v_blocks_main_text" CASCADE;
|
||||||
|
DROP TABLE "_pages_v_blocks_horizontal_rule" CASCADE;
|
||||||
|
DROP TABLE "_pages_v_blocks_blog_slider" CASCADE;
|
||||||
|
DROP TABLE "_pages_v_blocks_mass_times" CASCADE;
|
||||||
|
DROP TABLE "_pages_v_blocks_events" CASCADE;
|
||||||
|
DROP TABLE "_pages_v" CASCADE;
|
||||||
|
DROP INDEX "parish__status_idx";
|
||||||
|
DROP INDEX "event__status_idx";
|
||||||
|
DROP INDEX "group__status_idx";
|
||||||
|
DROP INDEX "pages__status_idx";
|
||||||
|
ALTER TABLE "parish_contact_persons" ALTER COLUMN "title" SET NOT NULL;
|
||||||
|
ALTER TABLE "parish_contact_persons" ALTER COLUMN "description" SET NOT NULL;
|
||||||
|
ALTER TABLE "parish_blocks_text" ALTER COLUMN "content" SET NOT NULL;
|
||||||
|
ALTER TABLE "parish_blocks_text" ALTER COLUMN "width" SET NOT NULL;
|
||||||
|
ALTER TABLE "parish_blocks_document" ALTER COLUMN "file_id" SET NOT NULL;
|
||||||
|
ALTER TABLE "parish_blocks_document" ALTER COLUMN "button" SET NOT NULL;
|
||||||
|
ALTER TABLE "parish_blocks_youtube" ALTER COLUMN "youtube_id" SET NOT NULL;
|
||||||
|
ALTER TABLE "parish_gallery" ALTER COLUMN "photo_id" SET NOT NULL;
|
||||||
|
ALTER TABLE "parish" ALTER COLUMN "name" SET NOT NULL;
|
||||||
|
ALTER TABLE "parish" ALTER COLUMN "slug" SET NOT NULL;
|
||||||
|
ALTER TABLE "parish" ALTER COLUMN "description" SET NOT NULL;
|
||||||
|
ALTER TABLE "parish" ALTER COLUMN "history" SET NOT NULL;
|
||||||
|
ALTER TABLE "parish" ALTER COLUMN "contact" SET NOT NULL;
|
||||||
|
ALTER TABLE "parish" ALTER COLUMN "photo_id" SET NOT NULL;
|
||||||
|
ALTER TABLE "announcement" ALTER COLUMN "date" SET DEFAULT '2026-03-15T10:59:47.266Z';
|
||||||
|
ALTER TABLE "calendar" ALTER COLUMN "date" SET DEFAULT '2026-03-15T10:59:47.547Z';
|
||||||
|
ALTER TABLE "event" ALTER COLUMN "title" SET NOT NULL;
|
||||||
|
ALTER TABLE "event" ALTER COLUMN "date" SET NOT NULL;
|
||||||
|
ALTER TABLE "event" ALTER COLUMN "location_id" SET NOT NULL;
|
||||||
|
ALTER TABLE "event" ALTER COLUMN "short_description" SET NOT NULL;
|
||||||
|
ALTER TABLE "event" ALTER COLUMN "description" SET NOT NULL;
|
||||||
|
ALTER TABLE "event" ALTER COLUMN "cancelled" SET NOT NULL;
|
||||||
|
ALTER TABLE "event" ALTER COLUMN "is_recurring" SET NOT NULL;
|
||||||
|
ALTER TABLE "classifieds" ALTER COLUMN "until" SET DEFAULT '2026-04-10T09:59:47.604Z';
|
||||||
|
ALTER TABLE "group_blocks_text" ALTER COLUMN "content" SET NOT NULL;
|
||||||
|
ALTER TABLE "group_blocks_text" ALTER COLUMN "width" SET NOT NULL;
|
||||||
|
ALTER TABLE "group_blocks_gallery_items" ALTER COLUMN "photo_id" SET NOT NULL;
|
||||||
|
ALTER TABLE "group_blocks_document" ALTER COLUMN "file_id" SET NOT NULL;
|
||||||
|
ALTER TABLE "group_blocks_document" ALTER COLUMN "button" SET NOT NULL;
|
||||||
|
ALTER TABLE "group_blocks_youtube" ALTER COLUMN "youtube_id" SET NOT NULL;
|
||||||
|
ALTER TABLE "group_blocks_contactform" ALTER COLUMN "title" SET NOT NULL;
|
||||||
|
ALTER TABLE "group_blocks_contactform" ALTER COLUMN "description" SET NOT NULL;
|
||||||
|
ALTER TABLE "group_blocks_contactform" ALTER COLUMN "email" SET NOT NULL;
|
||||||
|
ALTER TABLE "group_blocks_button" ALTER COLUMN "text" SET NOT NULL;
|
||||||
|
ALTER TABLE "group_blocks_button" ALTER COLUMN "url" SET NOT NULL;
|
||||||
|
ALTER TABLE "group" ALTER COLUMN "name" SET NOT NULL;
|
||||||
|
ALTER TABLE "group" ALTER COLUMN "slug" SET NOT NULL;
|
||||||
|
ALTER TABLE "group" ALTER COLUMN "short_description" SET NOT NULL;
|
||||||
|
ALTER TABLE "pages_blocks_page_header" ALTER COLUMN "title" SET NOT NULL;
|
||||||
|
ALTER TABLE "pages_blocks_page_header" ALTER COLUMN "description" SET NOT NULL;
|
||||||
|
ALTER TABLE "pages_blocks_text" ALTER COLUMN "content" SET NOT NULL;
|
||||||
|
ALTER TABLE "pages_blocks_text" ALTER COLUMN "width" SET NOT NULL;
|
||||||
|
ALTER TABLE "pages_blocks_title" ALTER COLUMN "title" SET NOT NULL;
|
||||||
|
ALTER TABLE "pages_blocks_gallery_items" ALTER COLUMN "photo_id" SET NOT NULL;
|
||||||
|
ALTER TABLE "pages_blocks_document" ALTER COLUMN "file_id" SET NOT NULL;
|
||||||
|
ALTER TABLE "pages_blocks_document" ALTER COLUMN "button" SET NOT NULL;
|
||||||
|
ALTER TABLE "pages_blocks_youtube" ALTER COLUMN "youtube_id" SET NOT NULL;
|
||||||
|
ALTER TABLE "pages_blocks_button" ALTER COLUMN "text" SET NOT NULL;
|
||||||
|
ALTER TABLE "pages_blocks_button" ALTER COLUMN "url" SET NOT NULL;
|
||||||
|
ALTER TABLE "pages_blocks_contactform" ALTER COLUMN "title" SET NOT NULL;
|
||||||
|
ALTER TABLE "pages_blocks_contactform" ALTER COLUMN "description" SET NOT NULL;
|
||||||
|
ALTER TABLE "pages_blocks_contactform" ALTER COLUMN "email" SET NOT NULL;
|
||||||
|
ALTER TABLE "pages_blocks_main_text" ALTER COLUMN "text" SET NOT NULL;
|
||||||
|
ALTER TABLE "pages_blocks_horizontal_rule" ALTER COLUMN "color" SET NOT NULL;
|
||||||
|
ALTER TABLE "pages" ALTER COLUMN "title" SET NOT NULL;
|
||||||
|
ALTER TABLE "pages" ALTER COLUMN "slug" SET NOT NULL;
|
||||||
|
ALTER TABLE "parish" DROP COLUMN "_status";
|
||||||
|
ALTER TABLE "event" DROP COLUMN "_status";
|
||||||
|
ALTER TABLE "group" DROP COLUMN "_status";
|
||||||
|
ALTER TABLE "pages" DROP COLUMN "_status";
|
||||||
|
DROP TYPE "public"."enum_parish_status";
|
||||||
|
DROP TYPE "public"."enum__parish_v_blocks_text_width";
|
||||||
|
DROP TYPE "public"."enum__parish_v_version_status";
|
||||||
|
DROP TYPE "public"."enum_event_status";
|
||||||
|
DROP TYPE "public"."enum__event_v_version_status";
|
||||||
|
DROP TYPE "public"."enum_group_status";
|
||||||
|
DROP TYPE "public"."enum__group_v_blocks_text_width";
|
||||||
|
DROP TYPE "public"."enum__group_v_version_status";
|
||||||
|
DROP TYPE "public"."enum_pages_status";
|
||||||
|
DROP TYPE "public"."enum__pages_v_blocks_text_width";
|
||||||
|
DROP TYPE "public"."enum__pages_v_blocks_title_size";
|
||||||
|
DROP TYPE "public"."enum__pages_v_blocks_title_align";
|
||||||
|
DROP TYPE "public"."enum__pages_v_blocks_section_background_color";
|
||||||
|
DROP TYPE "public"."enum__pages_v_blocks_section_padding";
|
||||||
|
DROP TYPE "public"."enum__pages_v_blocks_banner_background_position";
|
||||||
|
DROP TYPE "public"."enum__pages_v_blocks_banner_background_size";
|
||||||
|
DROP TYPE "public"."enum__pages_v_blocks_horizontal_rule_color";
|
||||||
|
DROP TYPE "public"."enum__pages_v_version_status";`)
|
||||||
|
}
|
||||||
|
|
@ -17,6 +17,10 @@ import * as migration_20260106_085445_donationforms from './20260106_085445_dona
|
||||||
import * as migration_20260106_103529_donation_appeal from './20260106_103529_donation_appeal';
|
import * as migration_20260106_103529_donation_appeal from './20260106_103529_donation_appeal';
|
||||||
import * as migration_20260205_155735_version_bump from './20260205_155735_version_bump';
|
import * as migration_20260205_155735_version_bump from './20260205_155735_version_bump';
|
||||||
import * as migration_20260309_111617_many_new_features from './20260309_111617_many_new_features';
|
import * as migration_20260309_111617_many_new_features from './20260309_111617_many_new_features';
|
||||||
|
import * as migration_20260310_105814 from './20260310_105814';
|
||||||
|
import * as migration_20260310_143800 from './20260310_143800';
|
||||||
|
import * as migration_20260311_105947_drop_features from './20260311_105947_drop_features';
|
||||||
|
import * as migration_20260311_110236_live_preview from './20260311_110236_live_preview';
|
||||||
|
|
||||||
export const migrations = [
|
export const migrations = [
|
||||||
{
|
{
|
||||||
|
|
@ -112,6 +116,26 @@ export const migrations = [
|
||||||
{
|
{
|
||||||
up: migration_20260309_111617_many_new_features.up,
|
up: migration_20260309_111617_many_new_features.up,
|
||||||
down: migration_20260309_111617_many_new_features.down,
|
down: migration_20260309_111617_many_new_features.down,
|
||||||
name: '20260309_111617_many_new_features'
|
name: '20260309_111617_many_new_features',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
up: migration_20260310_105814.up,
|
||||||
|
down: migration_20260310_105814.down,
|
||||||
|
name: '20260310_105814',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
up: migration_20260310_143800.up,
|
||||||
|
down: migration_20260310_143800.down,
|
||||||
|
name: '20260310_143800',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
up: migration_20260311_105947_drop_features.up,
|
||||||
|
down: migration_20260311_105947_drop_features.down,
|
||||||
|
name: '20260311_105947_drop_features',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
up: migration_20260311_110236_live_preview.up,
|
||||||
|
down: migration_20260311_110236_live_preview.down,
|
||||||
|
name: '20260311_110236_live_preview',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
|
||||||
|
|
@ -126,14 +126,10 @@ export interface Config {
|
||||||
globals: {
|
globals: {
|
||||||
menu: Menu;
|
menu: Menu;
|
||||||
footer: Footer;
|
footer: Footer;
|
||||||
design: Design;
|
|
||||||
'site-config': SiteConfig;
|
|
||||||
};
|
};
|
||||||
globalsSelect: {
|
globalsSelect: {
|
||||||
menu: MenuSelect<false> | MenuSelect<true>;
|
menu: MenuSelect<false> | MenuSelect<true>;
|
||||||
footer: FooterSelect<false> | FooterSelect<true>;
|
footer: FooterSelect<false> | FooterSelect<true>;
|
||||||
design: DesignSelect<false> | DesignSelect<true>;
|
|
||||||
'site-config': SiteConfigSelect<false> | SiteConfigSelect<true>;
|
|
||||||
};
|
};
|
||||||
locale: null;
|
locale: null;
|
||||||
user: User & {
|
user: User & {
|
||||||
|
|
@ -241,6 +237,7 @@ export interface Parish {
|
||||||
| null;
|
| null;
|
||||||
updatedAt: string;
|
updatedAt: string;
|
||||||
createdAt: string;
|
createdAt: string;
|
||||||
|
_status?: ('draft' | 'published') | null;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* This interface was referenced by `Config`'s JSON-Schema
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
|
@ -259,7 +256,6 @@ export interface Church {
|
||||||
*/
|
*/
|
||||||
export interface Document {
|
export interface Document {
|
||||||
id: string;
|
id: string;
|
||||||
prefix?: string | null;
|
|
||||||
updatedAt: string;
|
updatedAt: string;
|
||||||
createdAt: string;
|
createdAt: string;
|
||||||
url?: string | null;
|
url?: string | null;
|
||||||
|
|
@ -285,7 +281,6 @@ export interface Media {
|
||||||
publicWithoutName: boolean;
|
publicWithoutName: boolean;
|
||||||
consent: boolean;
|
consent: boolean;
|
||||||
};
|
};
|
||||||
prefix?: string | null;
|
|
||||||
updatedAt: string;
|
updatedAt: string;
|
||||||
createdAt: string;
|
createdAt: string;
|
||||||
url?: string | null;
|
url?: string | null;
|
||||||
|
|
@ -474,6 +469,7 @@ export interface Blog {
|
||||||
};
|
};
|
||||||
updatedAt: string;
|
updatedAt: string;
|
||||||
createdAt: string;
|
createdAt: string;
|
||||||
|
_status?: ('draft' | 'published') | null;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* This interface was referenced by `Config`'s JSON-Schema
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
|
@ -522,6 +518,7 @@ export interface Event {
|
||||||
isRecurring: boolean;
|
isRecurring: boolean;
|
||||||
updatedAt: string;
|
updatedAt: string;
|
||||||
createdAt: string;
|
createdAt: string;
|
||||||
|
_status?: ('draft' | 'published') | null;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* This interface was referenced by `Config`'s JSON-Schema
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
|
@ -638,6 +635,7 @@ export interface Group {
|
||||||
| null;
|
| null;
|
||||||
updatedAt: string;
|
updatedAt: string;
|
||||||
createdAt: string;
|
createdAt: string;
|
||||||
|
_status?: ('draft' | 'published') | null;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* This interface was referenced by `Config`'s JSON-Schema
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
|
@ -856,31 +854,6 @@ export interface Page {
|
||||||
blockName?: string | null;
|
blockName?: string | null;
|
||||||
blockType: 'massTimes';
|
blockType: 'massTimes';
|
||||||
}
|
}
|
||||||
| {
|
|
||||||
title: string;
|
|
||||||
text: string;
|
|
||||||
image: string | Media;
|
|
||||||
content: {
|
|
||||||
root: {
|
|
||||||
type: string;
|
|
||||||
children: {
|
|
||||||
type: any;
|
|
||||||
version: number;
|
|
||||||
[k: string]: unknown;
|
|
||||||
}[];
|
|
||||||
direction: ('ltr' | 'rtl') | null;
|
|
||||||
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
||||||
indent: number;
|
|
||||||
version: number;
|
|
||||||
};
|
|
||||||
[k: string]: unknown;
|
|
||||||
};
|
|
||||||
backgroundColor?: ('none' | 'soft' | 'off-white') | null;
|
|
||||||
schema?: ('base' | 'contrast') | null;
|
|
||||||
id?: string | null;
|
|
||||||
blockName?: string | null;
|
|
||||||
blockType: 'collapsibleImageWithText';
|
|
||||||
}
|
|
||||||
| {
|
| {
|
||||||
title?: string | null;
|
title?: string | null;
|
||||||
itemsPerPage?: number | null;
|
itemsPerPage?: number | null;
|
||||||
|
|
@ -888,15 +861,11 @@ export interface Page {
|
||||||
blockName?: string | null;
|
blockName?: string | null;
|
||||||
blockType: 'events';
|
blockType: 'events';
|
||||||
}
|
}
|
||||||
| {
|
|
||||||
id?: string | null;
|
|
||||||
blockName?: string | null;
|
|
||||||
blockType: 'publicationAndNewsletter';
|
|
||||||
}
|
|
||||||
)[]
|
)[]
|
||||||
| null;
|
| null;
|
||||||
updatedAt: string;
|
updatedAt: string;
|
||||||
createdAt: string;
|
createdAt: string;
|
||||||
|
_status?: ('draft' | 'published') | null;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* This interface was referenced by `Config`'s JSON-Schema
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
|
@ -1159,6 +1128,7 @@ export interface ParishSelect<T extends boolean = true> {
|
||||||
};
|
};
|
||||||
updatedAt?: T;
|
updatedAt?: T;
|
||||||
createdAt?: T;
|
createdAt?: T;
|
||||||
|
_status?: T;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* This interface was referenced by `Config`'s JSON-Schema
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
|
@ -1304,6 +1274,7 @@ export interface BlogSelect<T extends boolean = true> {
|
||||||
};
|
};
|
||||||
updatedAt?: T;
|
updatedAt?: T;
|
||||||
createdAt?: T;
|
createdAt?: T;
|
||||||
|
_status?: T;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* This interface was referenced by `Config`'s JSON-Schema
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
|
@ -1338,6 +1309,7 @@ export interface EventSelect<T extends boolean = true> {
|
||||||
isRecurring?: T;
|
isRecurring?: T;
|
||||||
updatedAt?: T;
|
updatedAt?: T;
|
||||||
createdAt?: T;
|
createdAt?: T;
|
||||||
|
_status?: T;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* This interface was referenced by `Config`'s JSON-Schema
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
|
@ -1449,6 +1421,7 @@ export interface GroupSelect<T extends boolean = true> {
|
||||||
};
|
};
|
||||||
updatedAt?: T;
|
updatedAt?: T;
|
||||||
createdAt?: T;
|
createdAt?: T;
|
||||||
|
_status?: T;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* This interface was referenced by `Config`'s JSON-Schema
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
|
@ -1599,18 +1572,6 @@ export interface PagesSelect<T extends boolean = true> {
|
||||||
id?: T;
|
id?: T;
|
||||||
blockName?: T;
|
blockName?: T;
|
||||||
};
|
};
|
||||||
collapsibleImageWithText?:
|
|
||||||
| T
|
|
||||||
| {
|
|
||||||
title?: T;
|
|
||||||
text?: T;
|
|
||||||
image?: T;
|
|
||||||
content?: T;
|
|
||||||
backgroundColor?: T;
|
|
||||||
schema?: T;
|
|
||||||
id?: T;
|
|
||||||
blockName?: T;
|
|
||||||
};
|
|
||||||
events?:
|
events?:
|
||||||
| T
|
| T
|
||||||
| {
|
| {
|
||||||
|
|
@ -1619,15 +1580,10 @@ export interface PagesSelect<T extends boolean = true> {
|
||||||
id?: T;
|
id?: T;
|
||||||
blockName?: T;
|
blockName?: T;
|
||||||
};
|
};
|
||||||
publicationAndNewsletter?:
|
|
||||||
| T
|
|
||||||
| {
|
|
||||||
id?: T;
|
|
||||||
blockName?: T;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
updatedAt?: T;
|
updatedAt?: T;
|
||||||
createdAt?: T;
|
createdAt?: T;
|
||||||
|
_status?: T;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* This interface was referenced by `Config`'s JSON-Schema
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
|
@ -1654,7 +1610,6 @@ export interface MagazineSelect<T extends boolean = true> {
|
||||||
* via the `definition` "documents_select".
|
* via the `definition` "documents_select".
|
||||||
*/
|
*/
|
||||||
export interface DocumentsSelect<T extends boolean = true> {
|
export interface DocumentsSelect<T extends boolean = true> {
|
||||||
prefix?: T;
|
|
||||||
updatedAt?: T;
|
updatedAt?: T;
|
||||||
createdAt?: T;
|
createdAt?: T;
|
||||||
url?: T;
|
url?: T;
|
||||||
|
|
@ -1681,7 +1636,6 @@ export interface MediaSelect<T extends boolean = true> {
|
||||||
publicWithoutName?: T;
|
publicWithoutName?: T;
|
||||||
consent?: T;
|
consent?: T;
|
||||||
};
|
};
|
||||||
prefix?: T;
|
|
||||||
updatedAt?: T;
|
updatedAt?: T;
|
||||||
createdAt?: T;
|
createdAt?: T;
|
||||||
url?: T;
|
url?: T;
|
||||||
|
|
@ -1894,102 +1848,6 @@ export interface Footer {
|
||||||
updatedAt?: string | null;
|
updatedAt?: string | null;
|
||||||
createdAt?: string | null;
|
createdAt?: string | null;
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* Hier können Sie die Farben und das Erscheinungsbild der Website konfigurieren.
|
|
||||||
*
|
|
||||||
* This interface was referenced by `Config`'s JSON-Schema
|
|
||||||
* via the `definition` "design".
|
|
||||||
*/
|
|
||||||
export interface Design {
|
|
||||||
id: string;
|
|
||||||
baseColor?: string | null;
|
|
||||||
shade1?: string | null;
|
|
||||||
shade2?: string | null;
|
|
||||||
shade3?: string | null;
|
|
||||||
contrastColor?: string | null;
|
|
||||||
contrastShade1?: string | null;
|
|
||||||
/**
|
|
||||||
* Die Hauptschrift für den gesamten Text der Website.
|
|
||||||
*/
|
|
||||||
defaultFont?:
|
|
||||||
| (
|
|
||||||
| 'cairo'
|
|
||||||
| 'roboto'
|
|
||||||
| 'openSans'
|
|
||||||
| 'lato'
|
|
||||||
| 'nunito'
|
|
||||||
| 'raleway'
|
|
||||||
| 'faustina'
|
|
||||||
| 'merriweather'
|
|
||||||
| 'sourceSans3'
|
|
||||||
| 'playfairDisplay'
|
|
||||||
| 'lora'
|
|
||||||
| 'crimsonText'
|
|
||||||
| 'ebGaramond'
|
|
||||||
)
|
|
||||||
| null;
|
|
||||||
/**
|
|
||||||
* Die Schrift für Überschriften und hervorgehobenen Text.
|
|
||||||
*/
|
|
||||||
headerFont?:
|
|
||||||
| (
|
|
||||||
| 'cairo'
|
|
||||||
| 'roboto'
|
|
||||||
| 'openSans'
|
|
||||||
| 'lato'
|
|
||||||
| 'nunito'
|
|
||||||
| 'raleway'
|
|
||||||
| 'faustina'
|
|
||||||
| 'merriweather'
|
|
||||||
| 'sourceSans3'
|
|
||||||
| 'playfairDisplay'
|
|
||||||
| 'lora'
|
|
||||||
| 'crimsonText'
|
|
||||||
| 'ebGaramond'
|
|
||||||
)
|
|
||||||
| null;
|
|
||||||
borderRadius?: string | null;
|
|
||||||
updatedAt?: string | null;
|
|
||||||
createdAt?: string | null;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Hier können Sie den Namen, die Beschreibung und andere allgemeine Einstellungen der Website konfigurieren.
|
|
||||||
*
|
|
||||||
* This interface was referenced by `Config`'s JSON-Schema
|
|
||||||
* via the `definition` "site-config".
|
|
||||||
*/
|
|
||||||
export interface SiteConfig {
|
|
||||||
id: string;
|
|
||||||
name: string;
|
|
||||||
/**
|
|
||||||
* Wird im Browser-Tab als Suffix verwendet (z.B. "Seite | Hl. Drei Könige").
|
|
||||||
*/
|
|
||||||
shortName: string;
|
|
||||||
/**
|
|
||||||
* Meta-Beschreibung für Suchmaschinen.
|
|
||||||
*/
|
|
||||||
description: string;
|
|
||||||
url: string;
|
|
||||||
/**
|
|
||||||
* Pfad zum Vorschaubild für soziale Medien.
|
|
||||||
*/
|
|
||||||
ogImage?: string | null;
|
|
||||||
/**
|
|
||||||
* Standard-E-Mail-Adresse für Kontaktformulare.
|
|
||||||
*/
|
|
||||||
email: string;
|
|
||||||
/**
|
|
||||||
* SEO-Schlüsselwörter für Suchmaschinen.
|
|
||||||
*/
|
|
||||||
keywords?:
|
|
||||||
| {
|
|
||||||
keyword: string;
|
|
||||||
id?: string | null;
|
|
||||||
}[]
|
|
||||||
| null;
|
|
||||||
updatedAt?: string | null;
|
|
||||||
createdAt?: string | null;
|
|
||||||
}
|
|
||||||
/**
|
/**
|
||||||
* This interface was referenced by `Config`'s JSON-Schema
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
* via the `definition` "menu_select".
|
* via the `definition` "menu_select".
|
||||||
|
|
@ -2093,45 +1951,6 @@ export interface FooterSelect<T extends boolean = true> {
|
||||||
createdAt?: T;
|
createdAt?: T;
|
||||||
globalType?: T;
|
globalType?: T;
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* This interface was referenced by `Config`'s JSON-Schema
|
|
||||||
* via the `definition` "design_select".
|
|
||||||
*/
|
|
||||||
export interface DesignSelect<T extends boolean = true> {
|
|
||||||
baseColor?: T;
|
|
||||||
shade1?: T;
|
|
||||||
shade2?: T;
|
|
||||||
shade3?: T;
|
|
||||||
contrastColor?: T;
|
|
||||||
contrastShade1?: T;
|
|
||||||
defaultFont?: T;
|
|
||||||
headerFont?: T;
|
|
||||||
borderRadius?: T;
|
|
||||||
updatedAt?: T;
|
|
||||||
createdAt?: T;
|
|
||||||
globalType?: T;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* This interface was referenced by `Config`'s JSON-Schema
|
|
||||||
* via the `definition` "site-config_select".
|
|
||||||
*/
|
|
||||||
export interface SiteConfigSelect<T extends boolean = true> {
|
|
||||||
name?: T;
|
|
||||||
shortName?: T;
|
|
||||||
description?: T;
|
|
||||||
url?: T;
|
|
||||||
ogImage?: T;
|
|
||||||
email?: T;
|
|
||||||
keywords?:
|
|
||||||
| T
|
|
||||||
| {
|
|
||||||
keyword?: T;
|
|
||||||
id?: T;
|
|
||||||
};
|
|
||||||
updatedAt?: T;
|
|
||||||
createdAt?: T;
|
|
||||||
globalType?: T;
|
|
||||||
}
|
|
||||||
/**
|
/**
|
||||||
* This interface was referenced by `Config`'s JSON-Schema
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
* via the `definition` "auth".
|
* via the `definition` "auth".
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ import {
|
||||||
AlignFeature,
|
AlignFeature,
|
||||||
UnorderedListFeature,
|
UnorderedListFeature,
|
||||||
LinkFeature,
|
LinkFeature,
|
||||||
HTMLConverterFeature, FixedToolbarFeature,
|
FixedToolbarFeature,
|
||||||
} from '@payloadcms/richtext-lexical'
|
} from '@payloadcms/richtext-lexical'
|
||||||
import path from 'path'
|
import path from 'path'
|
||||||
import { buildConfig } from 'payload'
|
import { buildConfig } from 'payload'
|
||||||
|
|
@ -38,8 +38,6 @@ import { LiturgicalCalendar } from '@/collections/LiturgicalCalendar'
|
||||||
import { Classifieds } from '@/collections/Classifieds'
|
import { Classifieds } from '@/collections/Classifieds'
|
||||||
import { MenuGlobal } from '@/globals/Menu'
|
import { MenuGlobal } from '@/globals/Menu'
|
||||||
import { FooterGlobal } from '@/globals/Footer'
|
import { FooterGlobal } from '@/globals/Footer'
|
||||||
import { DesignGlobal } from '@/globals/Design'
|
|
||||||
import { SiteConfigGlobal } from '@/globals/SiteConfig'
|
|
||||||
import { Magazine } from '@/collections/Magazine'
|
import { Magazine } from '@/collections/Magazine'
|
||||||
import { DonationForms } from '@/collections/DonationForms'
|
import { DonationForms } from '@/collections/DonationForms'
|
||||||
import { Pages } from '@/collections/Pages'
|
import { Pages } from '@/collections/Pages'
|
||||||
|
|
@ -75,7 +73,10 @@ export default buildConfig({
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
livePreview: {
|
||||||
|
collections: ['blog', 'event', 'group', 'pages', 'parish'],
|
||||||
|
},
|
||||||
},
|
},
|
||||||
collections: [
|
collections: [
|
||||||
Parish,
|
Parish,
|
||||||
|
|
@ -102,8 +103,6 @@ export default buildConfig({
|
||||||
globals: [
|
globals: [
|
||||||
MenuGlobal,
|
MenuGlobal,
|
||||||
FooterGlobal,
|
FooterGlobal,
|
||||||
DesignGlobal,
|
|
||||||
SiteConfigGlobal,
|
|
||||||
],
|
],
|
||||||
graphQL: {
|
graphQL: {
|
||||||
disable: true
|
disable: true
|
||||||
|
|
@ -141,22 +140,25 @@ export default buildConfig({
|
||||||
sharp,
|
sharp,
|
||||||
plugins: [
|
plugins: [
|
||||||
gcsStorage({
|
gcsStorage({
|
||||||
|
enabled: !!process.env.GOOGLE_BUCKET,
|
||||||
|
alwaysInsertFields: true,
|
||||||
collections: {
|
collections: {
|
||||||
media: {
|
media: {
|
||||||
disablePayloadAccessControl: true,
|
disablePayloadAccessControl: true,
|
||||||
prefix: 'media/',
|
prefix: 'media/',
|
||||||
generateFileURL: args => `https://storage.googleapis.com/${process.env.GOOGLE_BUCKET}/media/${args.filename}`
|
generateFileURL: (args) =>
|
||||||
|
`https://storage.googleapis.com/${process.env.GOOGLE_BUCKET}/media/${args.filename}`,
|
||||||
},
|
},
|
||||||
documents: {
|
documents: {
|
||||||
disablePayloadAccessControl: true,
|
disablePayloadAccessControl: true,
|
||||||
prefix: 'documents/',
|
prefix: 'documents/',
|
||||||
generateFileURL: args => `https://storage.googleapis.com/${process.env.GOOGLE_BUCKET}/documents/${args.filename}`
|
generateFileURL: (args) =>
|
||||||
|
`https://storage.googleapis.com/${process.env.GOOGLE_BUCKET}/documents/${args.filename}`,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
bucket: process.env.GOOGLE_BUCKET || "",
|
bucket: process.env.GOOGLE_BUCKET || '',
|
||||||
options: {},
|
options: {},
|
||||||
acl: undefined
|
acl: undefined,
|
||||||
})
|
}),
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
|
|
|
||||||
88
src/utils/processSvg.ts
Normal file
88
src/utils/processSvg.ts
Normal file
|
|
@ -0,0 +1,88 @@
|
||||||
|
type ProcessSvgOptions = {
|
||||||
|
color: string
|
||||||
|
textColor: string
|
||||||
|
withText: boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
function findGroupBounds(
|
||||||
|
svg: string,
|
||||||
|
groupId: string,
|
||||||
|
): { start: number; end: number } | null {
|
||||||
|
const pattern = new RegExp(`<g[^>]*\\bid="${groupId}"[^>]*>`)
|
||||||
|
const match = svg.match(pattern)
|
||||||
|
if (!match || match.index === undefined) return null
|
||||||
|
|
||||||
|
let depth = 1
|
||||||
|
let pos = match.index + match[0].length
|
||||||
|
|
||||||
|
while (depth > 0 && pos < svg.length) {
|
||||||
|
const nextOpen = svg.indexOf('<g', pos)
|
||||||
|
const nextClose = svg.indexOf('</g>', pos)
|
||||||
|
|
||||||
|
if (nextClose === -1) break
|
||||||
|
|
||||||
|
if (nextOpen !== -1 && nextOpen < nextClose) {
|
||||||
|
depth++
|
||||||
|
pos = nextOpen + 2
|
||||||
|
} else {
|
||||||
|
depth--
|
||||||
|
if (depth === 0) {
|
||||||
|
return { start: match.index, end: nextClose + 4 }
|
||||||
|
}
|
||||||
|
pos = nextClose + 4
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
function replaceGroupFills(section: string, color: string): string {
|
||||||
|
return section
|
||||||
|
.replace(/fill:#[0-9a-fA-F]{3,8}/g, `fill:${color}`)
|
||||||
|
.replace(/fill="[^"]*#[0-9a-fA-F]{3,8}[^"]*"/g, `fill="${color}"`)
|
||||||
|
}
|
||||||
|
|
||||||
|
function extractSvgInner(svg: string): string {
|
||||||
|
const openMatch = svg.match(/<svg[^>]*>/)
|
||||||
|
if (!openMatch || openMatch.index === undefined) return svg
|
||||||
|
const innerStart = openMatch.index + openMatch[0].length
|
||||||
|
const innerEnd = svg.lastIndexOf('</svg>')
|
||||||
|
if (innerEnd === -1) return svg
|
||||||
|
return svg.substring(innerStart, innerEnd)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function processSvg(
|
||||||
|
rawSvg: string,
|
||||||
|
{ color, textColor, withText }: ProcessSvgOptions,
|
||||||
|
): string {
|
||||||
|
let inner = extractSvgInner(rawSvg)
|
||||||
|
|
||||||
|
const logoBounds = findGroupBounds(inner, 'logo')
|
||||||
|
const textBounds = findGroupBounds(inner, 'text')
|
||||||
|
|
||||||
|
if (logoBounds) {
|
||||||
|
const logoSection = inner.substring(logoBounds.start, logoBounds.end)
|
||||||
|
const processedLogo = replaceGroupFills(logoSection, color)
|
||||||
|
inner = inner.replace(logoSection, processedLogo)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (textBounds) {
|
||||||
|
// Re-find text bounds after logo replacement may have shifted positions
|
||||||
|
const updatedTextBounds = findGroupBounds(inner, 'text')
|
||||||
|
if (updatedTextBounds) {
|
||||||
|
if (!withText) {
|
||||||
|
inner =
|
||||||
|
inner.substring(0, updatedTextBounds.start) +
|
||||||
|
inner.substring(updatedTextBounds.end)
|
||||||
|
} else {
|
||||||
|
const textSection = inner.substring(
|
||||||
|
updatedTextBounds.start,
|
||||||
|
updatedTextBounds.end,
|
||||||
|
)
|
||||||
|
const processedText = replaceGroupFills(textSection, textColor)
|
||||||
|
inner = inner.replace(textSection, processedText)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return inner
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue