Commit Graph

26 Commits

Author SHA1 Message Date
af55297452 Add image lightbox — click gallery image to view full-screen
Clicking any image in a post modal opens it full-screen with a dark
overlay. Close by clicking outside, the ✕ button, or pressing Escape.
Added zoom-in cursor and hover opacity to signal clickability.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08 09:36:40 +02:00
7bb5924cf6 Remove recipe/post toggle — auto-detect type from category selection
When user selects Reseptit category, recipe fields (time, servings,
ingredients, steps) appear automatically. All other categories show
the post body field instead. Removed the manual toggle buttons and
cleaned up related CSS.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08 09:33:22 +02:00
844e5c338b Restructure categories: merge knitting→käsityöt, kasvit→puutarha, remove matkustus & tips categories
- All 9 neulominen posts moved from 'knitting' to 'kasityot' with subcategory ['neulominen']
- crochet_basket moved to 'kasityot' with subcategory ['virkkaus']
- 3 kasvit posts moved to 'puutarha' with matching subcategories
- 3 matkustus posts (travel_lapland, travel_tallinn, travel_saaristo) removed
- 5 tips posts moved to 'hyvinvointi' (mieli/arki) or 'puutarha' (tip_balcony_garden)
- Added POST_CATEGORY_MAP constant for automatic live-server migration
- getOrInitPosts() now auto-migrates old category references and drops matkustus posts
- Updated code section comments to reflect new structure

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08 09:27:44 +02:00
6be4414da5 Lisää 8 uutta kategoriaa ja esimerkkipostaukset (2-4 per kategoria)
Kategoriat: Käsityöt ✂️, Puutarha 🌱, Sisustus 🏠, Kirjat 📚,
            Hyvinvointi 🧘, Lemmikit 🐾, Kasvit 🪴, Matkustus ✈️
- Jokaisessa 2–4 esimerkkipostausta, yhteensä 26 uutta
- Tekijänimet vähennetty 5:een: Maija-Liisa, Tiina K., Riitta H., Sinikka, Pekka
- Pekka vain resepteissä (bolognese, lihapullat, karjalanpaisti)
- getOrInitCategories() lisää uudet kategoriat automaattisesti live-serverille

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08 09:11:49 +02:00
8c7396304b Poistetaan hero-osio: mennään suoraan headerista julkaisuihin
- Poistettu hero-section HTML:stä
- Poistettu hero-tyylit CSS:stä
- Headerin ja controlsin padding tiivistetty
- CSS cache-busting v3

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08 08:42:00 +02:00
1e2d93e6e6 CSS cache-busting: style.css?v=2
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08 08:35:53 +02:00
22a03c10a0 Alikategoria-parannukset: monivalinta, Muut-kategoria, emoji pois administa
- api.php: lisätään 'Muut'-alikategoria Resepteihin, Neulomiseen ja Vinkkeihin
- api.php: getOrInitCategories() lisää puuttuvat alikategoriat automaattisesti
- admin.html: poistetaan emoji-kenttä (emoji tulee kategoriasta automaattisesti)
- admin.html: alikategoriat checkboxeina → voi valita useamman samanaikaisesti
- script.js: subcategory tallennetaan aina taulukkona
- script.js: filterPosts tukee pilkulla eroteltuja alikategorioita (postSubs.includes)
- script.js: renderCards kirjoittaa subcategory-arrayn pilkulla eroteltuna data-attribuuttiin

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08 08:30:10 +02:00
993a137508 Korjaa alikategoria-ongelmat
- api.php: getOrInitCategories() päivittää automaattisesti subcategories-kentän
  olemassaolevaan categories.json-tiedostoon ilman manuaalista seedausta
- index.html: alikategoria-valitsin julkaisulomakkeeseen (näkyy kun kategorialla on alikategoriat)
- script.js: subcategory tallennetaan uuteen julkaisuun
- script.js: filterPosts null-turva + hakukenttä etsii myös alikategoria-id:llä
- script.js: updateSubcategoryPicker() päivittää alikategoriat kategorian vaihtuessa

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08 08:24:24 +02:00
88e17d2b92 Hero-teksti takaisin vanhaan tyyliin, lisätty 'Jaa ja löydä' alkuun
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08 08:18:00 +02:00
ebffa64111 Tekstit yhteisöhenkisiksi: ei enää oma blogi vaan avoin yhteisö
- Tagline: "Jaa asioita joista tykkäät"
- Hero: kuka tahansa voi jakaa
- About: avoin yhteisö kaikille
- Footer: "Avoin yhteisö kaikille"
- About-emoji 👩‍🍳🤝

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08 08:15:23 +02:00
f41eaf72cb Logo 2x isommaksi: font-size 20px → 40px
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08 08:12:28 +02:00
60065ac9ef Minecraft-pikselilogo: Press Start 2P Google Font
Vaihdetaan SVG-img-lähestymistapa HTML+CSS-lähestymistapaan, jolloin
fontti latautuu luotettavasti. SVG:nä ladattu kuva ei voi käyttää
sivun ulkoisia fontteja.

- index.html: lisätty Press Start 2P Google Fonts link;
  logo-h1 käyttää pixel-logo-luokkaa (♥tykkää.fi)
