209 lines
6.0 KiB
TypeScript
209 lines
6.0 KiB
TypeScript
import type { GlobalConfig } from 'payload'
|
|
import { authenticated } from '../access/authenticated'
|
|
import { revalidatePostSettings } from './hooks/revalidatePostSettings'
|
|
|
|
export const PostSettings: GlobalConfig = {
|
|
slug: 'post-settings',
|
|
label: 'Inläggsinställningar',
|
|
admin: {
|
|
group: 'Globala inställningar',
|
|
description: 'Styr utseende och innehåll för nyhetssidan och enskilda inlägg.',
|
|
},
|
|
access: {
|
|
update: authenticated,
|
|
read: () => true,
|
|
},
|
|
hooks: {
|
|
afterChange: [revalidatePostSettings],
|
|
},
|
|
fields: [
|
|
/* ── Listing page ───────────────────────────────────────────────────── */
|
|
{
|
|
type: 'collapsible',
|
|
label: 'Listningssida (/posts)',
|
|
admin: {
|
|
initCollapsed: false,
|
|
},
|
|
fields: [
|
|
{
|
|
name: 'listingHeading',
|
|
type: 'text',
|
|
label: 'Rubrik',
|
|
localized: true,
|
|
defaultValue: 'Nyheter',
|
|
admin: {
|
|
description: 'H1-rubrik som visas överst på sidan.',
|
|
},
|
|
},
|
|
{
|
|
name: 'listingDescription',
|
|
type: 'textarea',
|
|
label: 'Beskrivning',
|
|
localized: true,
|
|
admin: {
|
|
description:
|
|
'Valfri kort text under rubriken. Används även som meta description om inget annat anges.',
|
|
},
|
|
},
|
|
{
|
|
name: 'listingBackground',
|
|
type: 'select',
|
|
label: 'Bakgrundsfärg',
|
|
defaultValue: 'white',
|
|
options: [
|
|
{ label: 'Vit', value: 'white' },
|
|
{ label: 'Grå', value: 'gray' },
|
|
{ label: 'Navy', value: 'navy' },
|
|
],
|
|
},
|
|
{
|
|
name: 'postsPerPage',
|
|
type: 'number',
|
|
label: 'Antal inlägg per sida',
|
|
defaultValue: 12,
|
|
min: 3,
|
|
max: 48,
|
|
admin: {
|
|
step: 3,
|
|
description: 'Bör vara delbart med 3 för jämnt rutnät.',
|
|
},
|
|
},
|
|
{
|
|
name: 'showCategoriesOnCards',
|
|
type: 'checkbox',
|
|
label: 'Visa kategorier på kort',
|
|
defaultValue: true,
|
|
admin: {
|
|
description: 'Visar kategori-taggar på varje inläggskort i listan.',
|
|
},
|
|
},
|
|
],
|
|
},
|
|
|
|
/* ── Single post page ───────────────────────────────────────────────── */
|
|
{
|
|
type: 'collapsible',
|
|
label: 'Enskilt inlägg (/posts/[slug])',
|
|
admin: {
|
|
initCollapsed: false,
|
|
},
|
|
fields: [
|
|
{
|
|
name: 'backLinkText',
|
|
type: 'text',
|
|
label: 'Tillbaka-länk',
|
|
localized: true,
|
|
defaultValue: '← Tillbaka till nyheter',
|
|
admin: {
|
|
description: 'Text på länken som leder tillbaka till listningssidan.',
|
|
},
|
|
},
|
|
{
|
|
name: 'showCategoriesOnPost',
|
|
type: 'checkbox',
|
|
label: 'Visa kategorier på inlägg',
|
|
defaultValue: true,
|
|
admin: {
|
|
description: 'Visar kategori-taggar under meta-info på enskilda inlägg.',
|
|
},
|
|
},
|
|
{
|
|
name: 'showRelatedPosts',
|
|
type: 'checkbox',
|
|
label: 'Visa relaterade inlägg',
|
|
defaultValue: true,
|
|
admin: {
|
|
description: 'Visar relaterade inlägg längst ner på sidan (om de finns).',
|
|
},
|
|
},
|
|
{
|
|
name: 'relatedPostsHeading',
|
|
type: 'text',
|
|
label: 'Rubrik för relaterade inlägg',
|
|
localized: true,
|
|
defaultValue: 'Relaterade inlägg',
|
|
admin: {
|
|
condition: (data) => Boolean(data?.showRelatedPosts),
|
|
},
|
|
},
|
|
{
|
|
type: 'group',
|
|
name: 'cta',
|
|
label: 'Call to Action',
|
|
fields: [
|
|
{
|
|
name: 'enabled',
|
|
type: 'checkbox',
|
|
label: 'Visa CTA-knapp',
|
|
defaultValue: true,
|
|
},
|
|
{
|
|
name: 'text',
|
|
type: 'text',
|
|
label: 'Knapptext',
|
|
localized: true,
|
|
defaultValue: 'Kontakta oss',
|
|
admin: {
|
|
condition: (_, siblingData) => Boolean(siblingData?.enabled),
|
|
},
|
|
},
|
|
{
|
|
name: 'link',
|
|
type: 'text',
|
|
label: 'Länk',
|
|
defaultValue: '/kontakt',
|
|
admin: {
|
|
condition: (_, siblingData) => Boolean(siblingData?.enabled),
|
|
},
|
|
},
|
|
{
|
|
name: 'variant',
|
|
type: 'select',
|
|
label: 'Stil',
|
|
defaultValue: 'primary',
|
|
options: [
|
|
{ label: 'Primär (gul)', value: 'primary' },
|
|
{ label: 'Kontur', value: 'outline' },
|
|
],
|
|
admin: {
|
|
condition: (_, siblingData) => Boolean(siblingData?.enabled),
|
|
},
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
|
|
/* ── SEO overrides ──────────────────────────────────────────────────── */
|
|
{
|
|
type: 'collapsible',
|
|
label: 'SEO',
|
|
admin: {
|
|
initCollapsed: true,
|
|
},
|
|
fields: [
|
|
{
|
|
name: 'metaTitle',
|
|
type: 'text',
|
|
label: 'Meta-titel',
|
|
localized: true,
|
|
admin: {
|
|
description:
|
|
'Titel för <title>-taggen. Lämna tomt för att använda listningsrubriken + "| Fiber Direkt".',
|
|
},
|
|
},
|
|
{
|
|
name: 'metaDescription',
|
|
type: 'textarea',
|
|
label: 'Meta-beskrivning',
|
|
localized: true,
|
|
admin: {
|
|
description:
|
|
'Lämna tomt för att använda listningsbeskrivningen ovan.',
|
|
},
|
|
},
|
|
],
|
|
},
|
|
],
|
|
}
|