Przymiarka do dokumentów
This commit is contained in:
86
src/content/document/privacy.yaml
Normal file
86
src/content/document/privacy.yaml
Normal file
@@ -0,0 +1,86 @@
|
||||
title: "Polityka Prywatności"
|
||||
visible: true
|
||||
intro: Polityka prywatności, opisuje zasady ochrony Twoich danych osobowych.
|
||||
content: |
|
||||
## §1. Informacje podstawowe.
|
||||
|
||||
1. Administratorem Twoich danych osobowych jest: FUZ Adam Rojek, ul. Świętojańska 46, 07-202 Wyszków, zwanym dalej Administratorem.
|
||||
2. Kontakt z Administratorem jest możliwy za pośrednictwem:
|
||||
- poczty e-mail: bok@fuz.pl,
|
||||
- korespondencyjnie na adres: ul. Świętojańska 46, 07-202 Wyszków.
|
||||
|
||||
## §2. Zasady przetwarzania danych.
|
||||
|
||||
1. Administrator przetwarza dane osobowe z poszanowaniem następujących zasad:
|
||||
1. w oparciu o podstawę prawną i zgodnie z prawem (legalizm);
|
||||
2. rzetelnie i uczciwie (rzetelność);
|
||||
3. w sposób przejrzysty dla osoby, której dane dotyczą (transparentność);
|
||||
4. w konkretnych celach i nie „na zapas” (minimalizacja);
|
||||
5. nie więcej niż potrzeba (adekwatność);
|
||||
6. z dbałością o prawidłowość danych (prawidłowość);
|
||||
7. nie dłużej niż potrzeba (czasowość);
|
||||
8. zapewniając odpowiednie bezpieczeństwo danych (bezpieczeństwo).
|
||||
|
||||
## §3. Cele, podstawy prawne i zakres przetwarzania danych.
|
||||
|
||||
1. Twoje dane będziemy przetwarzać:
|
||||
1. w celach kontaktowych, aby udzielić ci odpowiedzi na Twoją wiadomość przesłaną nam bezpośrednio drogą e-mailową lub za pośrednictwem formularza na podstawie realizacji prawnie uzasadnionego interesu Administratora związanego z koniecznością udzielenia Ci odpowiedzi.
|
||||
2. w celach marketingowych, jeśli wyraziłeś zgodę,
|
||||
3. w celu utworzenia i prowadzenia dla Ciebie konta użytkownika w Panelu Klienta,
|
||||
4. w celu realizacji Twojego zamówienia, na podstawie zawartej umowy sprzedaży (poprzez skuteczne złożenie zamówienia dochodzi do zawarcia umowy, w której my występujemy w roli sprzedawcy, a Ty kupującego),
|
||||
5. w celach statystycznych, analitycznych oraz monitorowania ruchu na Stronie przy użyciu plików cookies, na podstawie realizacji prawnie uzasadnionego interesu Administratora związanego z prawidłowym działaniem i funkcjonowaniem Strony oraz prowadzeniem analizy ruchu na stronie.
|
||||
2. Przetwarzamy Twoje dane w zakresie:
|
||||
1. jeśli prześlesz nam wiadomość drogą mailową lub za pośrednictwem formularza to będziemy przetwarzać dane, które będą w tej wiadomości zawarte. Przekazanie nam danych w ten sposób następuje dobrowolnie. W każdym czasie możesz zwrócić się do nas z prośbą o usunięcie tych danych.
|
||||
2. w przypadku założenia konta użytkownika w Panelu Klienta będziemy przetwarzać dane, które podasz w trakcie podpisywania umowy abonenckiej, a w szczególności: Twoje imię i nazwisko, adres e-mail, nr telefonu, adres zamieszkania. Podanie imienia, nazwiska, adresu e-mail stanowi warunek założenia konta użytkownika.
|
||||
3. pozostałe dane, które Administrator przetwarza to adres IP i inne dane zapisywane w plikach cookies, które służą Administratorowi do analizy korzystania przez Ciebie i innych użytkowników Strony. Przetwarzanie danych w tym zakresie może zostać wstrzymane po złożeniu przez Ciebie sprzeciwu.
|
||||
3. Serwis wykorzystuje dane osobowe w następujących celach:
|
||||
- prowadzenie rozmów typu chat online,
|
||||
- prowadzenie rozmów telefonicznych,
|
||||
- obsługa zapytań przez formularz,
|
||||
- realizacja zamówionych usług,
|
||||
- prezentacja oferty lub informacji,
|
||||
- wstępna zdalna weryfikacja możliwości technicznych świadczenia usługi w danej lokalizacji (podstawą prawną przetwarzania danych jest udzielona zgoda).
|
||||
4. Serwis realizuje funkcje pozyskiwania informacji o użytkownikach i ich zachowaniu w następujący sposób:
|
||||
- poprzez dobrowolnie wprowadzone w formularzach dane, które zostają wprowadzone do systemów Operatora.
|
||||
- poprzez zapisywanie w urządzeniach końcowych plików cookie (tzw. „ciasteczka”).
|
||||
|
||||
## §4. Odbiorcy danych oraz zamiar przekazywania danych do Państwa spoza EOG lub organizacji międzynarodowej.
|
||||
|
||||
1. Odbiorcami Twoich danych osobowych są:
|
||||
- podmiot dostarczający oprogramowanie do analizy ruchu naszej stronie (np. Google Analytics);
|
||||
- podmiot dostarczający oprogramowanie obsługujące konta użytkowników;
|
||||
- pośrednicy płatności internetowych z których usług korzystamy.
|
||||
|
||||
Twoje dane nie są przekazywane do Państwa spoza EOG lub organizacji międzynarodowej.
|
||||
|
||||
## §5. Termin przechowywania danych.
|
||||
|
||||
Jeśli przekazałeś nam swoje dane w wiadomości przesłanej drogą mailową lub za pośrednictwem formularza, to Twoje dane będziemy przetwarzać do momentu złożenia przez Ciebie żądania usunięcia tych danych lub sprzeciwu wobec przetwarzania, ale również w przypadku, w którym uznamy, że zrealizowaliśmy prawnie uzasadniony interes Administratora.
|
||||
|
||||
## §6. Prawa użytkowników.
|
||||
|
||||
1. W związku z przetwarzaniem Twoich danych przysługują Ci następujące prawa:
|
||||
- dostępu do treści swoich danych oraz
|
||||
- prawo ich sprostowania, usunięcia, ograniczenia przetwarzania,
|
||||
- prawo do przenoszenia danych,
|
||||
- prawo wniesienia sprzeciwu,
|
||||
- prawo do cofnięcia zgody na ich przetwarzanie w dowolnym momencie i w dowolnej formie, chyba że przetwarzanie Twoich danych odbywa się w celu wykonywania umowy przez Administratora, w celu wywiązania się przez Administratora z obowiązków prawnych względem instytucji państwowych lub w celu realizacji prawnie uzasadnionych interesów Administratora.
|
||||
|
||||
2. Masz także prawo wniesienia skargi do Prezesa Urzędu Ochrony Danych Osobowych (na adres Urzędu Ochrony Danych Osobowych, ul. Stawki 2, 00-193 Warszawa).
|
||||
3. Więcej informacji w przedmiocie ochrony danych osobowych możesz otrzymać na stronie internetowej Urzędu Ochrony Danych Osobowych: www.uodo.gov.pl.
|
||||
|
||||
## §7. Pliki cookies.
|
||||
|
||||
1. Pliki cookies (tzw. „ciasteczka”) stanowią dane informatyczne, w szczególności pliki tekstowe, które przechowywane są w urządzeniu końcowym, czyli Twoim komputerze, laptopie lub smartfonie, w zależności jakiego urządzenia używasz do oglądania Strony. Cookies zazwyczaj zawierają nazwę strony internetowej, z której pochodzą, czas przechowywania ich na urządzeniu końcowym oraz unikalny numer. Sam możesz zadecydować o formie wykorzystania cookies – ustawienia te są dostępne w każdej przeglądarce internetowej.
|
||||
2. Pliki cookies służą przede wszystkim Twojej wygodzie – dzięki ich użyciu, znacznie skraca się czas ładowania strony podczas kolejnych odwiedzin.
|
||||
3. Cechy plików cookies:
|
||||
-dostosowują zawartość stron internetowych serwisu do Użytkownika. Optymalizują poruszanie Użytkownika na stronie, w szczególności pliki te pozwalają rozpoznać urządzenie, za pomocą, którego wyświetlana jest strona i tak ustawić jej parametry, by nawigacja nie sprawiała problemów i zoptymalizowana pod względem indywidualnych potrzeb Użytkownika.
|
||||
- pozwalają wyświetlić stronę internetową, dostosowaną do Twoich indywidualnych potrzeb;
|
||||
- tworzą statystyki, dzięki którym Administrator wie, które treści cieszą się zainteresowaniem Użytkowników. Pozwala to na ciągłe ulepszanie strony i taką konstrukcję treści, która będzie odpowiadała osobom odwiedzającym stronę.
|
||||
- pozwalają na wielokrotne wykorzystanie opcji logowania przez Użytkownika, co jest dla Ciebie dużo wygodniejsze, gdyż podczas przemieszczania się po stronie i wielokrotnych odwiedzin nie jesteś zmuszony do każdorazowego wpisywania loginu i hasła.
|
||||
4. W ramach Strony stosowane są dwa zasadnicze rodzaje plików cookies: „sesyjne” (session cookies) oraz „stałe” (persistent cookies). Cookies „sesyjne” są plikami tymczasowymi, które przechowywane są w urządzeniu końcowym Użytkownika do czasu wylogowania, opuszczenia strony internetowej lub wyłączenia oprogramowania (przeglądarki internetowej). „Stałe” pliki cookies przechowywane są w urządzeniu końcowym Użytkownika przez czas określony w parametrach plików cookies lub do czasu ich usunięcia przez Użytkownika.
|
||||
5. Użytkownik może w każdym momencie usunąć pliki cookies.
|
||||
6. Wprowadzone przez użytkownika ograniczenia stosowania plików cookies mogą wpłynąć na niektóre funkcjonalności Strony, znacznie utrudniając swobodne korzystanie ze wszystkich jego opcji.
|
||||
7. Pliki cookies są zamieszczane w urządzeniu końcowym Użytkownika i wykorzystywane mogą być również przez współpracujących z operatorem Strony reklamodawców oraz innych partnerów. Użytkownik jednakże w każdej chwili może je usunąć.
|
||||
8. Jeżeli masz wątpliwości, co do ustawień plików cookies, skontaktuj się z operatorem swojej przeglądarki internetowej.
|
||||
9. Jeżeli nie zgadzasz się na wykorzystywanie cookies przez Stronę, opuść ją lub aktywuj odpowiednie ustawienia w swojej przeglądarce internetowej.
|
||||
14
src/content/document/promocja copy 2.yaml
Normal file
14
src/content/document/promocja copy 2.yaml
Normal file
@@ -0,0 +1,14 @@
|
||||
title: "Promocja świąteczna"
|
||||
visible: true
|
||||
intro: Przykładowo gdybysmy dodali promocję do dokumentów
|
||||
content: |
|
||||
Jeśli kupujesz w sklepach internetowych, prawdopodobnie co pewien czas natykasz się na opisy, które nie zachęcają do zakupów.
|
||||
Do najczęściej powtarzanych błędów opisów produktów należą:
|
||||
|
||||
- brak konkretów – klient chce wiedzieć, z czego produkt jest wykonany, jakie ma wymiary czy funkcje, a nie tylko, że jest „wysokiej jakości”;
|
||||
- zbyt techniczny język – warto dostosować ton komunikacji do odbiorcy, unikając skomplikowanych terminów (i w drugą stronę – jeśli sprzedajesz towar skierowany do profesjonalistów, nie trzeba w opisie ze szczegółami wyjaśniać, jak działa czy do czego służy);
|
||||
- brak narracji – storytelling w opisach produktów pomaga zbudować emocjonalne zaangażowanie klienta;
|
||||
|
||||
ignorowanie pytań klientów – warto analizować najczęstsze pytania i uwzględniać odpowiedzi w opisach; jeśli np. często dostajesz zapytania dotyczące tego, czy produkt jest wodoodporny, lepiej napisać o tym od razu w opisie;
|
||||
|
||||
zbyt długie i skomplikowane opisy – należy dbać o przejrzystość treści, używać krótkich akapitów i list wypunktowanych; klient poszukuje konkretów, a nie zawiłych opowieści, które trudno się czyta.
|
||||
14
src/content/document/promocja copy.yaml
Normal file
14
src/content/document/promocja copy.yaml
Normal file
@@ -0,0 +1,14 @@
|
||||
title: "Promocja świąteczna"
|
||||
visible: true
|
||||
intro: Przykładowo gdybysmy dodali promocję do dokumentów
|
||||
content: |
|
||||
Jeśli kupujesz w sklepach internetowych, prawdopodobnie co pewien czas natykasz się na opisy, które nie zachęcają do zakupów.
|
||||
Do najczęściej powtarzanych błędów opisów produktów należą:
|
||||
|
||||
- brak konkretów – klient chce wiedzieć, z czego produkt jest wykonany, jakie ma wymiary czy funkcje, a nie tylko, że jest „wysokiej jakości”;
|
||||
- zbyt techniczny język – warto dostosować ton komunikacji do odbiorcy, unikając skomplikowanych terminów (i w drugą stronę – jeśli sprzedajesz towar skierowany do profesjonalistów, nie trzeba w opisie ze szczegółami wyjaśniać, jak działa czy do czego służy);
|
||||
- brak narracji – storytelling w opisach produktów pomaga zbudować emocjonalne zaangażowanie klienta;
|
||||
|
||||
ignorowanie pytań klientów – warto analizować najczęstsze pytania i uwzględniać odpowiedzi w opisach; jeśli np. często dostajesz zapytania dotyczące tego, czy produkt jest wodoodporny, lepiej napisać o tym od razu w opisie;
|
||||
|
||||
zbyt długie i skomplikowane opisy – należy dbać o przejrzystość treści, używać krótkich akapitów i list wypunktowanych; klient poszukuje konkretów, a nie zawiłych opowieści, które trudno się czyta.
|
||||
14
src/content/document/promocja.yaml
Normal file
14
src/content/document/promocja.yaml
Normal file
@@ -0,0 +1,14 @@
|
||||
title: "Promocja świąteczna"
|
||||
visible: true
|
||||
intro: Przykładowo gdybysmy dodali promocję do dokumentów
|
||||
content: |
|
||||
Jeśli kupujesz w sklepach internetowych, prawdopodobnie co pewien czas natykasz się na opisy, które nie zachęcają do zakupów.
|
||||
Do najczęściej powtarzanych błędów opisów produktów należą:
|
||||
|
||||
- brak konkretów – klient chce wiedzieć, z czego produkt jest wykonany, jakie ma wymiary czy funkcje, a nie tylko, że jest „wysokiej jakości”;
|
||||
- zbyt techniczny język – warto dostosować ton komunikacji do odbiorcy, unikając skomplikowanych terminów (i w drugą stronę – jeśli sprzedajesz towar skierowany do profesjonalistów, nie trzeba w opisie ze szczegółami wyjaśniać, jak działa czy do czego służy);
|
||||
- brak narracji – storytelling w opisach produktów pomaga zbudować emocjonalne zaangażowanie klienta;
|
||||
|
||||
ignorowanie pytań klientów – warto analizować najczęstsze pytania i uwzględniać odpowiedzi w opisach; jeśli np. często dostajesz zapytania dotyczące tego, czy produkt jest wodoodporny, lepiej napisać o tym od razu w opisie;
|
||||
|
||||
zbyt długie i skomplikowane opisy – należy dbać o przejrzystość treści, używać krótkich akapitów i list wypunktowanych; klient poszukuje konkretów, a nie zawiłych opowieści, które trudno się czyta.
|
||||
77
src/lib/documents.ts
Normal file
77
src/lib/documents.ts
Normal file
@@ -0,0 +1,77 @@
|
||||
import fs from "node:fs";
|
||||
import path from "node:path";
|
||||
import yaml from "js-yaml";
|
||||
|
||||
export type DocYaml = {
|
||||
title: string;
|
||||
visible?: boolean;
|
||||
intro?: string;
|
||||
content: string; // markdown
|
||||
};
|
||||
|
||||
export type DocEntry = DocYaml & {
|
||||
slug: string;
|
||||
file: string;
|
||||
};
|
||||
|
||||
const DOCS_DIR = path.join(process.cwd(), "src", "content", "document");
|
||||
|
||||
export function listDocuments(): DocEntry[] {
|
||||
if (!fs.existsSync(DOCS_DIR)) return [];
|
||||
|
||||
const files = fs
|
||||
.readdirSync(DOCS_DIR)
|
||||
.filter((f) => /\.ya?ml$/i.test(f));
|
||||
|
||||
const items: DocEntry[] = [];
|
||||
|
||||
for (const file of files) {
|
||||
const full = path.join(DOCS_DIR, file);
|
||||
const raw = fs.readFileSync(full, "utf8");
|
||||
const data = (yaml.load(raw) ?? {}) as Partial<DocYaml>;
|
||||
|
||||
const slug = file.replace(/\.ya?ml$/i, "");
|
||||
|
||||
// minimalna walidacja, żeby nic nie wybuchało
|
||||
if (!data.title || typeof data.title !== "string") continue;
|
||||
if (!data.content || typeof data.content !== "string") continue;
|
||||
|
||||
items.push({
|
||||
slug,
|
||||
file,
|
||||
title: data.title,
|
||||
visible: data.visible ?? false,
|
||||
intro: data.intro ?? "",
|
||||
content: data.content,
|
||||
});
|
||||
}
|
||||
|
||||
return items;
|
||||
}
|
||||
|
||||
export function getDocumentBySlug(slug: string): DocEntry | null {
|
||||
// akceptuj .yaml i .yml
|
||||
const candidates = [`${slug}.yaml`, `${slug}.yml`];
|
||||
|
||||
for (const file of candidates) {
|
||||
const full = path.join(DOCS_DIR, file);
|
||||
if (!fs.existsSync(full)) continue;
|
||||
|
||||
const raw = fs.readFileSync(full, "utf8");
|
||||
const data = (yaml.load(raw) ?? {}) as Partial<DocYaml>;
|
||||
|
||||
if (!data.title || typeof data.title !== "string") return null;
|
||||
if (!data.content || typeof data.content !== "string") return null;
|
||||
|
||||
return {
|
||||
slug,
|
||||
file,
|
||||
title: data.title,
|
||||
visible: data.visible ?? false,
|
||||
intro: data.intro ?? "",
|
||||
content: data.content,
|
||||
};
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
32
src/pages/dokumenty/[slug].astro
Normal file
32
src/pages/dokumenty/[slug].astro
Normal file
@@ -0,0 +1,32 @@
|
||||
---
|
||||
import DefaultLayout from "../../layouts/DefaultLayout.astro";
|
||||
import Markdown from "../../islands/Markdown.jsx";
|
||||
import { marked } from "marked";
|
||||
import { getDocumentBySlug } from "../../lib/documents";
|
||||
|
||||
const { slug } = Astro.params;
|
||||
|
||||
const doc = slug ? getDocumentBySlug(slug) : null;
|
||||
if (!doc || doc.visible !== true) {
|
||||
return Astro.redirect("/dokumenty", 302);
|
||||
}
|
||||
|
||||
const html = marked.parse(doc.content);
|
||||
---
|
||||
|
||||
<DefaultLayout title={doc.title}>
|
||||
<section class="max-w-4xl mx-auto px-4 py-10">
|
||||
<a href="/dokumenty" class="text-sm opacity-70 hover:opacity-100">
|
||||
← Wróć do dokumentów
|
||||
</a>
|
||||
|
||||
<h1 class="mt-4 text-4xl md:text-5xl font-bold text-[--f-header]">
|
||||
{doc.title}
|
||||
</h1>
|
||||
|
||||
<article class="mt-8 prose max-w-none">
|
||||
<Markdown text={html} />
|
||||
<!-- <div set:html={html} /> -->
|
||||
</article>
|
||||
</section>
|
||||
</DefaultLayout>
|
||||
@@ -1,23 +1,31 @@
|
||||
---
|
||||
import DefaultLayout from "../../layouts/DefaultLayout.astro";
|
||||
import { listDocuments } from "../../lib/documents";
|
||||
|
||||
const seo = {
|
||||
title: "Oferta – FUZ",
|
||||
description: "Oferta – FUZ",
|
||||
canonical: "/oferta",
|
||||
};
|
||||
const documents = listDocuments().filter((d) => d.visible === true);
|
||||
---
|
||||
|
||||
<DefaultLayout seo={seo}>
|
||||
<section class="f-section">
|
||||
<div class="f-section-grid-single md:grid-cols-1">
|
||||
<h1 class="f-section-title">Dokumenty</h1>
|
||||
<div class="fuz-markdown max-w-none">
|
||||
<p>
|
||||
Ta podstrona jest na razie szkieletem. Możemy tu później wczytać
|
||||
treść.
|
||||
</p>
|
||||
</div>
|
||||
<DefaultLayout title="Dokumenty">
|
||||
<section class="max-w-6xl mx-auto px-4 py-10">
|
||||
<h1 class="text-4xl md:text-5xl font-bold text-[--f-header]">Dokumenty</h1>
|
||||
|
||||
<div class="mt-8 grid gap-6 sm:grid-cols-2 lg:grid-cols-3">
|
||||
{documents.map((doc) => (
|
||||
<a
|
||||
href={`/dokumenty/${doc.slug}`}
|
||||
class="group rounded-2xl border border-[--f-border-color]
|
||||
bg-[--f-background] p-5 shadow-sm
|
||||
transition hover:-translate-y-0.5 hover:shadow-md"
|
||||
>
|
||||
<h3 class="text-xl font-bold group-hover:underline">{doc.title}</h3>
|
||||
|
||||
{doc.intro && (
|
||||
<p class="mt-3 text-sm opacity-80 leading-relaxed">{doc.intro}</p>
|
||||
)}
|
||||
|
||||
<span class="mt-4 inline-block text-sm opacity-70">Otwórz →</span>
|
||||
</a>
|
||||
))}
|
||||
</div>
|
||||
</section>
|
||||
</DefaultLayout>
|
||||
|
||||
Reference in New Issue
Block a user