Compare commits
No commits in common. "eafda90a41d2ffda9fad3562262d939f52e26013" and "7438f397861c9e8649c0dc1c2fd563a73a59ae66" have entirely different histories.
eafda90a41
...
7438f39786
81 changed files with 3473 additions and 56201 deletions
|
|
@ -1,6 +1,4 @@
|
|||
NEXT_PUBLIC_SITE_ID=chemnitz
|
||||
DATABASE_URI=mongodb://127.0.0.1/dreikoenige
|
||||
PAYLOAD_SECRET=YOUR_SECRET_HERE
|
||||
GOOGLE_BUCKET=google_storage_bucket #can be omitted
|
||||
RESEND_API_KEY=some_api_key
|
||||
NEXT_PUBLIC_SERVER_URL=http://localhost:3000
|
||||
GOOGLE_BUCKET=google_storage_bucket
|
||||
RESEND_API_KEY=some_api_key
|
||||
|
|
@ -46,15 +46,6 @@ 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.
|
||||
|
||||
## 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)
|
||||
|
||||
Create a new migration:
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
$base-color: var(--base-color);
|
||||
$shade1: var(--shade1);
|
||||
$shade2: var(--shade2);
|
||||
$shade3: var(--shade3);
|
||||
$contrast-color: var(--contrast-color);
|
||||
$contrast-shade1: var(--contrast-shade1);
|
||||
$base-color: #426156;
|
||||
$shade1: #728F8D;
|
||||
$shade2: #CBD6D5;
|
||||
$shade3: #E3E9E8;
|
||||
$contrast-color: #7D1224;
|
||||
$contrast-shade1: #C14953;
|
||||
$text-color: #000000;
|
||||
$border-radius: var(--border-radius);
|
||||
$border-radius: 13px;
|
||||
|
||||
$white: #ffffff;
|
||||
$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,7 +20,6 @@
|
|||
"dependencies": {
|
||||
"@nyariv/sandboxjs": "0.8.28",
|
||||
"@payloadcms/db-postgres": "^3.74.0",
|
||||
"@payloadcms/live-preview-react": "^3.74.0",
|
||||
"@payloadcms/next": "^3.74.0",
|
||||
"@payloadcms/richtext-lexical": "^3.74.0",
|
||||
"@payloadcms/storage-gcs": "^3.74.0",
|
||||
|
|
@ -31,6 +30,7 @@
|
|||
"moment": "^2.30.1",
|
||||
"next": "15.4.11",
|
||||
"payload": "^3.74.0",
|
||||
"qs-esm": "^7.0.3",
|
||||
"react": "19.2.4",
|
||||
"react-dom": "19.2.4",
|
||||
"resend": "^6.9.1",
|
||||
|
|
@ -38,20 +38,20 @@
|
|||
"zod": "^4.3.6"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@storybook/nextjs-vite": "^10.2.7",
|
||||
"@swc/cli": "^0.7.10",
|
||||
"@swc/core": "^1.15.11",
|
||||
"@types/node": "^20.19.32",
|
||||
"@types/react": "19.2.13",
|
||||
"@types/react-dom": "19.2.3",
|
||||
"eslint": "^8.57.1",
|
||||
"eslint-config-next": "^15.4.11",
|
||||
"eslint": "9.26.0",
|
||||
"eslint-config-next": "16.1.6",
|
||||
"eslint-config-prettier": "^10.1.8",
|
||||
"eslint-plugin-storybook": "^10.2.7",
|
||||
"storybook": "^10.2.7",
|
||||
"typescript": "5.9.3",
|
||||
"vitest": "^4.0.18",
|
||||
"storybook": "^10.2.7",
|
||||
"@storybook/nextjs-vite": "^10.2.7",
|
||||
"vite": "^7.3.1",
|
||||
"vitest": "^4.0.18"
|
||||
"eslint-plugin-storybook": "^10.2.7"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=22.0.0"
|
||||
|
|
|
|||
|
|
@ -1,35 +0,0 @@
|
|||
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
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
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
|
||||
|
|
@ -1,213 +0,0 @@
|
|||
// 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>
|
||||
`
|
||||
|
|
@ -1,211 +0,0 @@
|
|||
<?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>
|
||||
|
Before Width: | Height: | Size: 41 KiB |
|
|
@ -1,30 +0,0 @@
|
|||
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
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
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
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 33 KiB |
39
src/admin/components/ColorPicker/ColorPicker.tsx
Normal file
39
src/admin/components/ColorPicker/ColorPicker.tsx
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
'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
|
||||
40
src/admin/components/calendar/Calendar.tsx
Normal file
40
src/admin/components/calendar/Calendar.tsx
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
'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
|
||||
22
src/admin/components/calendar/ChurchSelect/ChurchSelect.tsx
Normal file
22
src/admin/components/calendar/ChurchSelect/ChurchSelect.tsx
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
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>
|
||||
)
|
||||
}
|
||||
42
src/admin/components/calendar/ChurchSelect/churchStore.ts
Normal file
42
src/admin/components/calendar/ChurchSelect/churchStore.ts
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
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();
|
||||
36
src/admin/components/calendar/Day.tsx
Normal file
36
src/admin/components/calendar/Day.tsx
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
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
|
||||
54
src/admin/components/calendar/MassForm.tsx
Normal file
54
src/admin/components/calendar/MassForm.tsx
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
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
|
||||
30
src/admin/components/calendar/form.module.scss
Normal file
30
src/admin/components/calendar/form.module.scss
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
.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;
|
||||
}
|
||||
13
src/admin/components/calendar/styles.module.scss
Normal file
13
src/admin/components/calendar/styles.module.scss
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
.container {
|
||||
display: flex;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.day {
|
||||
width: 300px;
|
||||
}
|
||||
|
||||
.date {
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
}
|
||||
40
src/admin/components/test/TestView.tsx
Normal file
40
src/admin/components/test/TestView.tsx
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
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,8 +5,6 @@ import { Metadata } from 'next'
|
|||
import { AdminMenu } from '@/components/AdminMenu/AdminMenu'
|
||||
import { Section } from '@/components/Section/Section'
|
||||
import { isAuthenticated } from '@/utils/auth'
|
||||
import { RefreshRouteOnSave } from '@/components/RefreshRouteOnSave/RefreshRouteOnSave'
|
||||
import { draftMode } from 'next/headers'
|
||||
|
||||
type Props = {
|
||||
params: Promise<{ slug: string }>
|
||||
|
|
@ -26,25 +24,19 @@ export async function generateMetadata({ params }: Props): Promise<Metadata> {
|
|||
|
||||
export default async function DynamicPage({ params }: Props) {
|
||||
const slug = (await params).slug
|
||||
const { isEnabled: isDraft } = await draftMode()
|
||||
const page = await fetchPageBySlug(slug, isDraft)
|
||||
const page = await fetchPageBySlug(slug)
|
||||
const authenticated = await isAuthenticated()
|
||||
|
||||
if (!page) {
|
||||
notFound()
|
||||
}
|
||||
|
||||
if(!authenticated && page._status !== "published") {
|
||||
notFound();
|
||||
}
|
||||
|
||||
const firstBlockType = page.content?.[0]?.blockType
|
||||
const needsTopPadding =
|
||||
firstBlockType === 'title' || firstBlockType === 'text'
|
||||
|
||||
return (
|
||||
<>
|
||||
{isDraft && <RefreshRouteOnSave />}
|
||||
{needsTopPadding && <Section padding={'medium'} />}
|
||||
|
||||
{page.content && page.content.length > 0 && (
|
||||
|
|
|
|||
|
|
@ -1,42 +0,0 @@
|
|||
// 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,19 +7,21 @@ import { notFound } from 'next/navigation'
|
|||
import { readableDateTime } from '@/utils/readableDate'
|
||||
import { HR } from '@/components/HorizontalRule/HorizontalRule'
|
||||
import Image from 'next/image'
|
||||
import styles from './styles.module.scss'
|
||||
import styles from "./styles.module.scss"
|
||||
import { Blocks } from '@/compositions/Blocks/Blocks'
|
||||
import { isAuthenticated } from '@/utils/auth'
|
||||
import { AdminMenu } from '@/components/AdminMenu/AdminMenu'
|
||||
import { RefreshRouteOnSave } from '@/components/RefreshRouteOnSave/RefreshRouteOnSave'
|
||||
import { draftMode } from 'next/headers'
|
||||
import { fetchBlog } from '@/fetch/blog'
|
||||
|
||||
async function fetchBlog(id: string) {
|
||||
const res = await fetch(`http://localhost:3000/api/blog/${id}`)
|
||||
if (!res.ok) return undefined
|
||||
return res.json();
|
||||
}
|
||||
|
||||
export default async function BlogPage({ params }: { params: Promise<{id: string}>}){
|
||||
|
||||
const id = (await params).id;
|
||||
const { isEnabled: isDraft } = await draftMode()
|
||||
const data = await fetchBlog(id, isDraft) as Blog;
|
||||
const data = await fetchBlog(id) as Blog;
|
||||
const url = typeof data.photo === 'object' && data.photo?.sizes?.banner?.url;
|
||||
const authenticated = await isAuthenticated();
|
||||
|
||||
|
|
@ -27,17 +29,12 @@ export default async function BlogPage({ params }: { params: Promise<{id: string
|
|||
notFound();
|
||||
}
|
||||
|
||||
if(!authenticated && data._status !== "published") {
|
||||
notFound();
|
||||
}
|
||||
|
||||
// determine if some margin at the bottom should be added
|
||||
const length = data.content.content.length;
|
||||
const shouldAddMargin = data.content.content[length - 1].blockType === "text"
|
||||
|
||||
return (
|
||||
<>
|
||||
{isDraft && <RefreshRouteOnSave />}
|
||||
<Section paddingBottom={"small"}>
|
||||
<Container>
|
||||
<Title title={data.title} color={"contrast"}></Title>
|
||||
|
|
|
|||
|
|
@ -8,21 +8,13 @@ import { getPhoto, transformGallery } from '@/utils/dto/gallery'
|
|||
import { fetchLastCalendar } from '@/fetch/calendar'
|
||||
import { isAuthenticated } from '@/utils/auth'
|
||||
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}>}) {
|
||||
|
||||
const slug = (await params).slug;
|
||||
const { isEnabled: isDraft } = await draftMode()
|
||||
const parish = await fetchParish(slug, isDraft);
|
||||
const authenticated = await isAuthenticated();
|
||||
const parish = await fetchParish(slug);
|
||||
|
||||
if(!parish) {
|
||||
notFound();
|
||||
}
|
||||
|
||||
if(!authenticated && parish._status !== "published") {
|
||||
if(!parish || !parish.docs[0]) {
|
||||
notFound();
|
||||
}
|
||||
|
||||
|
|
@ -37,16 +29,16 @@ export default async function ParishPage ({ params }: { params: Promise<{slug: s
|
|||
churches,
|
||||
gallery,
|
||||
content
|
||||
} = parish
|
||||
} = parish.docs[0]
|
||||
const events = await fetchEvents({ parishId: id })
|
||||
const churchIds = churches.map(c => typeof c === "string" ? c : c.id)
|
||||
const worship = await fetchWorship({ locations: churchIds })
|
||||
const announcement = await fetchLastAnnouncement(id);
|
||||
const calendar = await fetchLastCalendar(id);
|
||||
const authenticated = await isAuthenticated();
|
||||
const image = getPhoto("tablet", photo)
|
||||
return (
|
||||
<>
|
||||
{isDraft && <RefreshRouteOnSave />}
|
||||
<Parish
|
||||
title={name}
|
||||
slug={slug}
|
||||
|
|
|
|||
|
|
@ -1,20 +1,20 @@
|
|||
import { notFound } from 'next/navigation'
|
||||
import { Worship as WorshipType } from '@/payload-types'
|
||||
import { Worship } from '@/pageComponents/Worship/Worship'
|
||||
import { isAuthenticated } from '@/utils/auth'
|
||||
import { AdminMenu } from '@/components/AdminMenu/AdminMenu'
|
||||
import { fetchWorshipById } from '@/fetch/worship'
|
||||
|
||||
export default async function WorshipPage({ params }: { params: Promise<{id: string}>}) {
|
||||
|
||||
const id = (await params).id;
|
||||
const worship = await fetchWorshipById(id)
|
||||
|
||||
if (!worship) {
|
||||
const res = await fetch(`http://localhost:3000/api/worship/${id}`);
|
||||
if (!res.ok) {
|
||||
notFound()
|
||||
}
|
||||
|
||||
const authenticated = await isAuthenticated();
|
||||
|
||||
const worship = await res.json() as WorshipType;
|
||||
|
||||
return (
|
||||
<>
|
||||
<Worship
|
||||
|
|
@ -27,4 +27,4 @@ export default async function WorshipPage({ params }: { params: Promise<{id: str
|
|||
/>
|
||||
</>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -9,37 +9,30 @@ import { HR } from '@/components/HorizontalRule/HorizontalRule'
|
|||
import { TextDiv } from '@/components/Text/TextDiv'
|
||||
import { Col } from '@/components/Flex/Col'
|
||||
import { Row } from '@/components/Flex/Row'
|
||||
import { RawHTML } from '@/components/RawHTML/RawHTML'
|
||||
import { Blocks } from '@/compositions/Blocks/Blocks'
|
||||
import { getPhoto } from '@/utils/dto/gallery'
|
||||
import { isAuthenticated } from '@/utils/auth'
|
||||
import { AdminMenu } from '@/components/AdminMenu/AdminMenu'
|
||||
import { GroupEvents } from '@/compositions/GroupEvents/GroupEvents'
|
||||
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}>}) {
|
||||
|
||||
const slug = (await params).slug
|
||||
const { isEnabled: isDraft } = await draftMode()
|
||||
const group = await fetchGroup(slug, isDraft)
|
||||
const groups = await fetchGroup(slug)
|
||||
|
||||
if(!group) {
|
||||
if(!groups || groups.docs.length === 0) {
|
||||
notFound();
|
||||
}
|
||||
|
||||
const {id, shortDescription, photo,name, content, text } = groups.docs[0]
|
||||
const media = getPhoto("tablet", photo)
|
||||
|
||||
const authenticated = await isAuthenticated();
|
||||
|
||||
if(!authenticated && group._status !== "published") {
|
||||
notFound();
|
||||
}
|
||||
|
||||
const {id, shortDescription, photo, name, content, text } = group
|
||||
const media = getPhoto("tablet", photo)
|
||||
|
||||
return (
|
||||
<>
|
||||
{isDraft && <RefreshRouteOnSave />}
|
||||
|
||||
{ media &&
|
||||
<ImageWithText
|
||||
|
|
|
|||
|
|
@ -1,56 +1,94 @@
|
|||
import type { Metadata } from 'next'
|
||||
import './globals.css'
|
||||
import { Menu } from '@/components/Menu/Menu'
|
||||
import { Footer } from '@/compositions/Footer/Footer'
|
||||
import { comment } from '@/app/(home)/layout-comment'
|
||||
import { FONT_MAP, getFont } from '@/assets/fonts'
|
||||
import { siteConfig } from '@/config/site'
|
||||
import { fetchDesign } from '@/fetch/design'
|
||||
import { fetchSiteConfig } from '@/fetch/siteConfig'
|
||||
import { FetchedMenu } from '@/components/Menu/FetchedMenu'
|
||||
|
||||
export const dynamic = 'force-dynamic'
|
||||
|
||||
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 {
|
||||
title: {
|
||||
default: siteConfig.name,
|
||||
template: `%s | ${siteConfig.shortName}`,
|
||||
default: name,
|
||||
template: `%s | ${shortName}`,
|
||||
},
|
||||
description: siteConfig.description,
|
||||
keywords: siteConfig.keywords,
|
||||
metadataBase: new URL(siteConfig.url),
|
||||
description,
|
||||
keywords,
|
||||
metadataBase: new URL(url),
|
||||
openGraph: {
|
||||
title: siteConfig.name,
|
||||
description: siteConfig.description,
|
||||
url: siteConfig.url,
|
||||
siteName: siteConfig.name,
|
||||
images: [siteConfig.ogImage],
|
||||
title: name,
|
||||
description,
|
||||
url,
|
||||
siteName: name,
|
||||
images: [ogImage],
|
||||
locale: 'de_DE',
|
||||
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({
|
||||
children,
|
||||
}: Readonly<{
|
||||
children: React.ReactNode
|
||||
}>) {
|
||||
let design
|
||||
try {
|
||||
design = await fetchDesign()
|
||||
} catch {
|
||||
design = null
|
||||
}
|
||||
|
||||
const selectedDefaultFont = getFont(
|
||||
siteConfig.defaultFont,
|
||||
design?.defaultFont || DESIGN_DEFAULTS.defaultFont,
|
||||
FONT_MAP.cairo,
|
||||
)
|
||||
const selectedHeaderFont = getFont(
|
||||
siteConfig.headerFont,
|
||||
design?.headerFont || DESIGN_DEFAULTS.headerFont,
|
||||
FONT_MAP.faustina,
|
||||
)
|
||||
|
||||
const themeStyle = {
|
||||
'--base-color': siteConfig.baseColor,
|
||||
'--shade1': siteConfig.shade1,
|
||||
'--shade2': siteConfig.shade2,
|
||||
'--shade3': siteConfig.shade3,
|
||||
'--contrast-color': siteConfig.contrastColor,
|
||||
'--contrast-shade1': siteConfig.contrastShade1,
|
||||
'--border-radius': siteConfig.borderRadius,
|
||||
'--base-color': design?.baseColor || DESIGN_DEFAULTS.baseColor,
|
||||
'--shade1': design?.shade1 || DESIGN_DEFAULTS.shade1,
|
||||
'--shade2': design?.shade2 || DESIGN_DEFAULTS.shade2,
|
||||
'--shade3': design?.shade3 || DESIGN_DEFAULTS.shade3,
|
||||
'--contrast-color': design?.contrastColor || DESIGN_DEFAULTS.contrastColor,
|
||||
'--contrast-shade1':
|
||||
design?.contrastShade1 || DESIGN_DEFAULTS.contrastShade1,
|
||||
'--border-radius': design?.borderRadius || DESIGN_DEFAULTS.borderRadius,
|
||||
'--header-font': selectedHeaderFont.style.fontFamily,
|
||||
} as React.CSSProperties
|
||||
|
||||
|
|
@ -59,11 +97,11 @@ export default async function RootLayout({
|
|||
<body>
|
||||
<div dangerouslySetInnerHTML={{ __html: comment }}></div>
|
||||
<FetchedMenu />
|
||||
<main className={'mainContent'}>
|
||||
<main className={"mainContent"}>
|
||||
{children}
|
||||
</main>
|
||||
<Footer />
|
||||
</body>
|
||||
</html>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -1,33 +1,47 @@
|
|||
import { notFound } from 'next/navigation'
|
||||
import { Event } from '@/payload-types'
|
||||
import { EventPage } from '@/pageComponents/Event/Event'
|
||||
import { stringify } from 'qs-esm'
|
||||
import { getPhoto } from '@/utils/dto/gallery'
|
||||
import { cookies } from 'next/headers'
|
||||
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}>}) {
|
||||
|
||||
const id = (await params).id;
|
||||
const { isEnabled: isDraft } = await draftMode()
|
||||
const event = await fetchEventById(id, isDraft)
|
||||
const stringifiedQuery = stringify(
|
||||
{
|
||||
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 (!event) {
|
||||
if (!res.ok) {
|
||||
notFound()
|
||||
}
|
||||
|
||||
const authenticated = await isAuthenticated();
|
||||
|
||||
if(!authenticated && event._status !== "published") {
|
||||
notFound();
|
||||
}
|
||||
|
||||
const event = await res.json() as Event;
|
||||
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);
|
||||
|
||||
return (
|
||||
<>
|
||||
{isDraft && <RefreshRouteOnSave />}
|
||||
<EventPage
|
||||
id={event.id}
|
||||
title={event.title}
|
||||
|
|
@ -45,6 +59,5 @@ export default async function Page({ params }: { params: Promise<{id: string}>})
|
|||
photo={photo}
|
||||
isAuthenticated={authenticated}
|
||||
/>
|
||||
</>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -12,6 +12,7 @@ import { HeadingFeatureClient as HeadingFeatureClient_e70f5e05f09f93e00b997edb1e
|
|||
import { UnderlineFeatureClient as UnderlineFeatureClient_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 { default as default_5697d501e5648edd0cfd5c3685214437 } from '@/admin/components/ColorPicker/ColorPicker'
|
||||
import { default as default_9bcae99938dc292be0063ce32055e14c } from '../../../components/Logo/Logo'
|
||||
import { GcsClientUploadHandler as GcsClientUploadHandler_06e62ca02c7c441053a9b643e5545934 } from '@payloadcms/storage-gcs/client'
|
||||
import { CollectionCards as CollectionCards_f9c02e79a4aed9a3924487c0cd4cafb1 } from '@payloadcms/next/rsc'
|
||||
|
|
@ -31,6 +32,7 @@ export const importMap = {
|
|||
"@payloadcms/richtext-lexical/client#UnderlineFeatureClient": UnderlineFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
"@payloadcms/richtext-lexical/client#BoldFeatureClient": BoldFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
"@payloadcms/richtext-lexical/client#ItalicFeatureClient": ItalicFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
"@/admin/components/ColorPicker/ColorPicker#default": default_5697d501e5648edd0cfd5c3685214437,
|
||||
"/components/Logo/Logo#default": default_9bcae99938dc292be0063ce32055e14c,
|
||||
"@payloadcms/storage-gcs/client#GcsClientUploadHandler": GcsClientUploadHandler_06e62ca02c7c441053a9b643e5545934,
|
||||
"@payloadcms/next/rsc#CollectionCards": CollectionCards_f9c02e79a4aed9a3924487c0cd4cafb1
|
||||
|
|
|
|||
15
src/assets/fontOptions.ts
Normal file
15
src/assets/fontOptions.ts
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
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,7 +7,6 @@ import { GalleryBlock } from '@/collections/blocks/Gallery'
|
|||
import { DonationBlock } from '@/collections/blocks/Donation'
|
||||
import { ButtonBlock } from '@/collections/blocks/Button'
|
||||
import { YoutubePlayerBlock } from '@/collections/blocks/YoutubePlayer'
|
||||
import { isPublishedPublic } from '@/collections/access/public'
|
||||
|
||||
|
||||
export const Blog: CollectionConfig = {
|
||||
|
|
@ -118,17 +117,9 @@ export const Blog: CollectionConfig = {
|
|||
admin: {
|
||||
useAsTitle: 'title',
|
||||
hidden: hide,
|
||||
livePreview: {
|
||||
url: ({ data }) => `/api/draft?url=/blog/${data.id}`,
|
||||
}
|
||||
},
|
||||
versions: {
|
||||
drafts: {
|
||||
validate: true
|
||||
}
|
||||
},
|
||||
access: {
|
||||
read: isPublishedPublic(),
|
||||
read: () => true,
|
||||
create: isAdminOrEmployee(),
|
||||
update: isAdminOrEmployee(),
|
||||
delete: isAdminOrEmployee(),
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
import { CollectionConfig } from 'payload'
|
||||
import { Group, User } from '@/payload-types'
|
||||
import { fetchEventById } from '@/fetch/events'
|
||||
import { isPublishedPublic } from '@/collections/access/public'
|
||||
import { stringify } from 'qs-esm'
|
||||
import { Event, Group, User } from '@/payload-types'
|
||||
|
||||
export const Events: CollectionConfig = {
|
||||
slug: 'event',
|
||||
|
|
@ -183,17 +182,9 @@ export const Events: CollectionConfig = {
|
|||
],
|
||||
admin: {
|
||||
useAsTitle: 'title',
|
||||
livePreview: {
|
||||
url: ({ data }) => `/api/draft?url=/veranstaltungen/${data.id}`,
|
||||
},
|
||||
},
|
||||
versions: {
|
||||
drafts: {
|
||||
validate: true
|
||||
},
|
||||
},
|
||||
access: {
|
||||
read: isPublishedPublic(),
|
||||
read: () => true,
|
||||
// admins and employees can delete, others only if they are member of the group
|
||||
delete: async ({ req: { user }, id }) => {
|
||||
if (!user) {
|
||||
|
|
@ -207,7 +198,7 @@ export const Events: CollectionConfig = {
|
|||
return false
|
||||
}
|
||||
|
||||
const event = await fetchEventById(id)
|
||||
const event = await fetchEvent(id)
|
||||
if (hasGroup(user, event)) {
|
||||
return true
|
||||
}
|
||||
|
|
@ -244,3 +235,20 @@ 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,7 +7,6 @@ import { DocumentBlock } from '@/collections/blocks/Document'
|
|||
import { DonationBlock } from '@/collections/blocks/Donation'
|
||||
import { ButtonBlock } from '@/collections/blocks/Button'
|
||||
import { YoutubePlayerBlock } from '@/collections/blocks/YoutubePlayer'
|
||||
import { isPublishedPublic } from '@/collections/access/public'
|
||||
|
||||
export const Groups: CollectionConfig = {
|
||||
slug: 'group',
|
||||
|
|
@ -93,17 +92,9 @@ export const Groups: CollectionConfig = {
|
|||
},
|
||||
admin: {
|
||||
useAsTitle: 'name',
|
||||
livePreview: {
|
||||
url: ({ data }) => `/api/draft?url=/gruppe/${data.slug}`,
|
||||
},
|
||||
},
|
||||
versions: {
|
||||
drafts: {
|
||||
validate: true
|
||||
},
|
||||
},
|
||||
access: {
|
||||
read: isPublishedPublic(),
|
||||
read: () => true,
|
||||
create: isAdminOrEmployee(),
|
||||
update: ({ req, id }) => {
|
||||
if (!req.user) {
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@ import { MassTimesBlock } from '@/collections/blocks/MassTimes'
|
|||
import { CollapsibleImageWithTextBlock } from '@/collections/blocks/CollapsibleImageWithText'
|
||||
import { EventsBlock } from '@/collections/blocks/Events'
|
||||
import { PublicationAndNewsletterBlock } from '@/collections/blocks/PublicationAndNewsletter'
|
||||
import { isPublishedPublic } from '@/collections/access/public'
|
||||
|
||||
export const Pages: CollectionConfig = {
|
||||
slug: 'pages',
|
||||
|
|
@ -95,24 +94,18 @@ export const Pages: CollectionConfig = {
|
|||
HorizontalRuleBlock,
|
||||
BlogSliderBlock,
|
||||
MassTimesBlock,
|
||||
CollapsibleImageWithTextBlock,
|
||||
EventsBlock,
|
||||
PublicationAndNewsletterBlock,
|
||||
],
|
||||
},
|
||||
],
|
||||
admin: {
|
||||
useAsTitle: 'title',
|
||||
hidden: hide,
|
||||
livePreview: {
|
||||
url: ({ data }) => `/api/draft?url=/${data.slug}`,
|
||||
},
|
||||
},
|
||||
versions: {
|
||||
drafts: {
|
||||
validate: true
|
||||
},
|
||||
},
|
||||
access: {
|
||||
read: isPublishedPublic(),
|
||||
read: () => true,
|
||||
create: isAdminOrEmployee(),
|
||||
update: isAdminOrEmployee(),
|
||||
delete: isAdminOrEmployee(),
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ import { DocumentBlock } from '@/collections/blocks/Document'
|
|||
import { DonationBlock } from '@/collections/blocks/Donation'
|
||||
import { YoutubePlayerBlock } from '@/collections/blocks/YoutubePlayer'
|
||||
import { DonationAppeal } from '@/collections/blocks/DonationAppeal'
|
||||
import { isPublishedPublic } from '@/collections/access/public'
|
||||
|
||||
export const Parish: CollectionConfig = {
|
||||
slug: 'parish',
|
||||
|
|
@ -164,18 +163,10 @@ export const Parish: CollectionConfig = {
|
|||
],
|
||||
admin: {
|
||||
useAsTitle: 'name',
|
||||
hidden: hide,
|
||||
livePreview: {
|
||||
url: ({ data }) => `/api/draft?url=/gemeinde/${data.slug}`,
|
||||
},
|
||||
},
|
||||
versions: {
|
||||
drafts: {
|
||||
validate: true
|
||||
},
|
||||
hidden: hide
|
||||
},
|
||||
access: {
|
||||
read: isPublishedPublic(),
|
||||
read: () => true,
|
||||
create: isAdmin(),
|
||||
update: isAdminOrEmployee(),
|
||||
delete: isAdmin(),
|
||||
|
|
|
|||
|
|
@ -1,17 +0,0 @@
|
|||
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,7 +33,12 @@ export const ContactformBlock: Block = {
|
|||
{
|
||||
name: 'email',
|
||||
type: 'email',
|
||||
defaultValue: siteConfig.email,
|
||||
// defaultValue: async ({ req }) => {
|
||||
// const config = await req.payload.findGlobal({
|
||||
// slug: 'site-config',
|
||||
// })
|
||||
// return config?.email || siteConfig.email
|
||||
// },
|
||||
required: true,
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ export const CollapsibleArrow = ({direction, onClick, stroke = 2}: CollapsibleAr
|
|||
className={style}
|
||||
onClick={onClick}
|
||||
>
|
||||
<path d="M1 1L5.28326 8.50159C5.6627 9.16614 6.3373 9.16614 6.71674 8.50159L11 1" stroke="var(--base-color)"
|
||||
<path d="M1 1L5.28326 8.50159C5.6627 9.16614 6.3373 9.16614 6.71674 8.50159L11 1" stroke="#426156"
|
||||
strokeWidth={stroke} />
|
||||
</svg>
|
||||
)
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -1,15 +0,0 @@
|
|||
'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') {
|
||||
// const imageUrl = typeof item.image === 'object' && item.image?.url
|
||||
// ? item.image.url
|
||||
// : ''
|
||||
// const bg = item.backgroundColor === 'none'
|
||||
// ? undefined
|
||||
// : item.backgroundColor as 'soft' | 'off-white' | undefined
|
||||
// return (
|
||||
// <CollapsibleImageWithText
|
||||
// key={item.id}
|
||||
// title={item.title}
|
||||
// text={item.text}
|
||||
// image={imageUrl}
|
||||
// backgroundColor={bg}
|
||||
// schema={item.schema as 'base' | 'contrast' | undefined}
|
||||
// content={
|
||||
// item.content
|
||||
// ? <HTMLText width={'1/2'} data={item.content} />
|
||||
// : <></>
|
||||
// }
|
||||
// />
|
||||
// )
|
||||
// }
|
||||
if (item.blockType === 'collapsibleImageWithText') {
|
||||
const imageUrl = typeof item.image === 'object' && item.image?.url
|
||||
? item.image.url
|
||||
: ''
|
||||
const bg = item.backgroundColor === 'none'
|
||||
? undefined
|
||||
: item.backgroundColor as 'soft' | 'off-white' | undefined
|
||||
return (
|
||||
<CollapsibleImageWithText
|
||||
key={item.id}
|
||||
title={item.title}
|
||||
text={item.text}
|
||||
image={imageUrl}
|
||||
backgroundColor={bg}
|
||||
schema={item.schema as 'base' | 'contrast' | undefined}
|
||||
content={
|
||||
item.content
|
||||
? <HTMLText width={'1/2'} data={item.content} />
|
||||
: <></>
|
||||
}
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
if (item.blockType === 'events') {
|
||||
return (
|
||||
|
|
@ -227,9 +227,9 @@ export function Blocks({ content }: BlocksProps) {
|
|||
)
|
||||
}
|
||||
|
||||
// if (item.blockType === 'publicationAndNewsletter') {
|
||||
// return <PublicationAndNewsletter key={item.id} />
|
||||
// }
|
||||
if (item.blockType === 'publicationAndNewsletter') {
|
||||
return <PublicationAndNewsletter key={item.id} />
|
||||
}
|
||||
})}
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ export const Footer = async () => {
|
|||
<br />
|
||||
<Logo
|
||||
color={'#ffffff'}
|
||||
textColor={'var(--base-color)'}
|
||||
textColor={'#426156'}
|
||||
withText={true}
|
||||
height={100}
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -1,53 +1,18 @@
|
|||
import dreikoenige from '../../sites/dreikoenige/config'
|
||||
import chemnitz from '../../sites/chemnitz/config'
|
||||
|
||||
export type FontKey =
|
||||
| 'cairo'
|
||||
| 'roboto'
|
||||
| 'openSans'
|
||||
| 'lato'
|
||||
| 'nunito'
|
||||
| 'raleway'
|
||||
| 'faustina'
|
||||
| 'merriweather'
|
||||
| 'sourceSans3'
|
||||
| 'playfairDisplay'
|
||||
| 'lora'
|
||||
| 'crimsonText'
|
||||
| '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
|
||||
export const siteConfig = {
|
||||
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',
|
||||
keywords: [
|
||||
'Katholische Pfarrei',
|
||||
'Heilige Drei Könige',
|
||||
'Berlin',
|
||||
'Gottesdienst',
|
||||
'Sakramente',
|
||||
'Veranstaltungen',
|
||||
'Gemeinde',
|
||||
],
|
||||
ogImage: '/og-logo.svg',
|
||||
email: 'kontakt@dreikoenige.berlin',
|
||||
}
|
||||
|
|
@ -1,75 +1,87 @@
|
|||
import { getPayload } from 'payload'
|
||||
import config from '@/payload.config'
|
||||
import { stringify } from 'qs-esm'
|
||||
import { Announcement } from '@/payload-types'
|
||||
import { PaginatedDocs } from 'payload'
|
||||
|
||||
/**
|
||||
* Fetch last announcement for a parish
|
||||
*/
|
||||
export const fetchLastAnnouncement = async (
|
||||
parishId: string,
|
||||
): Promise<Announcement | undefined> => {
|
||||
const date = new Date()
|
||||
export const fetchLastAnnouncement = async (parishId: string): Promise<Announcement | undefined> => {
|
||||
const date = new Date();
|
||||
date.setDate(date.getDate() - 14)
|
||||
const tomorrow = new Date()
|
||||
tomorrow.setDate(tomorrow.getDate() + 1)
|
||||
tomorrow.setHours(23, 59, 59, 59)
|
||||
const tomorrow = new Date();
|
||||
tomorrow.setDate(tomorrow.getDate() + 1);
|
||||
tomorrow.setHours(23,59,59,59);
|
||||
|
||||
const payload = await getPayload({ config })
|
||||
const result = await payload.find({
|
||||
collection: 'announcement',
|
||||
sort: '-date',
|
||||
where: {
|
||||
and: [
|
||||
{
|
||||
parish: {
|
||||
equals: parishId,
|
||||
},
|
||||
},
|
||||
{
|
||||
date: {
|
||||
greater_than_equal: date.toISOString(),
|
||||
},
|
||||
},
|
||||
{
|
||||
date: {
|
||||
less_than_equal: tomorrow.toISOString(),
|
||||
},
|
||||
},
|
||||
],
|
||||
const query: any = {
|
||||
and: [
|
||||
{
|
||||
parish: {
|
||||
equals: parishId
|
||||
}
|
||||
},
|
||||
{
|
||||
date: {
|
||||
greater_than_equal: date.toISOString(),
|
||||
}
|
||||
},
|
||||
{
|
||||
date: {
|
||||
less_than_equal: tomorrow.toISOString()
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
const stringifiedQuery = stringify(
|
||||
{
|
||||
sort: "-date",
|
||||
where: query,
|
||||
limit: 1,
|
||||
},
|
||||
limit: 1,
|
||||
})
|
||||
return result.docs[0]
|
||||
{ addQueryPrefix: true },
|
||||
)
|
||||
|
||||
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
|
||||
*/
|
||||
export const fetchLastAnnouncements = async () => {
|
||||
const date = new Date()
|
||||
export const fetchLastAnnouncements = async (): Promise<PaginatedDocs<Announcement> | undefined> => {
|
||||
const date = new Date();
|
||||
date.setDate(date.getDate() - 14)
|
||||
const tomorrow = new Date()
|
||||
tomorrow.setDate(tomorrow.getDate() + 1)
|
||||
tomorrow.setHours(23, 59, 59, 59)
|
||||
const tomorrow = new Date();
|
||||
tomorrow.setDate(tomorrow.getDate() + 1);
|
||||
tomorrow.setHours(23,59,59,59);
|
||||
|
||||
const payload = await getPayload({ config })
|
||||
return payload.find({
|
||||
collection: 'announcement',
|
||||
sort: '-date',
|
||||
where: {
|
||||
and: [
|
||||
{
|
||||
date: {
|
||||
greater_than_equal: date.toISOString(),
|
||||
},
|
||||
},
|
||||
{
|
||||
date: {
|
||||
less_than_equal: tomorrow.toISOString(),
|
||||
},
|
||||
},
|
||||
],
|
||||
const query: any = {
|
||||
and: [
|
||||
{
|
||||
date: {
|
||||
greater_than_equal: date.toISOString(),
|
||||
}
|
||||
},
|
||||
{
|
||||
date: {
|
||||
less_than_equal: tomorrow.toISOString()
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
const stringifiedQuery = stringify(
|
||||
{
|
||||
sort: "-date",
|
||||
where: query,
|
||||
limit: 3,
|
||||
},
|
||||
limit: 3,
|
||||
})
|
||||
}
|
||||
{ addQueryPrefix: true },
|
||||
)
|
||||
|
||||
const response = await fetch(`http://localhost:3000/api/announcement${stringifiedQuery}`)
|
||||
if (!response.ok) return undefined
|
||||
return await response.json() as PaginatedDocs<Announcement>
|
||||
}
|
||||
|
|
@ -1,81 +1,73 @@
|
|||
import { getPayload } from 'payload'
|
||||
import config from '@/payload.config'
|
||||
import { Blog } from '@/payload-types'
|
||||
import { PaginatedDocs } from 'payload'
|
||||
import { stringify } from 'qs-esm'
|
||||
|
||||
/**
|
||||
* Fetches blog posts based on given criteria.
|
||||
*
|
||||
* @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) => {
|
||||
const today = new Date()
|
||||
today.setHours(23, 59)
|
||||
export const fetchBlogPosts = async (displayOnFrontpage: boolean): Promise<PaginatedDocs<Blog> | undefined> => {
|
||||
const today = new Date();
|
||||
today.setHours(23, 59);
|
||||
|
||||
const query: any = {
|
||||
and: [
|
||||
{
|
||||
'_status': {
|
||||
equals: 'published',
|
||||
}
|
||||
const query: any =
|
||||
{
|
||||
sort: "-date",
|
||||
select: {
|
||||
title: true,
|
||||
date: true,
|
||||
photo: true,
|
||||
content: displayOnFrontpage ? undefined : true, // hack to fetch content only for the `/blog` page
|
||||
},
|
||||
{
|
||||
or: [
|
||||
where: {
|
||||
and: [
|
||||
{
|
||||
'configuration.displayFromDate': {
|
||||
equals: null,
|
||||
},
|
||||
or: [
|
||||
{
|
||||
"configuration.displayFromDate": {
|
||||
equals: null
|
||||
}
|
||||
},
|
||||
{
|
||||
"configuration.displayFromDate": {
|
||||
less_than_equal: today.toISOString(),
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
'configuration.displayFromDate': {
|
||||
less_than_equal: today.toISOString(),
|
||||
},
|
||||
},
|
||||
or: [
|
||||
{
|
||||
"configuration.displayTillDate": {
|
||||
equals: null
|
||||
}
|
||||
},
|
||||
{
|
||||
"configuration.displayTillDate": {
|
||||
greater_than_equal: today.toISOString(),
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
},
|
||||
{
|
||||
or: [
|
||||
{
|
||||
'configuration.displayTillDate': {
|
||||
equals: null,
|
||||
},
|
||||
},
|
||||
{
|
||||
'configuration.displayTillDate': {
|
||||
greater_than_equal: today.toISOString(),
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
}
|
||||
limit: 18
|
||||
};
|
||||
|
||||
if (displayOnFrontpage) {
|
||||
query.and.push({
|
||||
'configuration.showOnFrontpage': {
|
||||
equals: true,
|
||||
if(displayOnFrontpage) {
|
||||
query.where.and.push({
|
||||
"configuration.showOnFrontpage": {
|
||||
equals: 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,
|
||||
})
|
||||
}
|
||||
const stringifiedQuery = stringify(query, {addQueryPrefix: true})
|
||||
|
||||
export async function fetchBlog(id: string, draft: boolean) {
|
||||
const payload = await getPayload({ config })
|
||||
return await payload.findByID({
|
||||
collection: 'blog',
|
||||
id: id,
|
||||
draft,
|
||||
})
|
||||
|
||||
const resp = await fetch(`http://localhost:3000/api/blog${stringifiedQuery}`);
|
||||
if (!resp.ok) return undefined;
|
||||
return resp.json();
|
||||
}
|
||||
|
|
@ -1,75 +1,89 @@
|
|||
import { getPayload } from 'payload'
|
||||
import config from '@/payload.config'
|
||||
import { stringify } from 'qs-esm'
|
||||
import { PaginatedDocs } from 'payload'
|
||||
import { Calendar } from '@/payload-types'
|
||||
|
||||
/**
|
||||
* Fetch last calendar for a parish
|
||||
*/
|
||||
export const fetchLastCalendar = async (
|
||||
parishId: string,
|
||||
): Promise<Calendar | undefined> => {
|
||||
const date = new Date()
|
||||
date.setDate(date.getDate() - 14)
|
||||
const tomorrow = new Date()
|
||||
tomorrow.setDate(tomorrow.getDate() + 1)
|
||||
tomorrow.setHours(23, 59, 59, 59)
|
||||
export const fetchLastCalendar = async (parishId: string): Promise<Calendar | undefined> => {
|
||||
const date = new Date();
|
||||
date.setDate(date.getDate() - 14);
|
||||
const tomorrow = new Date();
|
||||
tomorrow.setDate(tomorrow.getDate() + 1);
|
||||
tomorrow.setHours(23,59,59,59);
|
||||
|
||||
const payload = await getPayload({ config })
|
||||
const result = await payload.find({
|
||||
collection: 'calendar',
|
||||
sort: '-date',
|
||||
where: {
|
||||
and: [
|
||||
{
|
||||
parish: {
|
||||
equals: parishId,
|
||||
},
|
||||
},
|
||||
{
|
||||
date: {
|
||||
greater_than_equal: date.toISOString(),
|
||||
},
|
||||
},
|
||||
{
|
||||
date: {
|
||||
less_than_equal: tomorrow.toISOString(),
|
||||
},
|
||||
},
|
||||
],
|
||||
const query: any = {
|
||||
and: [
|
||||
{
|
||||
parish: {
|
||||
equals: parishId
|
||||
}
|
||||
},
|
||||
{
|
||||
date: {
|
||||
greater_than_equal: date.toISOString(),
|
||||
}
|
||||
},
|
||||
{
|
||||
date: {
|
||||
less_than_equal: tomorrow.toISOString()
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
}
|
||||
|
||||
const stringifiedQuery = stringify(
|
||||
{
|
||||
sort: "-date",
|
||||
where: query,
|
||||
limit: 1,
|
||||
},
|
||||
limit: 1,
|
||||
})
|
||||
return result.docs[0]
|
||||
{ addQueryPrefix: true },
|
||||
)
|
||||
|
||||
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
|
||||
*/
|
||||
export const fetchLastCalendars = async () => {
|
||||
const date = new Date()
|
||||
date.setDate(date.getDate() - 14)
|
||||
const tomorrow = new Date()
|
||||
tomorrow.setDate(tomorrow.getDate() + 1)
|
||||
tomorrow.setHours(23, 59, 59, 59)
|
||||
export const fetchLastCalendars = async (): Promise<PaginatedDocs<Calendar> | undefined> => {
|
||||
const date = new Date();
|
||||
date.setDate(date.getDate() - 14);
|
||||
const tomorrow = new Date();
|
||||
tomorrow.setDate(tomorrow.getDate() + 1);
|
||||
tomorrow.setHours(23,59,59,59);
|
||||
|
||||
const payload = await getPayload({ config })
|
||||
return payload.find({
|
||||
collection: 'calendar',
|
||||
sort: '-date',
|
||||
where: {
|
||||
and: [
|
||||
{
|
||||
date: {
|
||||
greater_than_equal: date.toISOString(),
|
||||
},
|
||||
},
|
||||
{
|
||||
date: {
|
||||
less_than_equal: tomorrow.toISOString(),
|
||||
},
|
||||
},
|
||||
],
|
||||
const query: any = {
|
||||
and: [
|
||||
{
|
||||
date: {
|
||||
greater_than_equal: date.toISOString(),
|
||||
}
|
||||
},
|
||||
{
|
||||
date: {
|
||||
less_than_equal: tomorrow.toISOString()
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
}
|
||||
|
||||
const stringifiedQuery = stringify(
|
||||
{
|
||||
sort: "-date",
|
||||
where: query,
|
||||
limit: 3,
|
||||
},
|
||||
limit: 3,
|
||||
})
|
||||
}
|
||||
{ addQueryPrefix: true },
|
||||
)
|
||||
|
||||
const response = await fetch(`http://localhost:3000/api/calendar${stringifiedQuery}`)
|
||||
if (!response.ok) return undefined
|
||||
return await response.json() as PaginatedDocs<Calendar>
|
||||
}
|
||||
17
src/fetch/churches.ts
Normal file
17
src/fetch/churches.ts
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
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,19 +1,27 @@
|
|||
import { getPayload } from 'payload'
|
||||
import config from '@/payload.config'
|
||||
import { PaginatedDocs } from 'payload'
|
||||
import { Classified } from '@/payload-types'
|
||||
import { stringify } from 'qs-esm'
|
||||
|
||||
export const fetchClassifieds = async () => {
|
||||
const date = new Date()
|
||||
date.setHours(0, 0, 0, 0)
|
||||
export const fetchClassifieds = async (): Promise<PaginatedDocs<Classified> | undefined> => {
|
||||
const date = new Date();
|
||||
date.setHours(0, 0, 0, 0);
|
||||
|
||||
const payload = await getPayload({ config })
|
||||
return payload.find({
|
||||
collection: 'classifieds',
|
||||
sort: 'date',
|
||||
where: {
|
||||
until: {
|
||||
greater_than_equal: date.toISOString(),
|
||||
},
|
||||
const query = {
|
||||
until: {
|
||||
greater_than_equal: date.toISOString(),
|
||||
}
|
||||
}
|
||||
|
||||
const stringifiedQuery = stringify(
|
||||
{
|
||||
sort: "date",
|
||||
where: query,
|
||||
limit: 50
|
||||
},
|
||||
limit: 50,
|
||||
})
|
||||
{ addQueryPrefix: true },
|
||||
)
|
||||
|
||||
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'
|
||||
|
||||
export const fetchMenu = unstable_cache(
|
||||
async (): Promise<Menu> => {
|
||||
const payload = await getPayload({ config })
|
||||
return payload.findGlobal({ slug: 'menu' })
|
||||
},
|
||||
['menu'],
|
||||
{ tags: ['menu'] },
|
||||
)
|
||||
export const fetchMenu = async (): Promise<Menu> => {
|
||||
const rep = await fetch(
|
||||
"http://localhost:3000/api/globals/menu",
|
||||
{ next: { tags: ['menu'] } } // cache fetch result
|
||||
);
|
||||
|
||||
if (!rep.ok) {
|
||||
throw new Error("Could not fetch menu")
|
||||
}
|
||||
return await rep.json()
|
||||
}
|
||||
13
src/fetch/design.ts
Normal file
13
src/fetch/design.ts
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
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,17 +1,21 @@
|
|||
import { getPayload } from 'payload'
|
||||
import config from '@/payload.config'
|
||||
import { DonationForm } from '@/payload-types'
|
||||
|
||||
export async function fetchDonationForm(
|
||||
id: string,
|
||||
): Promise<DonationForm | undefined> {
|
||||
try {
|
||||
const payload = await getPayload({ config })
|
||||
return await payload.findByID({
|
||||
collection: 'donation-form',
|
||||
id,
|
||||
})
|
||||
} catch {
|
||||
return undefined
|
||||
}
|
||||
}
|
||||
export async function fetchDonationForm(id: string): Promise<DonationForm | undefined> {
|
||||
// const query = {
|
||||
// id: {
|
||||
// equals: id,
|
||||
// },
|
||||
// }
|
||||
//
|
||||
// const stringifiedQuery = stringify(
|
||||
// {
|
||||
// where: query,
|
||||
// },
|
||||
// { 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,43 +1,33 @@
|
|||
import { getPayload, PaginatedDocs } from 'payload'
|
||||
import config from '@/payload.config'
|
||||
import { stringify } from 'qs-esm'
|
||||
import { PaginatedDocs } from 'payload'
|
||||
import { Event } from '@/payload-types'
|
||||
|
||||
type Args = {
|
||||
parishId?: string
|
||||
groupId?: string
|
||||
limit?: number
|
||||
page?: number
|
||||
parishId?: string;
|
||||
groupId?: string;
|
||||
limit?: number;
|
||||
page?: number;
|
||||
fromDate?: Date
|
||||
toDate?: Date
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Fetch a list of events
|
||||
*
|
||||
*/
|
||||
export async function fetchEvents(
|
||||
args?: Args,
|
||||
): Promise<PaginatedDocs<Event>> {
|
||||
const {
|
||||
parishId,
|
||||
groupId,
|
||||
limit = 30,
|
||||
page = 0,
|
||||
fromDate = new Date(),
|
||||
toDate,
|
||||
} = args || {}
|
||||
export async function fetchEvents(args?: Args): Promise<PaginatedDocs<Event> | undefined> {
|
||||
|
||||
const {parishId, groupId, limit = 30, page = 0, fromDate = new Date(), toDate} = args || {};
|
||||
|
||||
|
||||
const query: any = {
|
||||
and: [
|
||||
{
|
||||
'_status': {
|
||||
equals: 'published',
|
||||
}
|
||||
},
|
||||
{
|
||||
date: {
|
||||
greater_than_equal: fromDate.toISOString(),
|
||||
},
|
||||
},
|
||||
}
|
||||
],
|
||||
}
|
||||
|
||||
|
|
@ -45,54 +35,45 @@ export async function fetchEvents(
|
|||
query.and.push({
|
||||
date: {
|
||||
less_than: toDate.toISOString(),
|
||||
},
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
if (parishId) {
|
||||
query.and.push({
|
||||
parish: {
|
||||
equals: parishId,
|
||||
"parish": {
|
||||
equals: parishId
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
if (groupId) {
|
||||
query.and.push({
|
||||
group: {
|
||||
equals: groupId,
|
||||
},
|
||||
"group": {
|
||||
equals: groupId
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const payload = await getPayload({ config })
|
||||
return payload.find({
|
||||
collection: 'event',
|
||||
sort: 'date',
|
||||
where: query,
|
||||
select: {
|
||||
location: true,
|
||||
date: true,
|
||||
title: true,
|
||||
cancelled: true,
|
||||
},
|
||||
depth: 1,
|
||||
limit,
|
||||
page,
|
||||
}) as Promise<PaginatedDocs<Event>>
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
}
|
||||
const stringifiedQuery = stringify(
|
||||
{
|
||||
sort: "date",
|
||||
where: query,
|
||||
select: {
|
||||
location: true,
|
||||
date: true,
|
||||
title: true,
|
||||
cancelled: true
|
||||
},
|
||||
depth: 1,
|
||||
limit,
|
||||
page
|
||||
},
|
||||
{ addQueryPrefix: true },
|
||||
)
|
||||
|
||||
const response = await fetch(`http://localhost:3000/api/event${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 { Footer } from '@/payload-types'
|
||||
|
||||
export const fetchFooter = unstable_cache(
|
||||
async (): Promise<Footer> => {
|
||||
const payload = await getPayload({ config })
|
||||
return payload.findGlobal({ slug: 'footer' })
|
||||
},
|
||||
['footer'],
|
||||
{ tags: ['footer'] },
|
||||
)
|
||||
export async function fetchFooter(): Promise<Footer> {
|
||||
const res = await fetch('http://localhost:3000/api/globals/footer', {
|
||||
next: { tags: ['footer'] },
|
||||
})
|
||||
|
||||
if (!res.ok) {
|
||||
throw new Error('Could not fetch footer')
|
||||
}
|
||||
|
||||
return res.json()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,16 +1,22 @@
|
|||
import { getPayload } from 'payload'
|
||||
import config from '@/payload.config'
|
||||
import { stringify } from 'qs-esm'
|
||||
import { PaginatedDocs } from 'payload'
|
||||
import { Group } from '@/payload-types'
|
||||
|
||||
export async function fetchGroup(slug: string, draft: boolean = false) {
|
||||
const payload = await getPayload({ config })
|
||||
const result = await payload.find({
|
||||
collection: 'group',
|
||||
where: {
|
||||
slug: {
|
||||
equals: slug,
|
||||
},
|
||||
export async function fetchGroup(slug: string): Promise<PaginatedDocs<Group> | undefined> {
|
||||
const query = {
|
||||
slug: {
|
||||
equals: slug,
|
||||
},
|
||||
draft,
|
||||
})
|
||||
return result.docs[0] ?? null
|
||||
}
|
||||
}
|
||||
|
||||
const stringifiedQuery = stringify(
|
||||
{
|
||||
where: query,
|
||||
},
|
||||
{ addQueryPrefix: true },
|
||||
)
|
||||
|
||||
const res = await fetch(`http://localhost:3000/api/group${stringifiedQuery}`)
|
||||
if (!res.ok) return undefined
|
||||
return res.json()
|
||||
}
|
||||
|
|
@ -1,52 +1,64 @@
|
|||
import { getPayload } from 'payload'
|
||||
import config from '@/payload.config'
|
||||
import { stringify } from 'qs-esm'
|
||||
import { PaginatedDocs } from 'payload'
|
||||
import { Highlight } from '@/payload-types'
|
||||
|
||||
export const fetchHighlights = async () => {
|
||||
const date = new Date()
|
||||
date.setHours(0, 0, 0, 0)
|
||||
export const fetchHighlights = async (): Promise<PaginatedDocs<Highlight> | undefined> => {
|
||||
const date = new Date();
|
||||
date.setHours(0, 0, 0, 0);
|
||||
|
||||
const payload = await getPayload({ config })
|
||||
return payload.find({
|
||||
collection: 'highlight',
|
||||
sort: 'date',
|
||||
where: {
|
||||
and: [
|
||||
{
|
||||
from: {
|
||||
less_than_equal: date.toISOString(),
|
||||
},
|
||||
until: {
|
||||
greater_than_equal: date.toISOString(),
|
||||
},
|
||||
const query: any = {
|
||||
and: [
|
||||
{
|
||||
from: {
|
||||
less_than_equal: date.toISOString(),
|
||||
},
|
||||
],
|
||||
until: {
|
||||
greater_than_equal: date.toISOString(),
|
||||
}
|
||||
}
|
||||
],
|
||||
}
|
||||
|
||||
const stringifiedQuery = stringify(
|
||||
{
|
||||
sort: "date",
|
||||
where: query,
|
||||
limit: 3
|
||||
},
|
||||
limit: 3,
|
||||
})
|
||||
{ addQueryPrefix: true },
|
||||
)
|
||||
|
||||
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,
|
||||
) => {
|
||||
const payload = await getPayload({ config })
|
||||
return payload.find({
|
||||
collection: 'highlight',
|
||||
sort: 'date',
|
||||
where: {
|
||||
and: [
|
||||
{
|
||||
date: {
|
||||
greater_than_equal: from.toISOString(),
|
||||
},
|
||||
},
|
||||
{
|
||||
date: {
|
||||
less_than: until.toISOString(),
|
||||
},
|
||||
},
|
||||
],
|
||||
export const fetchHighlightsBetweenDates = async (from: Date, until: Date): Promise<PaginatedDocs<Highlight> | undefined> => {
|
||||
const query: any = {
|
||||
and: [
|
||||
{
|
||||
date: {
|
||||
greater_than_equal: from.toISOString(),
|
||||
}
|
||||
},
|
||||
{
|
||||
date: {
|
||||
less_than: until.toISOString(),
|
||||
}
|
||||
}
|
||||
],
|
||||
}
|
||||
|
||||
const stringifiedQuery = stringify(
|
||||
{
|
||||
sort: "date",
|
||||
where: query,
|
||||
limit: 5
|
||||
},
|
||||
limit: 5,
|
||||
})
|
||||
}
|
||||
{ addQueryPrefix: true },
|
||||
)
|
||||
|
||||
const response = await fetch(`http://localhost:3000/api/highlight${stringifiedQuery}`)
|
||||
if (!response.ok) return undefined
|
||||
return response.json()
|
||||
}
|
||||
|
|
@ -1,20 +1,27 @@
|
|||
import { getPayload } from 'payload'
|
||||
import config from '@/payload.config'
|
||||
import { stringify } from 'qs-esm'
|
||||
import { PaginatedDocs } from 'payload'
|
||||
import { Magazine } from '@/payload-types'
|
||||
|
||||
/**
|
||||
* Asynchronously fetches the last magazine entry.
|
||||
* Asynchronously fetches the last magazine entry from the specified API endpoint.
|
||||
*
|
||||
* @returns {Promise<Magazine | undefined>} The last magazine entry if successful, or undefined.
|
||||
* 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>} 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
|
||||
> => {
|
||||
const payload = await getPayload({ config })
|
||||
const result = await payload.find({
|
||||
collection: 'magazine',
|
||||
sort: '-date',
|
||||
limit: 1,
|
||||
})
|
||||
return result.docs[0]
|
||||
}
|
||||
export const fetchLastMagazine = async (): Promise<Magazine | undefined> => {
|
||||
|
||||
const stringifiedQuery = stringify(
|
||||
{
|
||||
sort: "-date",
|
||||
limit: 1,
|
||||
},
|
||||
{ addQueryPrefix: true },
|
||||
)
|
||||
|
||||
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,32 +1,25 @@
|
|||
import { unstable_cache } from 'next/cache'
|
||||
import { getPayload } from 'payload'
|
||||
import config from '@/payload.config'
|
||||
import { Page } from '@/payload-types'
|
||||
import { stringify } from 'qs-esm'
|
||||
|
||||
export async function fetchPageBySlug(
|
||||
slug: string,
|
||||
draft: boolean = false,
|
||||
): Promise<Page | undefined> {
|
||||
const fetchPage = async () => {
|
||||
const payload = await getPayload({ config })
|
||||
const data = await payload.find({
|
||||
collection: 'pages',
|
||||
const query = stringify(
|
||||
{
|
||||
where: {
|
||||
slug: {
|
||||
equals: slug,
|
||||
},
|
||||
},
|
||||
limit: 1,
|
||||
draft,
|
||||
})
|
||||
return data.docs?.[0] ?? undefined
|
||||
}
|
||||
},
|
||||
{ addQueryPrefix: true },
|
||||
)
|
||||
|
||||
if (draft) {
|
||||
return fetchPage()
|
||||
}
|
||||
|
||||
return unstable_cache(fetchPage, ['pages', slug], {
|
||||
tags: ['pages', `pages-${slug}`],
|
||||
})()
|
||||
const res = await fetch(`http://localhost:3000/api/pages${query}`, {
|
||||
next: { tags: ['pages', `pages-${slug}`] },
|
||||
})
|
||||
if (!res.ok) return undefined
|
||||
const data = await res.json()
|
||||
return data.docs?.[0]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,16 +1,22 @@
|
|||
import { getPayload } from 'payload'
|
||||
import config from '@/payload.config'
|
||||
import { stringify } from 'qs-esm'
|
||||
import { PaginatedDocs } from 'payload'
|
||||
import { Parish } from '@/payload-types'
|
||||
|
||||
export async function fetchParish(slug: string, draft: boolean = false) {
|
||||
const payload = await getPayload({ config })
|
||||
const result = await payload.find({
|
||||
collection: 'parish',
|
||||
where: {
|
||||
slug: {
|
||||
equals: slug,
|
||||
},
|
||||
export async function fetchParish(slug: string): Promise<PaginatedDocs<Parish> | undefined> {
|
||||
const query = {
|
||||
slug: {
|
||||
equals: slug,
|
||||
},
|
||||
draft,
|
||||
})
|
||||
return result.docs[0] ?? null
|
||||
}
|
||||
}
|
||||
|
||||
const stringifiedQuery = stringify(
|
||||
{
|
||||
where: query,
|
||||
},
|
||||
{ addQueryPrefix: true },
|
||||
)
|
||||
|
||||
const res = await fetch(`http://localhost:3000/api/parish${stringifiedQuery}`)
|
||||
if (!res.ok) return undefined
|
||||
return res.json()
|
||||
}
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
import { getPayload } from 'payload'
|
||||
import config from '@/payload.config'
|
||||
import { stringify } from 'qs-esm'
|
||||
import { PopePrayerIntention } from '@/payload-types'
|
||||
|
||||
/**
|
||||
|
|
@ -8,26 +7,30 @@ import { PopePrayerIntention } from '@/payload-types'
|
|||
* @param year
|
||||
* @param month - in the form of '01' for january, '02' for february ...
|
||||
*/
|
||||
export const fetchPopePrayerIntentions = async (
|
||||
year: number,
|
||||
month: string,
|
||||
): Promise<PopePrayerIntention | undefined> => {
|
||||
const payload = await getPayload({ config })
|
||||
const result = await payload.find({
|
||||
collection: 'popePrayerIntentions',
|
||||
where: {
|
||||
and: [
|
||||
{
|
||||
month: {
|
||||
equals: month,
|
||||
},
|
||||
year: {
|
||||
equals: year,
|
||||
},
|
||||
export const fetchPopePrayerIntentions = async (year: number, month: string): Promise<PopePrayerIntention | undefined> => {
|
||||
const query: any = {
|
||||
and: [
|
||||
{
|
||||
month: {
|
||||
equals: month,
|
||||
},
|
||||
],
|
||||
year: {
|
||||
equals: year
|
||||
}
|
||||
}
|
||||
],
|
||||
}
|
||||
|
||||
const stringifiedQuery = stringify(
|
||||
{
|
||||
where: query,
|
||||
limit: 1
|
||||
},
|
||||
limit: 1,
|
||||
})
|
||||
return result.docs[0]
|
||||
}
|
||||
{ addQueryPrefix: true },
|
||||
)
|
||||
|
||||
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,16 +1,11 @@
|
|||
import { unstable_cache } from 'next/cache'
|
||||
import { getPayload } from 'payload'
|
||||
import config from '@/payload.config'
|
||||
import { Prayer } from '@/payload-types'
|
||||
|
||||
export const fetchPrayers = unstable_cache(
|
||||
async (): Promise<string[]> => {
|
||||
const payload = await getPayload({ config })
|
||||
const data = await payload.find({
|
||||
collection: 'prayers',
|
||||
limit: 0,
|
||||
})
|
||||
return data.docs.map((p) => p.text)
|
||||
},
|
||||
['prayers'],
|
||||
{ tags: ['prayers'] },
|
||||
)
|
||||
export async function fetchPrayers(): Promise<string[]> {
|
||||
const res = await fetch(
|
||||
'http://localhost:3000/api/prayers?limit=0',
|
||||
{ next: { tags: ['prayers'] } },
|
||||
)
|
||||
if (!res.ok) return []
|
||||
const data = await res.json()
|
||||
return (data.docs as Prayer[]).map((p) => p.text)
|
||||
}
|
||||
|
|
|
|||
16
src/fetch/siteConfig.ts
Normal file
16
src/fetch/siteConfig.ts
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
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,76 +1,67 @@
|
|||
import { getPayload, PaginatedDocs } from 'payload'
|
||||
import config from '@/payload.config'
|
||||
import { stringify } from 'qs-esm'
|
||||
import { PaginatedDocs } from 'payload'
|
||||
import { Worship } from '@/payload-types'
|
||||
|
||||
type FetchWorshipArgs = {
|
||||
fromDate?: Date
|
||||
tillDate?: Date
|
||||
fromDate?: Date,
|
||||
tillDate?: Date,
|
||||
locations?: string[]
|
||||
}
|
||||
|
||||
export const fetchWorship = async (
|
||||
args?: FetchWorshipArgs,
|
||||
): Promise<PaginatedDocs<Worship>> => {
|
||||
const { fromDate, tillDate, locations } = args || {}
|
||||
export const fetchWorship = async (args?: FetchWorshipArgs): Promise<PaginatedDocs<Worship> | undefined> => {
|
||||
|
||||
let date = fromDate
|
||||
const {fromDate, tillDate, locations} = args || {}
|
||||
|
||||
let date = fromDate;
|
||||
if (!date) {
|
||||
date = new Date()
|
||||
date.setHours(0, 0, 0, 0)
|
||||
date = new Date();
|
||||
date.setHours(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
const query: any = {
|
||||
and: [
|
||||
{
|
||||
date: {
|
||||
greater_than_equal: date.toISOString(),
|
||||
},
|
||||
},
|
||||
}
|
||||
],
|
||||
}
|
||||
|
||||
if (tillDate) {
|
||||
query.and.push({
|
||||
date: {
|
||||
less_than: tillDate.toISOString(),
|
||||
},
|
||||
less_than: tillDate.toISOString()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
if (locations) {
|
||||
if (locations ) {
|
||||
query.and.push({
|
||||
location: {
|
||||
in: locations,
|
||||
},
|
||||
in: locations
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const payload = await getPayload({ config })
|
||||
return payload.find({
|
||||
collection: 'worship',
|
||||
sort: 'date',
|
||||
where: query,
|
||||
select: {
|
||||
type: true,
|
||||
date: true,
|
||||
cancelled: true,
|
||||
location: true,
|
||||
title: true,
|
||||
const stringifiedQuery = stringify(
|
||||
{
|
||||
sort: "date",
|
||||
where: query,
|
||||
select: {
|
||||
type: true,
|
||||
date: true,
|
||||
cancelled: true,
|
||||
location: true,
|
||||
title: true,
|
||||
},
|
||||
limit: 15
|
||||
},
|
||||
limit: 15,
|
||||
}) as Promise<PaginatedDocs<Worship>>
|
||||
}
|
||||
{ addQueryPrefix: true },
|
||||
)
|
||||
|
||||
/**
|
||||
* Fetch a single worship entry by ID
|
||||
*/
|
||||
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
|
||||
}
|
||||
}
|
||||
const response = await fetch(`http://localhost:3000/api/worship${stringifiedQuery}`)
|
||||
if (!response.ok) return undefined
|
||||
return response.json()
|
||||
}
|
||||
131
src/globals/Design.ts
Normal file
131
src/globals/Design.ts
Normal file
|
|
@ -0,0 +1,131 @@
|
|||
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,7 +1,6 @@
|
|||
import { GlobalConfig } from 'payload'
|
||||
import { isAdmin } from '@/collections/access/admin'
|
||||
import { revalidateTag } from 'next/cache'
|
||||
import { validateHref } from '@/globals/ValidateHref'
|
||||
|
||||
export const FooterGlobal: GlobalConfig = {
|
||||
slug: 'footer',
|
||||
|
|
@ -51,7 +50,6 @@ export const FooterGlobal: GlobalConfig = {
|
|||
label: {
|
||||
de: 'Zieladresse',
|
||||
},
|
||||
validate: validateHref,
|
||||
},
|
||||
],
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
import { Block, GlobalConfig } from 'payload'
|
||||
import { isAdmin } from '@/collections/access/admin'
|
||||
import { hide, isAdmin } from '@/collections/access/admin'
|
||||
import { revalidateTag } from 'next/cache'
|
||||
import { validateHref } from '@/globals/ValidateHref'
|
||||
|
||||
const SimpleItem: Block = {
|
||||
slug: 'simple-item',
|
||||
|
|
@ -19,8 +18,7 @@ const SimpleItem: Block = {
|
|||
name: 'href',
|
||||
type: 'text',
|
||||
label: 'Zieladresse',
|
||||
required: true,
|
||||
validate: validateHref,
|
||||
required: true
|
||||
},
|
||||
{
|
||||
name: 'type',
|
||||
|
|
@ -95,7 +93,6 @@ const MegaMenuItem: Block = {
|
|||
label: 'Zieladresse',
|
||||
type: 'text',
|
||||
required: true,
|
||||
validate: validateHref,
|
||||
}
|
||||
],
|
||||
required: true,
|
||||
|
|
|
|||
103
src/globals/SiteConfig.ts
Normal file
103
src/globals/SiteConfig.ts
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
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')],
|
||||
},
|
||||
}
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
/**
|
||||
* 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
|
||||
}
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,66 +0,0 @@
|
|||
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");`)
|
||||
}
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,238 +0,0 @@
|
|||
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";`)
|
||||
}
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,59 +0,0 @@
|
|||
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");`)
|
||||
}
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,901 +0,0 @@
|
|||
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,10 +17,6 @@ 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_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_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 = [
|
||||
{
|
||||
|
|
@ -116,26 +112,6 @@ export const migrations = [
|
|||
{
|
||||
up: migration_20260309_111617_many_new_features.up,
|
||||
down: migration_20260309_111617_many_new_features.down,
|
||||
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',
|
||||
name: '20260309_111617_many_new_features'
|
||||
},
|
||||
];
|
||||
|
|
|
|||
|
|
@ -126,10 +126,14 @@ export interface Config {
|
|||
globals: {
|
||||
menu: Menu;
|
||||
footer: Footer;
|
||||
design: Design;
|
||||
'site-config': SiteConfig;
|
||||
};
|
||||
globalsSelect: {
|
||||
menu: MenuSelect<false> | MenuSelect<true>;
|
||||
footer: FooterSelect<false> | FooterSelect<true>;
|
||||
design: DesignSelect<false> | DesignSelect<true>;
|
||||
'site-config': SiteConfigSelect<false> | SiteConfigSelect<true>;
|
||||
};
|
||||
locale: null;
|
||||
user: User & {
|
||||
|
|
@ -237,7 +241,6 @@ export interface Parish {
|
|||
| null;
|
||||
updatedAt: string;
|
||||
createdAt: string;
|
||||
_status?: ('draft' | 'published') | null;
|
||||
}
|
||||
/**
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
|
|
@ -256,6 +259,7 @@ export interface Church {
|
|||
*/
|
||||
export interface Document {
|
||||
id: string;
|
||||
prefix?: string | null;
|
||||
updatedAt: string;
|
||||
createdAt: string;
|
||||
url?: string | null;
|
||||
|
|
@ -281,6 +285,7 @@ export interface Media {
|
|||
publicWithoutName: boolean;
|
||||
consent: boolean;
|
||||
};
|
||||
prefix?: string | null;
|
||||
updatedAt: string;
|
||||
createdAt: string;
|
||||
url?: string | null;
|
||||
|
|
@ -469,7 +474,6 @@ export interface Blog {
|
|||
};
|
||||
updatedAt: string;
|
||||
createdAt: string;
|
||||
_status?: ('draft' | 'published') | null;
|
||||
}
|
||||
/**
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
|
|
@ -518,7 +522,6 @@ export interface Event {
|
|||
isRecurring: boolean;
|
||||
updatedAt: string;
|
||||
createdAt: string;
|
||||
_status?: ('draft' | 'published') | null;
|
||||
}
|
||||
/**
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
|
|
@ -635,7 +638,6 @@ export interface Group {
|
|||
| null;
|
||||
updatedAt: string;
|
||||
createdAt: string;
|
||||
_status?: ('draft' | 'published') | null;
|
||||
}
|
||||
/**
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
|
|
@ -854,6 +856,31 @@ export interface Page {
|
|||
blockName?: string | null;
|
||||
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;
|
||||
itemsPerPage?: number | null;
|
||||
|
|
@ -861,11 +888,15 @@ export interface Page {
|
|||
blockName?: string | null;
|
||||
blockType: 'events';
|
||||
}
|
||||
| {
|
||||
id?: string | null;
|
||||
blockName?: string | null;
|
||||
blockType: 'publicationAndNewsletter';
|
||||
}
|
||||
)[]
|
||||
| null;
|
||||
updatedAt: string;
|
||||
createdAt: string;
|
||||
_status?: ('draft' | 'published') | null;
|
||||
}
|
||||
/**
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
|
|
@ -1128,7 +1159,6 @@ export interface ParishSelect<T extends boolean = true> {
|
|||
};
|
||||
updatedAt?: T;
|
||||
createdAt?: T;
|
||||
_status?: T;
|
||||
}
|
||||
/**
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
|
|
@ -1274,7 +1304,6 @@ export interface BlogSelect<T extends boolean = true> {
|
|||
};
|
||||
updatedAt?: T;
|
||||
createdAt?: T;
|
||||
_status?: T;
|
||||
}
|
||||
/**
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
|
|
@ -1309,7 +1338,6 @@ export interface EventSelect<T extends boolean = true> {
|
|||
isRecurring?: T;
|
||||
updatedAt?: T;
|
||||
createdAt?: T;
|
||||
_status?: T;
|
||||
}
|
||||
/**
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
|
|
@ -1421,7 +1449,6 @@ export interface GroupSelect<T extends boolean = true> {
|
|||
};
|
||||
updatedAt?: T;
|
||||
createdAt?: T;
|
||||
_status?: T;
|
||||
}
|
||||
/**
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
|
|
@ -1572,6 +1599,18 @@ export interface PagesSelect<T extends boolean = true> {
|
|||
id?: T;
|
||||
blockName?: T;
|
||||
};
|
||||
collapsibleImageWithText?:
|
||||
| T
|
||||
| {
|
||||
title?: T;
|
||||
text?: T;
|
||||
image?: T;
|
||||
content?: T;
|
||||
backgroundColor?: T;
|
||||
schema?: T;
|
||||
id?: T;
|
||||
blockName?: T;
|
||||
};
|
||||
events?:
|
||||
| T
|
||||
| {
|
||||
|
|
@ -1580,10 +1619,15 @@ export interface PagesSelect<T extends boolean = true> {
|
|||
id?: T;
|
||||
blockName?: T;
|
||||
};
|
||||
publicationAndNewsletter?:
|
||||
| T
|
||||
| {
|
||||
id?: T;
|
||||
blockName?: T;
|
||||
};
|
||||
};
|
||||
updatedAt?: T;
|
||||
createdAt?: T;
|
||||
_status?: T;
|
||||
}
|
||||
/**
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
|
|
@ -1610,6 +1654,7 @@ export interface MagazineSelect<T extends boolean = true> {
|
|||
* via the `definition` "documents_select".
|
||||
*/
|
||||
export interface DocumentsSelect<T extends boolean = true> {
|
||||
prefix?: T;
|
||||
updatedAt?: T;
|
||||
createdAt?: T;
|
||||
url?: T;
|
||||
|
|
@ -1636,6 +1681,7 @@ export interface MediaSelect<T extends boolean = true> {
|
|||
publicWithoutName?: T;
|
||||
consent?: T;
|
||||
};
|
||||
prefix?: T;
|
||||
updatedAt?: T;
|
||||
createdAt?: T;
|
||||
url?: T;
|
||||
|
|
@ -1848,6 +1894,102 @@ export interface Footer {
|
|||
updatedAt?: 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
|
||||
* via the `definition` "menu_select".
|
||||
|
|
@ -1951,6 +2093,45 @@ export interface FooterSelect<T extends boolean = true> {
|
|||
createdAt?: 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
|
||||
* via the `definition` "auth".
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import {
|
|||
AlignFeature,
|
||||
UnorderedListFeature,
|
||||
LinkFeature,
|
||||
FixedToolbarFeature,
|
||||
HTMLConverterFeature, FixedToolbarFeature,
|
||||
} from '@payloadcms/richtext-lexical'
|
||||
import path from 'path'
|
||||
import { buildConfig } from 'payload'
|
||||
|
|
@ -38,6 +38,8 @@ import { LiturgicalCalendar } from '@/collections/LiturgicalCalendar'
|
|||
import { Classifieds } from '@/collections/Classifieds'
|
||||
import { MenuGlobal } from '@/globals/Menu'
|
||||
import { FooterGlobal } from '@/globals/Footer'
|
||||
import { DesignGlobal } from '@/globals/Design'
|
||||
import { SiteConfigGlobal } from '@/globals/SiteConfig'
|
||||
import { Magazine } from '@/collections/Magazine'
|
||||
import { DonationForms } from '@/collections/DonationForms'
|
||||
import { Pages } from '@/collections/Pages'
|
||||
|
|
@ -73,10 +75,7 @@ export default buildConfig({
|
|||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
livePreview: {
|
||||
collections: ['blog', 'event', 'group', 'pages', 'parish'],
|
||||
},
|
||||
}
|
||||
},
|
||||
collections: [
|
||||
Parish,
|
||||
|
|
@ -103,6 +102,8 @@ export default buildConfig({
|
|||
globals: [
|
||||
MenuGlobal,
|
||||
FooterGlobal,
|
||||
DesignGlobal,
|
||||
SiteConfigGlobal,
|
||||
],
|
||||
graphQL: {
|
||||
disable: true
|
||||
|
|
@ -140,25 +141,22 @@ export default buildConfig({
|
|||
sharp,
|
||||
plugins: [
|
||||
gcsStorage({
|
||||
enabled: !!process.env.GOOGLE_BUCKET,
|
||||
alwaysInsertFields: true,
|
||||
|
||||
collections: {
|
||||
media: {
|
||||
disablePayloadAccessControl: true,
|
||||
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: {
|
||||
disablePayloadAccessControl: true,
|
||||
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: {},
|
||||
acl: undefined,
|
||||
}),
|
||||
acl: undefined
|
||||
})
|
||||
],
|
||||
})
|
||||
|
|
|
|||
|
|
@ -1,88 +0,0 @@
|
|||
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