- style.css: .pixel-logo fontti+koko+varjo, .logo-heart oranssi,
  .logo-fi cream-väri + pienempi koko

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08 01:54:11 +02:00
416db62e5c Logo, emoji pois lomakkeesta, alikategoria-bugifi
- logo.svg: SVG-tekstilogo (sydän + tykkää kursiivillaa + .fi cream)
  korvaa emoji+h1-yhdistelmän; .logo-svg CSS-luokka headeriin
- index.html: emoji-kenttä poistettu julkaisulomakkeesta;
  kategoria-select ilman erillistä paria
- script.js: emoji haetaan automaattisesti kategoriasta, ei lomakkeen
  kentästä; sub-emoji poistettu reset-listalta
- api.php: seed_categories-toiminto päivittää categories.json:n
  uusilla subcategories-tiedoilla
- admin.html: seedPosts() kutsuu myös seed_categories ensin →
  alikategoriat toimivat nyt heti "Lataa esimerkkisisältö" -napin jälkeen

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08 01:52:09 +02:00
f98aa72ca0 Alikategoriat: välilehdet kategorian alla
- defaultCategories(): subcategories-kenttä jokaisella kategorialla
  (reseptit: kasvis/vegaaniset/jälkiruuat, neulominen: aloittelijoille/
  vaatteet/kodin tekstiilit)
- 30 julkaisua merkitty subcategory-kentällä
- script.js: currentSubFilter-tila, setSubFilter(), renderSubFilters()
  renderöi alafiltterit kun kategoria on valittu; filterPosts() ottaa
  molemmat filtterit huomioon; cards saavat data-subcategory-attribuutin
- index.html: #subCategoryFilters-div kategoriafilttereiden alle
- style.css: .sub-filter-btn -tyyli (pienempi, tummanharmaa aktiiviasennossa)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08 01:43:50 +02:00
5fa93a49ad Kopioi ostoslista -nappi + tykkäysten localStorage-muisti
- Ainesluettelon vieressä 'Kopioi ostoslista' -nappi: kopioi
  julkaisun nimen ja ainesosat ostoslistamuodossa leikepöydälle
- Tykkäykset tallennetaan localStorage:en — muistetaan vaikka
  PHP-sessio vanhenisi (selain muistaa oman tykkäyshistoriansa)
- Latauksessa yhdistetään server-sessio ja localStorage

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08 01:39:36 +02:00
4c5b275225 30 julkaisua oletussisältönä, seed-toiminto adminiin
- 17 reseptiä (letut, bolognese, keksit, kasviskeitto, banaanileipä,
  lohikeitto, korvapuustit, mansikkarahka, porkkana-inkiväärikeitto,
  pizza, mustikkapuuro, kanarisotto, mustikkapiirakka, avokadopasta,
  lihapullat, kukkakaalikeitto, karjalanpaisti)
- 9 neulomis-/virkkausohjetta
- 4 vinkkijulkaisua
- "Admin"-tekijät vaihdettu suomalaisiin nimimerkkeihin
- seed_posts-API-toiminto kirjoittaa oletussisällön posts.json:iin
- "Lataa esimerkkisisältö" -nappi admin-headerin oikeaan yläkulmaan

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08 01:37:31 +02:00
bd01662032 Vaihda mime_content_type → getimagesize, lisää testiendpoint
mime_content_type() vaatii fileinfo-laajennuksen joka ei ehkä ole
käytössä Pleskissä → PHP kaatuu fatal erroriin → HTTP 500 tyhjä body.
getimagesize() on osa GD-kirjastoa, lähes aina saatavilla.

Testiendpoint: upload.php?test kertoo onko PHP käynnissä ja mitkä
laajennukset on saatavilla.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08 01:22:44 +02:00
bb9541d526 Parempi virheenkäsittely uploadissa: näytä palvelimen tarkka vastaus
- upload.php: ob_start()+error_reporting(0) estää PHP-varoitusten
  sekoittumisen JSON-vastaukseen; ob_clean() ennen jokaista echoa
- script.js + admin.html: lue vastaus ensin tekstinä, yritä sitten
  JSON-parsinta ja näytä tarkka virheviesti (HTTP-koodi + raakavastaus)
  jos JSON ei onnistu

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08 01:20:20 +02:00
a1a7a2167f Näytä tarkka virheviesti uploadissa 2026-03-08 01:15:51 +02:00
9236aee4a2 Paremmat virheilmoitukset uploadissa, korjaa 8MB→20MB teksti 2026-03-08 01:13:02 +02:00
9872093fb7 Nosta uploadraja 8 MB → 20 MB 2026-03-08 01:09:07 +02:00
d380884248 Automaattinen kuvanpienennys ja paremmat virheilmoitukset uploadissa 2026-03-08 01:06:45 +02:00
2def3d2c3e Lisää hakukenttä admin-julkaisulistaan 2026-03-08 01:02:33 +02:00
Jukka Lampikoski
1cb1c9c6ad Poista englanninkieliset tekstit admin-paneelista 2026-03-08 01:00:28 +02:00
Jukka Lampikoski
ae343212da Vaihda admin-salasana 2026-03-08 00:57:31 +02:00
Jukka Lampikoski
4248e69ab7 Initial commit: tykkää.fi sivusto
- Julkaisualusta resepteille, neuloville, vinkeille
- PHP-backend (api.php) palvelinpuolen datalle
- Admin-paneeli salasanasuojauksella
- Kuvaupload (upload.php)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08 00:20:17 +02:00