Fø værfilteret
This commit is contained in:
parent
3d3470267c
commit
89e2670c11
8 changed files with 200 additions and 133 deletions
BIN
2026-04-18 16.34.15 teeoff.no acc663ad88cd.jpg
Normal file
BIN
2026-04-18 16.34.15 teeoff.no acc663ad88cd.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 58 KiB |
|
|
@ -2874,14 +2874,16 @@ async def quick_edit_facility(facility_id: int, request: QuickEditRequest):
|
||||||
).strip()
|
).strip()
|
||||||
if request.field == 'footnote':
|
if request.field == 'footnote':
|
||||||
normalized_value = str(request.value or '').strip() or None
|
normalized_value = str(request.value or '').strip() or None
|
||||||
|
footnote_updated_at = datetime.utcnow() if normalized_value else None
|
||||||
await conn.execute(
|
await conn.execute(
|
||||||
"""
|
"""
|
||||||
UPDATE facilities
|
UPDATE facilities
|
||||||
SET footnote = $1,
|
SET footnote = $1,
|
||||||
footnote_updated_at = CASE WHEN $1 IS NULL THEN NULL ELSE NOW() END
|
footnote_updated_at = $2
|
||||||
WHERE id = $2
|
WHERE id = $3
|
||||||
""",
|
""",
|
||||||
normalized_value,
|
normalized_value,
|
||||||
|
footnote_updated_at,
|
||||||
facility_id
|
facility_id
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
|
|
|
||||||
|
|
@ -47,12 +47,25 @@ Etablert fontbruk i appen:
|
||||||
- Display: `Oswald`
|
- Display: `Oswald`
|
||||||
- UI/brødtekst: `Mulish`
|
- UI/brødtekst: `Mulish`
|
||||||
|
|
||||||
|
Anbefalt typescale:
|
||||||
|
|
||||||
|
- Hero-eyebrow / små systemetiketter: `0.6875rem` til `0.75rem`, uppercase, høy tracking
|
||||||
|
- Filterlabels og kortbadges: `0.625rem` til `0.75rem`, uppercase, høy tracking
|
||||||
|
- Brødtekst kompakt: `0.9375rem`
|
||||||
|
- Standard brødtekst: `1rem`
|
||||||
|
- Lang lese-/forklaringstekst: `1rem` til `1.0625rem` med romslig linjehøyde
|
||||||
|
- Seksjonsoverskrift mobil: `2rem` til `2.5rem`
|
||||||
|
- Seksjonsoverskrift desktop: `3rem` til `3.75rem`
|
||||||
|
- Hero-hovedbudskap mobil: minst `1.75rem`
|
||||||
|
- Hero-hovedbudskap tablet/desktop: `3rem` til `5rem`
|
||||||
|
|
||||||
Regler:
|
Regler:
|
||||||
|
|
||||||
- Overskrifter skal bruke display-font og tåle høy vekt, store størrelser og tett linjehøyde.
|
- Overskrifter skal bruke display-font og tåle høy vekt, store størrelser og tett linjehøyde.
|
||||||
- Brødtekst, skjemaer, kortmetadata og hjelpetekst skal bruke UI-font.
|
- Brødtekst, skjemaer, kortmetadata og hjelpetekst skal bruke UI-font.
|
||||||
- Eyebrows, små etiketter og filterlabels skal ofte være uppercase med tydelig tracking.
|
- Eyebrows, små etiketter og filterlabels skal ofte være uppercase med tydelig tracking.
|
||||||
- Lange forklaringer skal være lettleste, ikke komprimerte.
|
- Lange forklaringer skal være lettleste, ikke komprimerte.
|
||||||
|
- Mobil skal ikke få "samme typografi, bare mindre". De viktigste budskapene må fortsatt oppleves store og prioriterte på smale skjermer.
|
||||||
|
|
||||||
Tone i typografi:
|
Tone i typografi:
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -379,6 +379,7 @@ export default function FacilitySearch({
|
||||||
const [facilityFilter, setFacilityFilter] = useState("");
|
const [facilityFilter, setFacilityFilter] = useState("");
|
||||||
const [sortMethod, setSortMethod] = useState<SortMethod>("updated");
|
const [sortMethod, setSortMethod] = useState<SortMethod>("updated");
|
||||||
const [userLocation, setUserLocation] = useState<{ lat: number; lng: number } | null>(null);
|
const [userLocation, setUserLocation] = useState<{ lat: number; lng: number } | null>(null);
|
||||||
|
const [isMobileSearchOpen, setIsMobileSearchOpen] = useState(false);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setAreaFilter(fixedAreaFilter);
|
setAreaFilter(fixedAreaFilter);
|
||||||
|
|
@ -588,6 +589,14 @@ export default function FacilitySearch({
|
||||||
filtersCount > 0 ? ` • ${filtersCount} aktive filtre` : ""
|
filtersCount > 0 ? ` • ${filtersCount} aktive filtre` : ""
|
||||||
}`;
|
}`;
|
||||||
const labelClassName = variant === "home" ? "text-white/70" : "text-[#617063]";
|
const labelClassName = variant === "home" ? "text-white/70" : "text-[#617063]";
|
||||||
|
const isCollapsibleHomeSearch = variant === "home";
|
||||||
|
const searchPanelOpen = !isCollapsibleHomeSearch || isMobileSearchOpen;
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (isCollapsibleHomeSearch && filtersCount > 0) {
|
||||||
|
setIsMobileSearchOpen(true);
|
||||||
|
}
|
||||||
|
}, [filtersCount, isCollapsibleHomeSearch]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<section className="mx-auto max-w-[1400px] px-4 py-6 sm:px-6 sm:py-8 lg:px-8 lg:py-10">
|
<section className="mx-auto max-w-[1400px] px-4 py-6 sm:px-6 sm:py-8 lg:px-8 lg:py-10">
|
||||||
|
|
@ -601,11 +610,45 @@ export default function FacilitySearch({
|
||||||
|
|
||||||
<div className={getSearchShellClasses(variant)}>
|
<div className={getSearchShellClasses(variant)}>
|
||||||
<div className="mb-5">
|
<div className="mb-5">
|
||||||
<h2 className="section-title text-3xl sm:text-4xl">
|
{isCollapsibleHomeSearch ? (
|
||||||
{variant === "home" ? "Søk golfbaner" : "Filtrer oversikten"}
|
<>
|
||||||
</h2>
|
<button
|
||||||
|
type="button"
|
||||||
|
onClick={() => setIsMobileSearchOpen((current) => !current)}
|
||||||
|
aria-expanded={searchPanelOpen}
|
||||||
|
className="flex w-full items-center justify-between gap-4 rounded-[1.4rem] border border-white/12 bg-white/6 px-4 py-4 text-left transition hover:bg-white/10 md:hidden"
|
||||||
|
>
|
||||||
|
<span className="section-title text-[1.7rem] text-white">Søk golfbaner</span>
|
||||||
|
<span
|
||||||
|
className={`inline-flex h-11 w-11 shrink-0 items-center justify-center rounded-full border border-white/15 bg-white/10 text-white transition-transform duration-300 ${
|
||||||
|
searchPanelOpen ? "rotate-180" : ""
|
||||||
|
}`}
|
||||||
|
aria-hidden="true"
|
||||||
|
>
|
||||||
|
<svg className="h-5 w-5" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.2">
|
||||||
|
<path d="m6 9 6 6 6-6" strokeLinecap="round" strokeLinejoin="round" />
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
</button>
|
||||||
|
<div className="hidden md:block">
|
||||||
|
<h2 className="section-title text-3xl sm:text-4xl">Søk golfbaner</h2>
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
) : (
|
||||||
|
<h2 className="section-title text-3xl sm:text-4xl">Filtrer oversikten</h2>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div
|
||||||
|
className={`overflow-hidden transition-[max-height,opacity,margin] duration-300 ease-out md:!visible md:!mt-0 md:!max-h-none md:!opacity-100 ${
|
||||||
|
isCollapsibleHomeSearch
|
||||||
|
? searchPanelOpen
|
||||||
|
? "visible mt-0 max-h-[1200px] opacity-100"
|
||||||
|
: "invisible -mt-2 max-h-0 opacity-0 md:visible"
|
||||||
|
: "visible mt-0 max-h-none opacity-100"
|
||||||
|
}`}
|
||||||
|
aria-hidden={isCollapsibleHomeSearch && !searchPanelOpen}
|
||||||
|
>
|
||||||
<div className="grid gap-3 md:grid-cols-2 xl:grid-cols-4">
|
<div className="grid gap-3 md:grid-cols-2 xl:grid-cols-4">
|
||||||
{!fixedAreaFilter && (
|
{!fixedAreaFilter && (
|
||||||
<FieldSelect label="Område" value={areaFilter} onChange={setAreaFilter} labelClassName={labelClassName}>
|
<FieldSelect label="Område" value={areaFilter} onChange={setAreaFilter} labelClassName={labelClassName}>
|
||||||
|
|
@ -624,7 +667,7 @@ export default function FacilitySearch({
|
||||||
<option value="stenger_snart">Stenger snart</option>
|
<option value="stenger_snart">Stenger snart</option>
|
||||||
<option value="aapner_snart">Åpner snart</option>
|
<option value="aapner_snart">Åpner snart</option>
|
||||||
<option value="stengt">Stengt</option>
|
<option value="stengt">Stengt</option>
|
||||||
<option value="under_utvikling">Under utvikling</option>
|
<option value="under-utvikling">Under utvikling</option>
|
||||||
<option value="nedlagt">Nedlagt</option>
|
<option value="nedlagt">Nedlagt</option>
|
||||||
<option value="ukjent">Ukjent status</option>
|
<option value="ukjent">Ukjent status</option>
|
||||||
</FieldSelect>
|
</FieldSelect>
|
||||||
|
|
@ -638,11 +681,10 @@ export default function FacilitySearch({
|
||||||
<option value="under-utvikling">Under utvikling</option>
|
<option value="under-utvikling">Under utvikling</option>
|
||||||
</FieldSelect>
|
</FieldSelect>
|
||||||
|
|
||||||
<FieldSelect label="Ekstra" value={specialFilter} onChange={setSpecialFilter} labelClassName={labelClassName}>
|
<FieldSelect label="NSG / GOLFAMORE" value={specialFilter} onChange={setSpecialFilter} labelClassName={labelClassName}>
|
||||||
<option value="">Ingen tillegg</option>
|
<option value="">Ingen tillegg</option>
|
||||||
<option value="golfamore">Golfamore</option>
|
<option value="golfamore">Golfamore</option>
|
||||||
<option value="nsg">Seniorgolf / NSG</option>
|
<option value="nsg">Seniorgolf / NSG</option>
|
||||||
<option value="simulator">Simulator</option>
|
|
||||||
</FieldSelect>
|
</FieldSelect>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -729,6 +771,7 @@ export default function FacilitySearch({
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
{processedFacilities.length === 0 ? (
|
{processedFacilities.length === 0 ? (
|
||||||
<div className="surface-card mt-6 rounded-[2rem] px-6 py-12 text-center">
|
<div className="surface-card mt-6 rounded-[2rem] px-6 py-12 text-center">
|
||||||
|
|
|
||||||
|
|
@ -189,9 +189,12 @@ export default function HeroSlider({
|
||||||
|
|
||||||
<div className="absolute inset-0 z-10 mx-auto flex max-w-[1400px] flex-col justify-between px-4 py-5 sm:px-6 sm:py-7 lg:px-8 lg:py-10">
|
<div className="absolute inset-0 z-10 mx-auto flex max-w-[1400px] flex-col justify-between px-4 py-5 sm:px-6 sm:py-7 lg:px-8 lg:py-10">
|
||||||
<div className="flex justify-end">
|
<div className="flex justify-end">
|
||||||
<div className="max-w-[14rem] text-right sm:max-w-[22rem] lg:max-w-[48rem]">
|
<div className="w-full max-w-full text-right sm:w-auto sm:max-w-[24rem] lg:max-w-[48rem]">
|
||||||
<h1 className="text-sm font-bold uppercase leading-tight tracking-tight text-white sm:text-3xl lg:text-5xl">
|
<h1 className="text-[1.43rem] font-bold uppercase leading-[0.92] tracking-[-0.01em] text-white sm:text-3xl lg:text-5xl">
|
||||||
<span>TeeOff.no gir deg komplett oversikt over </span>
|
<span className="block sm:inline">TeeOff.no gir deg komplett oversikt</span>
|
||||||
|
<span className="block sm:inline">
|
||||||
|
<span className="sm:hidden"> over </span>
|
||||||
|
<span className="hidden sm:inline"> over </span>
|
||||||
<Link
|
<Link
|
||||||
href="/golfbaner"
|
href="/golfbaner"
|
||||||
className="font-extrabold transition hover:text-white"
|
className="font-extrabold transition hover:text-white"
|
||||||
|
|
@ -201,6 +204,7 @@ export default function HeroSlider({
|
||||||
ALLE
|
ALLE
|
||||||
</Link>
|
</Link>
|
||||||
<span> norske golfbaner!</span>
|
<span> norske golfbaner!</span>
|
||||||
|
</span>
|
||||||
</h1>
|
</h1>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ export const dynamic = "force-dynamic";
|
||||||
|
|
||||||
const articleSlug = "note-to-self-lenker-til-viktige-turneringer-i-golfbox";
|
const articleSlug = "note-to-self-lenker-til-viktige-turneringer-i-golfbox";
|
||||||
const pageTitle = "Turneringer";
|
const pageTitle = "Turneringer";
|
||||||
|
const pageIntro = "Her er alle turneringene vi ikke vet hvordan vi skal finne i Golfbox (og andre steder). God golfsesong!";
|
||||||
function renderBlock(block: CourseVisitBodyBlock, index: number) {
|
function renderBlock(block: CourseVisitBodyBlock, index: number) {
|
||||||
if (block.type !== "richText") {
|
if (block.type !== "richText") {
|
||||||
return null;
|
return null;
|
||||||
|
|
@ -70,7 +71,7 @@ export default async function TournamentsPage() {
|
||||||
type="application/ld+json"
|
type="application/ld+json"
|
||||||
dangerouslySetInnerHTML={{ __html: JSON.stringify(breadcrumbJsonLd) }}
|
dangerouslySetInnerHTML={{ __html: JSON.stringify(breadcrumbJsonLd) }}
|
||||||
/>
|
/>
|
||||||
<InfoPageShell eyebrow="Turneringer" title={article.title} intro={article.excerpt}>
|
<InfoPageShell eyebrow="Turneringer" title={article.title} intro={pageIntro}>
|
||||||
<div className="space-y-6">
|
<div className="space-y-6">
|
||||||
<CourseVisitGallery title={article.title} media={article.mediaGallery.slice(0, 1)} />
|
<CourseVisitGallery title={article.title} media={article.mediaGallery.slice(0, 1)} />
|
||||||
{article.blocks.map((block, index) => renderBlock(block, index))}
|
{article.blocks.map((block, index) => renderBlock(block, index))}
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,13 @@ import type { ReactNode } from "react";
|
||||||
type InfoPageShellProps = {
|
type InfoPageShellProps = {
|
||||||
eyebrow: string;
|
eyebrow: string;
|
||||||
title: string;
|
title: string;
|
||||||
intro: string;
|
intro?: string;
|
||||||
children: ReactNode;
|
children: ReactNode;
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function InfoPageShell({ eyebrow, title, intro, children }: InfoPageShellProps) {
|
export default function InfoPageShell({ eyebrow, title, intro, children }: InfoPageShellProps) {
|
||||||
|
const normalizedIntro = String(intro || "").trim();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<main className="site-shell min-h-screen">
|
<main className="site-shell min-h-screen">
|
||||||
<section className="border-b border-[#112015]/8 bg-[linear-gradient(135deg,rgba(139,195,74,0.16),rgba(255,255,255,0.92))]">
|
<section className="border-b border-[#112015]/8 bg-[linear-gradient(135deg,rgba(139,195,74,0.16),rgba(255,255,255,0.92))]">
|
||||||
|
|
@ -16,7 +18,9 @@ export default function InfoPageShell({ eyebrow, title, intro, children }: InfoP
|
||||||
{eyebrow}
|
{eyebrow}
|
||||||
</p>
|
</p>
|
||||||
<h1 className="text-5xl font-black text-[#112015] sm:text-6xl">{title}</h1>
|
<h1 className="text-5xl font-black text-[#112015] sm:text-6xl">{title}</h1>
|
||||||
<p className="mt-6 text-base leading-7 text-[#4F5F50] sm:text-lg">{intro}</p>
|
{normalizedIntro ? (
|
||||||
|
<p className="mt-6 text-base leading-7 text-[#4F5F50] sm:text-lg">{normalizedIntro}</p>
|
||||||
|
) : null}
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -510,9 +510,9 @@
|
||||||
"link": "https://teeoff.no/meninger/note-to-self-lenker-til-viktige-turneringer-i-golfbox/",
|
"link": "https://teeoff.no/meninger/note-to-self-lenker-til-viktige-turneringer-i-golfbox/",
|
||||||
"title": "Lenker til viktige turneringer i Golfbox",
|
"title": "Lenker til viktige turneringer i Golfbox",
|
||||||
"titleHtml": "Lenker til viktige turneringer i Golfbox",
|
"titleHtml": "Lenker til viktige turneringer i Golfbox",
|
||||||
"excerpt": "Her er alle turneringene vi ikke vet hvordan vi skal finne i Golfbox (og andre steder). God golfsesong! Narvesen Tour Region Midt Region Vestland Region Rogaland Region Sør Region Viken Vest Region Innlandet Region Nord-Norge Srixon Tour Srixon Tour Callaway – Østlandstour Callaway – Østlandstour Garmin Norgescup Garmin Norgescup Nordic Golf League Nordic Golf League…",
|
"excerpt": "",
|
||||||
"excerptHtml": "<p>Her er alle turneringene vi ikke vet hvordan vi skal finne i Golfbox (og andre steder). God golfsesong! Narvesen Tour Region Midt Region Vestland Region Rogaland Region Sør Region Viken Vest Region Innlandet Region Nord-Norge Srixon Tour Srixon Tour Callaway – Østlandstour Callaway – Østlandstour Garmin Norgescup Garmin Norgescup Nordic Golf League Nordic Golf League…</p>\n",
|
"excerptHtml": "",
|
||||||
"contentHtml": "\n\n\t<p>Her er alle turneringene vi ikke vet hvordan vi skal finne i Golfbox (og andre steder).</p>\n<p>God golfsesong!</p>\n\t<h2>Narvesen Tour</h2>\n<ul>\n<li><a href=\"https://www.golfbox.no/app_livescoring/tour/?language=1044#/customer/873/schedule\" target=\"_blank\" rel=\"noopener\">Region Midt</a></li>\n<li><a href=\"https://www.golfbox.no/app_livescoring/tour/?language=1044#/customer/874/schedule\" target=\"_blank\" rel=\"noopener\">Region Vestland</a></li>\n<li><a href=\"https://www.golfbox.no/app_livescoring/tour/?language=1044#/customer/875/schedule\" target=\"_blank\" rel=\"noopener\">Region Rogaland</a></li>\n<li><a href=\"https://www.golfbox.no/livescoring/tour/?language=1044#/customer/876/schedule\" target=\"_blank\" rel=\"noopener\">Region Sør</a></li>\n<li><a href=\"https://www.golfbox.no/app_livescoring/tour/?language=1044#/customer/877/schedule\" target=\"_blank\" rel=\"noopener\">Region Viken Vest</a></li>\n<li><a href=\"https://www.golfbox.no/livescoring/tour/?language=1044#/customer/878/schedule\" target=\"_blank\" rel=\"noopener\">Region Innlandet</a></li>\n<li><a href=\"https://www.golfbox.no/livescoring/tour/?language=1044#/customer/1442/schedule\" target=\"_blank\" rel=\"noopener\">Region Nord-Norge</a></li>\n</ul>\n<h2>Srixon Tour</h2>\n<ul>\n<li><a href=\"https://www.golfbox.no/app_livescoring/tour/default.asp?language=1044#/customer/18/schedule/2022/7671\" target=\"_blank\" rel=\"noopener\">Srixon Tour</a></li>\n</ul>\n<h2>Callaway – Østlandstour</h2>\n<ul>\n<li><a href=\"https://www.golfbox.no/livescoring/tour/default.asp?language=1044#/customer/895/schedule/2022\" target=\"_blank\" rel=\"noopener\">Callaway – Østlandstour</a></li>\n</ul>\n<h2>Garmin Norgescup</h2>\n<ul>\n<li><a href=\"https://www.golfbox.no/app_livescoring/tour/default.asp?language=2057#/customer/18/schedule/2022/1276\" target=\"_blank\" rel=\"noopener\">Garmin Norgescup</a></li>\n</ul>\n<h2>Nordic Golf League</h2>\n<ul>\n<li><a href=\"https://www.golfbox.no/portal/golf_info/gbtourframe.asp?language=1044#/customer/1/schedule\" target=\"_blank\" rel=\"noopener\">Nordic Golf League</a></li>\n</ul>\n<h2>NM</h2>\n<ul>\n<li><a href=\"https://www.golfbox.no/app_livescoring/tour/default.asp?language=2057#/customer/18/schedule/2022/9896\" target=\"_blank\" rel=\"noopener\">NM</a></li>\n</ul>\n<h2>Lag-NM</h2>\n<ul>\n<li><a href=\"https://www.golfbox.no/app_livescoring/tour/default.asp?language=2057#/customer/18/schedule/2022/9897\" target=\"_blank\" rel=\"noopener\">Lag-NM</a></li>\n</ul>\n<h2>Øvrige forbundsturneringer</h2>\n<ul>\n<li><a href=\"https://www.golfbox.no/app_livescoring/tour/default.asp?language=2057#/customer/18/schedule/2022/3697\" target=\"_blank\" rel=\"noopener\">Øvrige forbundsturneringer</a></li>\n</ul>\n\t<h2>Norsk Senior Golf</h2>\n<ul>\n<li><a href=\"https://www.golfbox.dk/livescoring/tour/default.asp?language=1044#/customer/154/schedule\" target=\"_blank\" rel=\"noopener\">Norsk Senior Golf</a></li>\n</ul>\n<h2>Golfhäftet</h2>\n<ul>\n<li><a href=\"https://www.golfhaftet.com/no/konkurranse/trophy/\" target=\"_blank\" rel=\"noopener\">Golfhäftet Trophy</a></li>\n</ul>\n<h2>Norsk MidAm</h2>\n<ul>\n<li><a href=\"https://www.golfbox.no/livescoring/tour/?language=1044#/customer/184/schedule\" target=\"_blank\" rel=\"noopener\">Norsk MidAm</a> (Besøk hjemmesiden til <a href=\"http://www.midam.no/\" target=\"_blank\" rel=\"noopener\">Norsk MidAm her</a>.)</li>\n</ul>\n<h2>Åpne turneringer på Sørlandet</h2>\n<ul>\n<li>Klubbene på Sørlandet har gått sammen om en Facebook-side for de åpne turneringene de arrangerer. Den kan ses ved å klikke <a href=\"https://www.facebook.com/golfturneringpaasorlandet/\" target=\"_blank\" rel=\"noopener\">her</a>.</li>\n</ul>\n<h2>Region Nord-Norge (med NNM)</h2>\n<ul>\n<li><a href=\"https://www.golfbox.no/livescoring/tour/?language=1044#/customer/1442/schedule\" target=\"_blank\" rel=\"noopener\">Nord-Norge</a></li>\n</ul>\n<h2>Tour de Golf</h2>\n<ul>\n<li><a href=\"http://www.tourdegolf.no/om-tour-de-golf/tour-de-golf/\" target=\"_blank\" rel=\"noopener\">Tour de Golf</a></li>\n</ul>\n<h2>International Pairs (tidligere Nordea Pairs)</h2>\n<ul>\n<li><a href=\"https://www.facebook.com/International-Pairs-Norway-2022-112067397687588/\" target=\"_blank\" rel=\"noopener\">International Pairs (Facebook)</a></li>\n</ul>\n<p>—</p>\n<p>(Ytterligere en ting som er fint å få unnagjort før sesongen starter…)</p>\n<p>-Det er forresten bare å gi beskjed dersom det er noen regionale eller nasjonale oversikter som mangler her!</p>\n<h3>Bonus</h3>\n<p>Norges Golfforbund har også klart å gjemme bort nyhetene sine. De kan finnes <a href=\"https://www.golfforbundet.no/ngf-nytt/\" target=\"_blank\" rel=\"noopener\">her</a>.</p>\n\n",
|
"contentHtml": "\n\n\t<p>Her er alle turneringene vi ikke vet hvordan vi skal finne i Golfbox (og andre steder).</p>\n <p>God golfsesong!</p>\n\t <h2>Narvesen Tour</h2>\n <ul>\n <li>\n <a href=\"https://www.golfbox.no/app_livescoring/tour/?language=1044#/customer/873/schedule\" target=\"_blank\" rel=\"noopener\">Region Midt</a>\n </li>\n <li>\n <a href=\"https://www.golfbox.no/app_livescoring/tour/?language=1044#/customer/874/schedule\" target=\"_blank\" rel=\"noopener\">Region Vestland</a>\n </li>\n <li>\n <a href=\"https://www.golfbox.no/app_livescoring/tour/?language=1044#/customer/875/schedule\" target=\"_blank\" rel=\"noopener\">Region Rogaland</a>\n </li>\n <li>\n <a href=\"https://www.golfbox.no/livescoring/tour/?language=1044#/customer/876/schedule\" target=\"_blank\" rel=\"noopener\">Region Sør</a>\n </li>\n <li>\n <a href=\"https://www.golfbox.no/app_livescoring/tour/?language=1044#/customer/877/schedule\" target=\"_blank\" rel=\"noopener\">Region Viken Vest</a>\n </li>\n <li>\n <a href=\"https://www.golfbox.no/livescoring/tour/?language=1044#/customer/878/schedule\" target=\"_blank\" rel=\"noopener\">Region Innlandet</a>\n </li>\n <li>\n <a href=\"https://www.golfbox.no/livescoring/tour/?language=1044#/customer/1442/schedule\" target=\"_blank\" rel=\"noopener\">Region Nord-Norge</a>\n </li>\n </ul>\n <h2>Srixon Tour</h2>\n <ul>\n <li>\n <a href=\"https://www.golfbox.no/app_livescoring/tour/default.asp?language=1044#/customer/18/schedule/2026/7671\" target=\"_blank\" rel=\"noopener\">Srixon Tour</a>\n </li>\n </ul>\n <h2>Callaway – Østlandstour</h2>\n <ul>\n <li>\n <a href=\"https://www.golfbox.no/livescoring/tour/default.asp?language=1044#/customer/895/schedule/2026\" target=\"_blank\" rel=\"noopener\">Callaway – Østlandstour</a>\n </li>\n </ul>\n <h2>Garmin Norgescup</h2>\n <ul>\n <li>\n <a href=\"https://www.golfbox.no/app_livescoring/tour/default.asp?language=2057#/customer/18/schedule/2026/1276\" target=\"_blank\" rel=\"noopener\">Garmin Norgescup</a>\n </li>\n </ul>\n <h2>Nordic Golf League</h2>\n <ul>\n <li>\n <a href=\"https://www.golfbox.no/portal/golf_info/gbtourframe.asp?language=1044#/customer/1/schedule\" target=\"_blank\" rel=\"noopener\">Nordic Golf League</a>\n </li>\n </ul>\n <h2>NM</h2>\n <ul>\n <li>\n <a href=\"https://www.golfbox.no/app_livescoring/tour/default.asp?language=2057#/customer/18/schedule/2026/9896\" target=\"_blank\" rel=\"noopener\">NM</a>\n </li>\n </ul>\n <h2>Lag-NM</h2>\n <ul>\n <li>\n <a href=\"https://www.golfbox.no/app_livescoring/tour/default.asp?language=2057#/customer/18/schedule/2026/9897\" target=\"_blank\" rel=\"noopener\">Lag-NM</a>\n </li>\n </ul>\n <h2>Øvrige forbundsturneringer</h2>\n <ul>\n <li>\n <a href=\"https://www.golfbox.no/app_livescoring/tour/default.asp?language=2057#/customer/18/schedule/2026/3697\" target=\"_blank\" rel=\"noopener\">Øvrige forbundsturneringer</a>\n </li>\n </ul>\n\t <h2>Norsk Senior Golf</h2>\n <ul>\n <li>\n <a href=\"https://www.golfbox.dk/livescoring/tour/default.asp?language=1044#/customer/154/schedule\" target=\"_blank\" rel=\"noopener\">Norsk Senior Golf</a>\n </li>\n </ul>\n <h2>Golfamore</h2>\n <ul>\n <li>\n <a href=\"https://www.golfamore.com/no/konkurranse/trophy/\" target=\"_blank\" rel=\"noopener\">Golfamore Trophy</a>\n </li>\n </ul>\n <h2>Åpne turneringer på Sørlandet</h2>\n <ul>\n <li>Klubbene på Sørlandet har gått sammen om en Facebook-side for de åpne turneringene de arrangerer. Den kan ses ved å klikke <a href=\"https://www.facebook.com/golfturneringpaasorlandet/\" target=\"_blank\" rel=\"noopener\">her</a>. </li>\n </ul>\n <h2>Region Nord-Norge (med NNM)</h2>\n <ul>\n <li>\n <a href=\"https://www.golfbox.no/livescoring/tour/?language=1044#/customer/1442/schedule\" target=\"_blank\" rel=\"noopener\">Nord-Norge</a>\n </li>\n </ul>\n <p>—</p>\n <p>(Ytterligere en ting som er fint å få unnagjort før sesongen starter…)</p>\n <p>-Det er forresten bare å gi beskjed dersom det er noen regionale eller nasjonale oversikter som mangler her!</p>\n <h3>Bonus</h3>\n <p>Norges Golfforbund har også klart å gjemme bort nyhetene sine. De kan finnes <a href=\"https://www.golfforbundet.no/ngf-nytt/\" target=\"_blank\" rel=\"noopener\">her</a>. </p>\n\n",
|
||||||
"publishedAt": "2019-03-17T07:00:27",
|
"publishedAt": "2019-03-17T07:00:27",
|
||||||
"updatedAt": "2024-08-18T10:45:18",
|
"updatedAt": "2024-08-18T10:45:18",
|
||||||
"author": {
|
"author": {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue