From 90f833e17b3a7ec5ad79c12180ac6394bb40897f Mon Sep 17 00:00:00 2001 From: Erol Haagenrud Date: Sun, 19 Apr 2026 13:35:48 +0200 Subject: [PATCH] Etter lenker til golfamore og nsg --- ...-04-18 16.34.15 teeoff.no acc663ad88cd.jpg | Bin 59929 -> 0 bytes ...-04-19 13.30.00 teeoff.no 44994b2e2831.jpg | Bin 0 -> 46759 bytes backend/main.py | 129 +++++++++++++- frontend/src/app/FacilitySearch.tsx | 6 +- .../rediger/[slug]/EditFacilityClient.tsx | 20 ++- frontend/src/app/facilityData.ts | 3 +- .../golfbaner/[slug]/FacilityDetailView.tsx | 58 +++++-- .../golfbaner/[slug]/FacilityFeedbackForm.tsx | 164 ++++++++++++++++++ 8 files changed, 362 insertions(+), 18 deletions(-) delete mode 100644 2026-04-18 16.34.15 teeoff.no acc663ad88cd.jpg create mode 100644 2026-04-19 13.30.00 teeoff.no 44994b2e2831.jpg create mode 100644 frontend/src/app/golfbaner/[slug]/FacilityFeedbackForm.tsx diff --git a/2026-04-18 16.34.15 teeoff.no acc663ad88cd.jpg b/2026-04-18 16.34.15 teeoff.no acc663ad88cd.jpg deleted file mode 100644 index 33a3937521d61d8953e191efdc831a9430bce9b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59929 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⋙<3tM-F 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
  • 8xJF6xiqiJL$S7|J{OwX#lNkU}??9a{MSC-$TXN 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 E0HmE}hX4Qo literal 0 HcmV?d00001 diff --git a/backend/main.py b/backend/main.py index 448f3e8..d2f8504 100644 --- a/backend/main.py +++ b/backend/main.py @@ -476,6 +476,43 @@ async def send_contact_form_email( await asyncio.to_thread(_send) +async def send_facility_feedback_email( + *, + facility_name: str, + facility_slug: str, + sender_name: str, + sender_email: str, + message: str, + ip_hash: str | None, +) -> None: + subject = f"[TeeOff Golfbane] Vedrørende {facility_name}" + facility_url = f"https://teeoff.no/golfbaner/{facility_slug}" if facility_slug else "ukjent" + body = ( + "Ny tilbakemelding fra baneprofil på TeeOff.no\n\n" + f"Golfanlegg: {facility_name}\n" + f"Side: {facility_url}\n" + f"Navn: {sender_name}\n" + f"E-post: {sender_email}\n" + f"IP-hash: {ip_hash or 'ukjent'}\n\n" + "Melding:\n" + f"{message.strip()}\n" + ) + + def _send() -> None: + mail = EmailMessage() + mail["From"] = PUBLIC_FROM_EMAIL + mail["To"] = CONTACT_FORM_TO_EMAIL + mail["Reply-To"] = sender_email + mail["Subject"] = subject + mail.set_content(body) + + with smtplib.SMTP_SSL(SMTP_SERVER, int(SMTP_PORT)) as server: + server.login(SMTP_USER, SMTP_PASS) + server.send_message(mail) + + await asyncio.to_thread(_send) + + async def send_comment_notification_email( *, article_title: str, @@ -628,6 +665,15 @@ class PublicContactFormRequest(BaseModel): message: str website: Optional[str] = "" started_at: Optional[int] = None + + +class PublicFacilityFeedbackRequest(BaseModel): + facility_id: int + name: str + email: str + message: str + website: Optional[str] = "" + started_at: Optional[int] = None # --- FUNKSJONER --- def format_row(row): """ @@ -1345,6 +1391,7 @@ async def ensure_facility_columns(conn): await conn.execute(""" ALTER TABLE facilities ADD COLUMN IF NOT EXISTS footnote_updated_at TIMESTAMPTZ, + ADD COLUMN IF NOT EXISTS golfamore_url TEXT, ADD COLUMN IF NOT EXISTS golfpakker_url TEXT, ADD COLUMN IF NOT EXISTS golfpakker_draft JSONB, ADD COLUMN IF NOT EXISTS golfpakker_updated_at TIMESTAMPTZ @@ -1926,6 +1973,86 @@ async def submit_public_contact_form(request: Request, payload: PublicContactFor } +@app.post("/api/public/facility-feedback") +async def submit_public_facility_feedback(request: Request, payload: PublicFacilityFeedbackRequest): + if not is_contact_form_configured(): + raise HTTPException(status_code=503, detail="Skjemaet er ikke konfigurert ennå.") + + if str(payload.website or "").strip(): + return { + "status": "success", + "detail": "Takk for meldingen. Vi ser på innspillet så snart vi kan.", + } + + name = str(payload.name or "").strip() + email = normalize_public_email(payload.email) + message = str(payload.message or "").strip() + + if len(name) < 2 or len(name) > 120: + raise HTTPException(status_code=400, detail="Oppgi et gyldig navn.") + if not email or "@" not in email or len(email) > 255: + raise HTTPException(status_code=400, detail="Oppgi en gyldig e-postadresse.") + if len(message) < 20 or len(message) > 5000: + raise HTTPException(status_code=400, detail="Meldingen må være mellom 20 og 5000 tegn.") + + now_ts = int(datetime.utcnow().timestamp()) + if payload.started_at and now_ts - int(payload.started_at) < CONTACT_FORM_MIN_FILL_SECONDS: + return { + "status": "success", + "detail": "Takk for meldingen. Vi ser på innspillet så snart vi kan.", + } + + async with app.state.pool.acquire() as conn: + facility = await conn.fetchrow( + "SELECT id, name, slug FROM facilities WHERE id = $1", + payload.facility_id, + ) + + if not facility: + raise HTTPException(status_code=404, detail="Golfanlegget ble ikke funnet.") + + ip_hash = hash_request_ip(request) + tracker: dict[str, list[int]] = getattr(app.state, "contact_submission_tracker", {}) + cutoff = now_ts - CONTACT_FORM_RATE_LIMIT_WINDOW_SECONDS + + for key in list(tracker.keys()): + recent = [ts for ts in tracker.get(key, []) if ts >= cutoff] + if recent: + tracker[key] = recent + else: + tracker.pop(key, None) + + rate_keys = [f"email:{email}"] + if ip_hash: + rate_keys.append(f"ip:{ip_hash}") + + for key in rate_keys: + attempts = tracker.get(key, []) + if len(attempts) >= CONTACT_FORM_RATE_LIMIT_MAX_SUBMISSIONS: + raise HTTPException( + status_code=429, + detail="For mange meldinger på kort tid. Prøv igjen senere.", + ) + + await send_facility_feedback_email( + facility_name=str(facility["name"] or "").strip() or "ukjent golfanlegg", + facility_slug=str(facility["slug"] or "").strip(), + sender_name=name, + sender_email=email, + message=message, + ip_hash=ip_hash, + ) + + for key in rate_keys: + tracker.setdefault(key, []).append(now_ts) + app.state.contact_submission_tracker = tracker + + return { + "status": "success", + "detail": "Takk for meldingen. Vi ser på innspillet så snart vi kan.", + } + + @app.get("/api/public/auth/magic-link/verify") async def verify_magic_link( request: Request, @@ -2650,7 +2777,7 @@ async def update_facility_full(facility_id: int, request: Request): 'email', 'phone', 'website_url', 'golfbox_booking_url', 'golfbox_tournament_url', 'weather_url', 'webcam_url', 'video_url', 'baneguide_url', 'flyfoto_url', 'amenities', 'greenfee', 'golfpakker', 'rabattert_greenfee', - 'nsg_url', 'nsg_data', 'golfamore', 'golfamore_data', + 'nsg_url', 'nsg_data', 'golfamore', 'golfamore_url', 'golfamore_data', 'navn_standard_medlemskap', 'standard_medlemskap', 'standard_medlemskap_kommentarer', 'navn_rimeligste_alternativ', 'rimeligste_alternativ', 'medlemskap_url', 'vtg_beskrivelse', 'vtg_lenke', 'vtg_pris', 'vtg_datoer', diff --git a/frontend/src/app/FacilitySearch.tsx b/frontend/src/app/FacilitySearch.tsx index da184c4..b8fca0d 100755 --- a/frontend/src/app/FacilitySearch.tsx +++ b/frontend/src/app/FacilitySearch.tsx @@ -32,6 +32,7 @@ type Facility = { lat?: number | null; lng?: number | null; golfamore?: boolean | null; + golfamore_url?: string | null; nsg_url?: string | null; vtg_pris?: number | null; vtg_lenke?: string | null; @@ -511,7 +512,10 @@ export default function FacilitySearch({ const holeValue = String(amenities.antall_hull || "").trim(); const primaryStatus = getPrimaryStatus(statuses); const normalizedStatuses = statuses.map((status) => normalizeStatus(status.status)); - const hasGolfamore = facility.golfamore === true || Object.keys(golfamoreData).length > 0; + const hasGolfamore = + facility.golfamore === true || + Boolean(facility.golfamore_url) || + Object.keys(golfamoreData).length > 0; const hasNSG = Boolean(facility.nsg_url) || Object.keys(nsgData).length > 0; const hasSimulator = hasTruthyAmenity(amenities.simulator); const hasDrivingRange = hasTruthyAmenity(amenities.drivingrange); diff --git a/frontend/src/app/admin/rediger/[slug]/EditFacilityClient.tsx b/frontend/src/app/admin/rediger/[slug]/EditFacilityClient.tsx index 16876f5..b459cc9 100644 --- a/frontend/src/app/admin/rediger/[slug]/EditFacilityClient.tsx +++ b/frontend/src/app/admin/rediger/[slug]/EditFacilityClient.tsx @@ -422,7 +422,7 @@ export default function EditFacilityClient({ initialData, allFacilities }: { ini { id: 'generelt', label: 'Generelt' }, { id: 'lokasjon', label: 'Lokasjon & Kontakt' }, { id: 'linker', label: 'Lenker & Media' }, - { id: 'okonomi', label: 'Økonomi & Medlemskap' }, + { id: 'okonomi', label: 'Økonomi, medlemskap og fasiliteter' }, { id: 'baner', label: 'Baner & Scorekort' } ]; @@ -635,8 +635,22 @@ export default function EditFacilityClient({ initialData, allFacilities }: { ini
    handleChange('amenities', v)} /> - handleChange('nsg_data', v)} /> - handleChange('golfamore_data', v)} /> +
    + +
    + + handleChange('nsg_url', e.target.value)} /> +
    + handleChange('nsg_data', v)} /> +
    +
    + +
    + + handleChange('golfamore_url', e.target.value)} /> +
    + handleChange('golfamore_data', v)} /> +
    handleChange('golfpakker_url', e.target.value)} placeholder="Tomt felt bruker ordinær nettside som fallback" /> diff --git a/frontend/src/app/facilityData.ts b/frontend/src/app/facilityData.ts index f53da11..249f7bf 100755 --- a/frontend/src/app/facilityData.ts +++ b/frontend/src/app/facilityData.ts @@ -25,6 +25,7 @@ export type FacilityRecord = { lat?: number | null; lng?: number | null; golfamore?: boolean | null; + golfamore_url?: string | null; nsg_url?: string | null; vtg_pris?: number | null; vtg_lenke?: string | null; @@ -249,7 +250,7 @@ export const enrichFacilities = ( regions, statuses, primaryStatus: getPrimaryStatus(statuses), - hasGolfamore: facility.golfamore === true || Object.keys(golfamoreData).length > 0, + hasGolfamore: facility.golfamore === true || Boolean(facility.golfamore_url) || Object.keys(golfamoreData).length > 0, hasNSG: Boolean(facility.nsg_url) || Object.keys(nsgData).length > 0, hasSimulator: hasTruthyAmenity(amenities.simulator), hasDrivingRange: hasTruthyAmenity(amenities.drivingrange), diff --git a/frontend/src/app/golfbaner/[slug]/FacilityDetailView.tsx b/frontend/src/app/golfbaner/[slug]/FacilityDetailView.tsx index cccb295..9d75962 100644 --- a/frontend/src/app/golfbaner/[slug]/FacilityDetailView.tsx +++ b/frontend/src/app/golfbaner/[slug]/FacilityDetailView.tsx @@ -19,6 +19,7 @@ import { STATUS_MAP, FALLBACK_IMAGE } from "@/config/constants"; import { STATUS_ICON_PATHS, buildMapUrl, getPrimaryStatus, parseJson as parseSharedJson, slugify } from "@/app/facilityData"; import Link from 'next/link'; import CourseDisplay from './CourseDisplay'; +import FacilityFeedbackForm from './FacilityFeedbackForm'; const FacilityDetailLeafletMap = dynamic(() => import("./FacilityDetailLeafletMap"), { ssr: false, @@ -35,13 +36,30 @@ const formatPhoneForUrl = (phone: string) => { return normalized.startsWith("00") ? `+${normalized.slice(2)}` : normalized; }; -const renderValue = (val: string) => { - if (!val) return "Nei"; - const hasLink = val.includes(' { + const raw = String(val || "").trim(); + if (!raw) return fallback; + + const hasInlineHtml = /<\s*a\b/i.test(raw) || /<\s*(strong|b|em|i|br)\b/i.test(raw); + const html = hasInlineHtml + ? sanitizeRichText(raw) + : raw.replace( + /((?:https?:\/\/|mailto:|tel:|www\.)[^\s<]+)/gi, + (match: string) => { + const href = sanitizeHref(match.startsWith("www.") ? `https://${match}` : match); + const escapedHref = escapeHtml(href); + const escapedLabel = escapeHtml(match); + if (isInternalTeeoffHref(href)) { + return `${escapedLabel}`; + } + return `${escapedLabel}`; + } + ); + const hasLink = html.includes(" ); }; @@ -185,7 +203,7 @@ export default function FacilityDetailView({ facility }: { facility: any }) { const coopClubsRaw = parseJson(facility.cooperating_clubs, []); const cooperatingClubs = Array.isArray(coopClubsRaw) ? coopClubsRaw : []; - const hasGolfamore = facility.golfamore === true; + const hasGolfamore = facility.golfamore === true || Boolean(facility.golfamore_url) || Object.keys(golfamoreData).length > 0; const hasNSG = facility.nsg_url || (nsgData && Object.keys(nsgData).length > 0); const hasVtg = Boolean( facility.vtg_pris || @@ -448,11 +466,11 @@ export default function FacilityDetailView({ facility }: { facility: any }) {

    Andre Tilbud

    -
    Drivingrange:{amenities.drivingrange || 'Nei'}
    -
    Nærspill:{amenities.treningsgreen || 'Ja'}
    +
    Drivingrange:{renderValue(amenities.drivingrange, 'Nei')}
    +
    Nærspill:{renderValue(amenities.treningsgreen, 'Ja')}
    Proshop:{renderValue(amenities.proshop)}
    -
    Kølleutleie:{amenities.kolleutleie || 'Ja'}
    -
    Bilutleie:{amenities.bilutleie || 'Nei'}
    +
    Kølleutleie:{renderValue(amenities.kolleutleie, 'Ja')}
    +
    Bilutleie:{renderValue(amenities.bilutleie, 'Nei')}
    Simulator:{renderValue(amenities.simulator)}
    Kafé:{renderValue(amenities.kafe)}
    @@ -460,15 +478,26 @@ export default function FacilityDetailView({ facility }: { facility: any }) {
    Seniorgolf (NSG): {hasNSG && facility.nsg_url - ? Ja (Vis Avtale) - : (hasNSG ? Ja : "Nei") + ? Ja (Vis avtale) + : (hasNSG ? Ja : "Nei") }
    @@ -738,6 +767,11 @@ export default function FacilityDetailView({ facility }: { facility: any }) { ))}
    + +
    {showBackToTop && ( diff --git a/frontend/src/app/golfbaner/[slug]/FacilityFeedbackForm.tsx b/frontend/src/app/golfbaner/[slug]/FacilityFeedbackForm.tsx new file mode 100644 index 0000000..ee6dd70 --- /dev/null +++ b/frontend/src/app/golfbaner/[slug]/FacilityFeedbackForm.tsx @@ -0,0 +1,164 @@ +"use client"; + +import { useState } from "react"; + +type SubmitState = "idle" | "success" | "error"; + +type FacilityFeedbackFormProps = { + facilityId: number; + facilityName: string; +}; + +export default function FacilityFeedbackForm({ + facilityId, + facilityName, +}: FacilityFeedbackFormProps) { + const [name, setName] = useState(""); + const [email, setEmail] = useState(""); + const [message, setMessage] = useState(""); + const [website, setWebsite] = useState(""); + const [submitState, setSubmitState] = useState("idle"); + const [submitMessage, setSubmitMessage] = useState(""); + const [isSubmitting, setIsSubmitting] = useState(false); + const [startedAt] = useState(() => Math.floor(Date.now() / 1000)); + + const resetForm = () => { + setName(""); + setEmail(""); + setMessage(""); + setWebsite(""); + }; + + const handleSubmit = async (event: React.FormEvent) => { + event.preventDefault(); + setIsSubmitting(true); + setSubmitState("idle"); + setSubmitMessage(""); + + try { + const response = await fetch("/api/public/facility-feedback", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + facility_id: facilityId, + name, + email, + message, + website, + started_at: startedAt, + }), + }); + + const payload = await response.json().catch(() => ({})); + if (!response.ok) { + throw new Error(String(payload?.detail || "Noe gikk galt ved sending.")); + } + + setSubmitState("success"); + setSubmitMessage(String(payload?.detail || "Takk for meldingen.")); + resetForm(); + } catch (error) { + setSubmitState("error"); + setSubmitMessage(error instanceof Error ? error.message : "Noe gikk galt ved sending."); + } finally { + setIsSubmitting(false); + } + }; + + return ( +
    +
    +
    +

    + Hold Informasjonen Ryddig +

    +

    + Ser du noe som bør endres? +

    +

    + Bruk gjerne skjemaet her dersom du ser noe må endres, fjernes eller legges til + når det gjelder presentasjonen av {facilityName} på TeeOff. +

    +
    + +
    +
    + + + +
    + +