diff --git a/content/pages/about.md b/content/pages/about.md index 400cc87..9837c82 100644 --- a/content/pages/about.md +++ b/content/pages/about.md @@ -1,5 +1,5 @@ --- -title: Om +title: Om Hans Majestet den Gyldne Gris date: Fri, 24 Ja status: publish type: page @@ -7,8 +7,6 @@ oldPermalink: /about postName: about --- -# Hans Majestet den Gyldne Gris - ![](/images/14764_366412090564_785760564_10454493_4835923_n_d4f371.jpg) ## Hans Majestet Grisen ble født 9. april 1859 og er Det Norske Studentersamfundets høyeste beskytter. @@ -37,6 +35,6 @@ Man har siden den gang mer eller mindre vellykket avholdt Grisefest til ære for Grisefesten innledes med en seremoni hvor medlemmer av Studentersamfundet som har utmerket seg spesielt, kan bli beæret av Hans Majestet Grisen og slått til ridder av ordenen Den Gyldne Gris. Innehavere av Ordenen kan stige i gradene ved fortsatt iherdig innsats for Det Norske Studentersamfund eller samfunnet for øvrig, etter deres aktive periode i Studentersamfundet er over. Ridderskapet vil alltid stå til disposisjon for tidens aktive studenter når historisk kunnskap og akademisk profesjon trengs. -Tiden går fortere og tallet syv er vel strengt tatt ikke like hellig i det 21. århundre. Grisefesten avholdes nå hvert 4. år. +Tiden går fortere og tallet syv er vel strengt tatt ikke like hellig i det 21. århundre. Grisefesten avholdes nå hvert 4. år. ​ diff --git a/content/pages/bokuglen/index.md b/content/pages/bokuglen/index.md index 0ec9a66..a8ce746 100644 --- a/content/pages/bokuglen/index.md +++ b/content/pages/bokuglen/index.md @@ -1,5 +1,5 @@ --- -title: Anno 1924 +title: Bokuglen – Anno 1924 date: Mon, 04 Ma status: publish type: page diff --git a/content/pages/den-gyldne-gris-orden/index.md b/content/pages/den-gyldne-gris-orden/index.md index 4bb9042..cd5762d 100644 --- a/content/pages/den-gyldne-gris-orden/index.md +++ b/content/pages/den-gyldne-gris-orden/index.md @@ -1,5 +1,5 @@ --- -title: Anno 1859 +title: Den Gyldne Gris' Orden – Anno 1859 date: Fri, 01 Ma status: publish type: page diff --git a/next.config.ts b/next.config.ts index 9ee7b5e..fa13b77 100644 --- a/next.config.ts +++ b/next.config.ts @@ -33,7 +33,7 @@ const nextConfig: NextConfig = { // Squarespace used /section/YYYY/M/D/slug — redirect to flat /section/slug { source: '/nyheter/:year/:month/:day/:slug', destination: '/nyheter/:slug', permanent: true }, { source: '/historierogmyter/:year/:month/:day/:slug', destination: '/historierogmyter/:slug', permanent: true }, - { source: '/anno-1899/:year/:month/:day/:slug', destination: '/den-hviide-knap/:slug', permanent: true }, + { source: '/anno-1899/:year/:month/:day/:slug', destination: '/den-hviide-knap/nyheter/:slug', permanent: true }, ]; }, }; diff --git a/src/app/about/page.tsx b/src/app/about/page.tsx index 639c7f1..b1a8cbd 100644 --- a/src/app/about/page.tsx +++ b/src/app/about/page.tsx @@ -2,7 +2,7 @@ import { notFound } from 'next/navigation'; import PageLayout from '@/components/PageLayout'; import { getRootPage } from '@/lib/content'; -export const metadata = { title: 'Om' }; +export const metadata = { title: 'Om Hans Majestet den Gyldne Gris' }; export default async function AboutPage() { const page = await getRootPage('about'); diff --git a/src/app/bokuglen/[slug]/page.tsx b/src/app/bokuglen/[slug]/page.tsx index fa2b941..601071b 100644 --- a/src/app/bokuglen/[slug]/page.tsx +++ b/src/app/bokuglen/[slug]/page.tsx @@ -1,6 +1,7 @@ import { notFound } from 'next/navigation'; import PageLayout from '@/components/PageLayout'; import { getSectionPage, getPageSlugs } from '@/lib/content'; +import { BOKUGLEN_LINKS } from '@/lib/nav'; export async function generateStaticParams() { return getPageSlugs('bokuglen').map((slug) => ({ slug })); @@ -16,14 +17,6 @@ export async function generateMetadata({ return { title: page?.title ?? slug }; } -const SECTION_LINKS = [ - { label: 'Anno 1924', href: '/bokuglen' }, - { label: 'Bokuglens historie', href: '/bokuglen/bokuglens-historie' }, - { label: 'Presensliste', href: '/bokuglen/bupresensliste' }, - { label: 'Matrikkel', href: '/bokuglen/bumatrikkel' }, - { label: 'Statutter', href: '/bokuglen/bustatutter' }, -]; - export default async function BokuglenSubPage({ params, }: { @@ -34,7 +27,7 @@ export default async function BokuglenSubPage({ if (!page) notFound(); return ( - +
); diff --git a/src/app/bokuglen/page.tsx b/src/app/bokuglen/page.tsx index b1758c9..b96c427 100644 --- a/src/app/bokuglen/page.tsx +++ b/src/app/bokuglen/page.tsx @@ -1,23 +1,16 @@ import { notFound } from 'next/navigation'; import PageLayout from '@/components/PageLayout'; import { getSectionPage } from '@/lib/content'; +import { BOKUGLEN_LINKS } from '@/lib/nav'; export const metadata = { title: 'Bokuglen' }; -const SECTION_LINKS = [ - { label: 'Bokuglen', href: '/bokuglen' }, - { label: 'Bokuglens historie', href: '/bokuglen/bokuglens-historie' }, - { label: 'Presensliste', href: '/bokuglen/bupresensliste' }, - { label: 'Matrikkel', href: '/bokuglen/bumatrikkel' }, - { label: 'Statutter', href: '/bokuglen/bustatutter' }, -]; - export default async function BokuglenIndex() { const page = await getSectionPage('bokuglen', ''); if (!page) notFound(); return ( - +
); diff --git a/src/app/den-gyldne-gris-orden/[slug]/page.tsx b/src/app/den-gyldne-gris-orden/[slug]/page.tsx index 5e5305f..c6a1bc7 100644 --- a/src/app/den-gyldne-gris-orden/[slug]/page.tsx +++ b/src/app/den-gyldne-gris-orden/[slug]/page.tsx @@ -1,6 +1,7 @@ import { notFound } from 'next/navigation'; import PageLayout from '@/components/PageLayout'; import { getSectionPage, getPageSlugs } from '@/lib/content'; +import { DGG_LINKS } from '@/lib/nav'; export async function generateStaticParams() { return getPageSlugs('den-gyldne-gris-orden').map((slug) => ({ slug })); @@ -16,14 +17,6 @@ export async function generateMetadata({ return { title: page?.title ?? slug }; } -const SECTION_LINKS = [ - { label: 'Anno 1859', href: '/den-gyldne-gris-orden' }, - { label: 'Presensliste', href: '/den-gyldne-gris-orden/presensliste' }, - { label: 'Statutter', href: '/den-gyldne-gris-orden/statutter' }, - { label: 'Embedsverk', href: '/den-gyldne-gris-orden/hoff' }, - { label: 'Matrikkel', href: '/den-gyldne-gris-orden/matrikkel' }, -]; - export default async function DGGSubPage({ params, }: { @@ -34,7 +27,7 @@ export default async function DGGSubPage({ if (!page) notFound(); return ( - +
); diff --git a/src/app/den-gyldne-gris-orden/page.tsx b/src/app/den-gyldne-gris-orden/page.tsx index 584c59f..c4b7854 100644 --- a/src/app/den-gyldne-gris-orden/page.tsx +++ b/src/app/den-gyldne-gris-orden/page.tsx @@ -1,23 +1,16 @@ import { notFound } from 'next/navigation'; import PageLayout from '@/components/PageLayout'; import { getSectionPage } from '@/lib/content'; +import { DGG_LINKS } from '@/lib/nav'; export const metadata = { title: "Den Gyldne Gris' Orden" }; -const SECTION_LINKS = [ - { label: 'Anno 1859', href: '/den-gyldne-gris-orden' }, - { label: 'Presensliste', href: '/den-gyldne-gris-orden/presensliste' }, - { label: 'Statutter', href: '/den-gyldne-gris-orden/statutter' }, - { label: 'Embedsverk', href: '/den-gyldne-gris-orden/hoff' }, - { label: 'Matrikkel', href: '/den-gyldne-gris-orden/matrikkel' }, -]; - export default async function DGGIndex() { const page = await getSectionPage('den-gyldne-gris-orden', ''); if (!page) notFound(); return ( - +
); diff --git a/src/app/den-hviide-knap/[slug]/page.tsx b/src/app/den-hviide-knap/[slug]/page.tsx index a4ac22e..554dbc4 100644 --- a/src/app/den-hviide-knap/[slug]/page.tsx +++ b/src/app/den-hviide-knap/[slug]/page.tsx @@ -1,11 +1,10 @@ import { notFound } from 'next/navigation'; import PageLayout from '@/components/PageLayout'; -import { getPostBySlug, getPostSlugs, getSectionPage, getPageSlugs } from '@/lib/content'; +import { getSectionPage, getPageSlugs } from '@/lib/content'; +import { DHK_LINKS } from '@/lib/nav'; export async function generateStaticParams() { - const postSlugs = getPostSlugs('den-hviide-knap').map((slug) => ({ slug })); - const pageSlugs = getPageSlugs('den-hviide-knap').map((slug) => ({ slug })); - return [...postSlugs, ...pageSlugs]; + return getPageSlugs('den-hviide-knap').map((slug) => ({ slug })); } export async function generateMetadata({ @@ -15,48 +14,21 @@ export async function generateMetadata({ }) { const { slug } = await params; const page = await getSectionPage('den-hviide-knap', slug); - if (page) return { title: page.title }; - const post = await getPostBySlug('den-hviide-knap', slug); - return { title: post?.title ?? slug }; + return { title: page?.title ?? slug }; } -const SECTION_LINKS = [ - { label: 'Knappenytt', href: '/den-hviide-knap' }, - { label: 'Historie', href: '/den-hviide-knap/dhkhistorie' }, - { label: 'Presensliste', href: '/den-hviide-knap/dhkpresensliste' }, - { label: 'Matrikkel', href: '/den-hviide-knap/dhkmatrikkel' }, - { label: 'Statutter', href: '/den-hviide-knap/dhkstatutter' }, - { label: 'Studentteateret 175 år', href: '/den-hviide-knap/studentteateret-175-r' }, -]; - -export default async function DHKSlugPage({ +export default async function DHKSubPage({ params, }: { params: Promise<{ slug: string }>; }) { const { slug } = await params; - const page = await getSectionPage('den-hviide-knap', slug); - if (page) { - return ( - -
- - ); - } + if (!page) notFound(); - const post = await getPostBySlug('den-hviide-knap', slug); - if (post) { - return ( - -
- - ); - } - - notFound(); + return ( + +
+ + ); } diff --git a/src/app/den-hviide-knap/nyheter/[slug]/page.tsx b/src/app/den-hviide-knap/nyheter/[slug]/page.tsx new file mode 100644 index 0000000..2752b8f --- /dev/null +++ b/src/app/den-hviide-knap/nyheter/[slug]/page.tsx @@ -0,0 +1,37 @@ +import { notFound } from 'next/navigation'; +import PageLayout from '@/components/PageLayout'; +import { getPostBySlug, getPostSlugs } from '@/lib/content'; + +export async function generateStaticParams() { + return getPostSlugs('den-hviide-knap').map((slug) => ({ slug })); +} + +export async function generateMetadata({ + params, +}: { + params: Promise<{ slug: string }>; +}) { + const { slug } = await params; + const post = await getPostBySlug('den-hviide-knap', slug); + return { title: post?.title ?? slug }; +} + +export default async function DHKNyheterPost({ + params, +}: { + params: Promise<{ slug: string }>; +}) { + const { slug } = await params; + const post = await getPostBySlug('den-hviide-knap', slug); + if (!post) notFound(); + + return ( + +
+ + ); +} diff --git a/src/app/den-hviide-knap/page.tsx b/src/app/den-hviide-knap/page.tsx index bb11a06..6b01f07 100644 --- a/src/app/den-hviide-knap/page.tsx +++ b/src/app/den-hviide-knap/page.tsx @@ -1,30 +1,23 @@ import Link from 'next/link'; import SectionNav from '@/components/SectionNav'; import { getPostsBySection } from '@/lib/content'; +import { DHK_LINKS } from '@/lib/nav'; export const metadata = { title: 'Den Hviide Knap – Knappenytt' }; -const SECTION_LINKS = [ - { label: 'Knappenytt', href: '/den-hviide-knap' }, - { label: 'Historie', href: '/den-hviide-knap/dhkhistorie' }, - { label: 'Presensliste', href: '/den-hviide-knap/dhkpresensliste' }, - { label: 'Matrikkel', href: '/den-hviide-knap/dhkmatrikkel' }, - { label: 'Statutter', href: '/den-hviide-knap/dhkstatutter' }, - { label: 'Studentteateret 175 år', href: '/den-hviide-knap/studentteateret-175-r' }, -]; - export default function DHKIndex() { const posts = getPostsBySection('den-hviide-knap'); return ( <> - +
-

Den Hviide Knap – Knappenytt

+

Den Hviide Knap – Anno 1899

+

Knappenytt

    {posts.map((post) => (
  • - {post.title} + {post.title}

    {post.date} diff --git a/src/app/grisefestene/[slug]/page.tsx b/src/app/grisefestene/[slug]/page.tsx index 7f3aadd..699d69b 100644 --- a/src/app/grisefestene/[slug]/page.tsx +++ b/src/app/grisefestene/[slug]/page.tsx @@ -1,6 +1,7 @@ import { notFound } from 'next/navigation'; import PageLayout from '@/components/PageLayout'; import { getSectionPage, getPageSlugs } from '@/lib/content'; +import { GRISEFESTENE_LINKS } from '@/lib/nav'; export async function generateStaticParams() { return getPageSlugs('grisefestene').map((slug) => ({ slug })); @@ -16,13 +17,6 @@ export async function generateMetadata({ return { title: page?.title ?? slug }; } -const SECTION_LINKS = [ - { label: 'Grisefestene', href: '/grisefestene' }, - { label: 'Grisefest 2004', href: '/grisefestene/grisefest2004' }, - { label: 'Grisefest 2009', href: '/grisefestene/grisefest-2009' }, - { label: 'Grisefesten 2013', href: '/grisefestene/grisefesten-2013' }, -]; - export default async function GrisefesteneSubPage({ params, }: { @@ -33,7 +27,7 @@ export default async function GrisefesteneSubPage({ if (!page) notFound(); return ( - +

    ); diff --git a/src/app/grisefestene/page.tsx b/src/app/grisefestene/page.tsx index ed5bad4..1d26258 100644 --- a/src/app/grisefestene/page.tsx +++ b/src/app/grisefestene/page.tsx @@ -1,22 +1,16 @@ import { notFound } from 'next/navigation'; import PageLayout from '@/components/PageLayout'; import { getSectionPage } from '@/lib/content'; +import { GRISEFESTENE_LINKS } from '@/lib/nav'; export const metadata = { title: 'Grisefestene' }; -const SECTION_LINKS = [ - { label: 'Grisefestene', href: '/grisefestene' }, - { label: 'Grisefest 2004', href: '/grisefestene/grisefest2004' }, - { label: 'Grisefest 2009', href: '/grisefestene/grisefest-2009' }, - { label: 'Grisefesten 2013', href: '/grisefestene/grisefesten-2013' }, -]; - export default async function GrisefesteneIndex() { const page = await getSectionPage('grisefestene', ''); if (!page) notFound(); return ( - +
    ); diff --git a/src/components/Nav.tsx b/src/components/Nav.tsx index ad3c08b..f192f12 100644 --- a/src/components/Nav.tsx +++ b/src/components/Nav.tsx @@ -1,85 +1,17 @@ -import Link from "next/link"; - -type NavItem = - | { label: string; href: string } - | { - label: string; - href?: string; - children: { label: string; href: string }[]; - }; - -const NAV: NavItem[] = [ - { label: "Nyheter", href: "/" }, - { label: "Historier og myter", href: "/historierogmyter" }, - { label: "Om", href: "/about" }, - { label: "Grisefestene", href: "/grisefestene" }, - { - label: "Den Gyldne Gris' Orden", - href: "/den-gyldne-gris-orden", - children: [ - { label: "Anno 1859", href: "/den-gyldne-gris-orden" }, - { label: "Presensliste", href: "/den-gyldne-gris-orden/presensliste" }, - { label: "Statutter", href: "/den-gyldne-gris-orden/statutter" }, - { label: "Embedsverk", href: "/den-gyldne-gris-orden/hoff" }, - { label: "Matrikkel", href: "/den-gyldne-gris-orden/matrikkel" }, - ], - }, - { - label: "Den Hviide Knap", - href: "/den-hviide-knap", - children: [ - { label: "Knappenytt", href: "/den-hviide-knap" }, - { label: "Historie", href: "/den-hviide-knap/dhkhistorie" }, - { label: "Presensliste", href: "/den-hviide-knap/dhkpresensliste" }, - { label: "Matrikkel", href: "/den-hviide-knap/dhkmatrikkel" }, - { label: "Statutter", href: "/den-hviide-knap/dhkstatutter" }, - ], - }, - { - label: "Bokuglen", - href: "/bokuglen", - children: [ - { label: "Bokuglen", href: "/bokuglen" }, - { label: "Bokuglens historie", href: "/bokuglen/bokuglens-historie" }, - { label: "Presensliste", href: "/bokuglen/bupresensliste" }, - { label: "Matrikkel", href: "/bokuglen/bumatrikkel" }, - { label: "Statutter", href: "/bokuglen/bustatutter" }, - ], - }, - { - label: "Det Norske Studentersamfund", - href: "https://studentersamfundet.no", - children: [ - { label: "Chateau Neuf", href: "/chateau-neuf" }, - { - label: "Det Norske Studentersamfund", - href: "https://studentersamfundet.no", - }, - ], - }, -]; +import Link from 'next/link'; +import { NAV } from '@/lib/nav'; export default function Nav() { return ( diff --git a/src/lib/nav.ts b/src/lib/nav.ts new file mode 100644 index 0000000..b5bcb47 --- /dev/null +++ b/src/lib/nav.ts @@ -0,0 +1,67 @@ +export type NavLink = { label: string; href: string }; + +export type NavItem = + | NavLink + | { label: string; href?: string; children: NavLink[] }; + +export const DGG_LINKS: NavLink[] = [ + { label: 'Anno 1859', href: '/den-gyldne-gris-orden' }, + { label: 'Presensliste', href: '/den-gyldne-gris-orden/presensliste' }, + { label: 'Statutter', href: '/den-gyldne-gris-orden/statutter' }, + { label: 'Embedsverk', href: '/den-gyldne-gris-orden/hoff' }, + { label: 'Matrikkel', href: '/den-gyldne-gris-orden/matrikkel' }, +]; + +export const DHK_LINKS: NavLink[] = [ + { label: 'Knappenytt', href: '/den-hviide-knap' }, + { label: 'Historie', href: '/den-hviide-knap/dhkhistorie' }, + { label: 'Presensliste', href: '/den-hviide-knap/dhkpresensliste' }, + { label: 'Matrikkel', href: '/den-hviide-knap/dhkmatrikkel' }, + { label: 'Statutter', href: '/den-hviide-knap/dhkstatutter' }, + { label: 'Studentteateret 175 år', href: '/den-hviide-knap/studentteateret-175-r' }, +]; + +export const GRISEFESTENE_LINKS: NavLink[] = [ + { label: 'Grisefestene', href: '/grisefestene' }, + { label: 'Grisefest 2004', href: '/grisefestene/grisefest2004' }, + { label: 'Grisefest 2009', href: '/grisefestene/grisefest-2009' }, + { label: 'Grisefesten 2013', href: '/grisefestene/grisefesten-2013' }, +]; + +export const BOKUGLEN_LINKS: NavLink[] = [ + { label: 'Bokuglen', href: '/bokuglen' }, + { label: 'Bokuglens historie', href: '/bokuglen/bokuglens-historie' }, + { label: 'Presensliste', href: '/bokuglen/bupresensliste' }, + { label: 'Matrikkel', href: '/bokuglen/bumatrikkel' }, + { label: 'Statutter', href: '/bokuglen/bustatutter' }, +]; + +export const NAV: NavItem[] = [ + { label: 'Nyheter', href: '/' }, + { label: 'Historier og myter', href: '/historierogmyter' }, + { label: 'Om', href: '/about' }, + { label: 'Grisefestene', href: '/grisefestene' }, + { + label: "Den Gyldne Gris' Orden", + href: '/den-gyldne-gris-orden', + children: DGG_LINKS, + }, + { + label: 'Den Hviide Knap', + href: '/den-hviide-knap', + children: DHK_LINKS, + }, + { + label: 'Bokuglen', + href: '/bokuglen', + children: BOKUGLEN_LINKS, + }, + { + label: 'Det Norske Studentersamfund', + href: 'https://studentersamfundet.no', + children: [ + { label: 'Chateau Neuf', href: '/chateau-neuf' }, + { label: 'Det Norske Studentersamfund', href: 'https://studentersamfundet.no' }, + ], + }, +];