Commit Graph

14 Commits

Author SHA1 Message Date
68ee03ba21 Add error handling to API for better debugging on Plesk
- writeData now returns JSON error if file write fails
- Global error/exception handler returns JSON instead of blank 500

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 12:33:54 +02:00
30d57c80c0 Add user list to admin panel and validated/guest badges on posts
Admin panel: new "Käyttäjät" section showing all registered users with
post count, likes count, email and join date.

Posts: submissions by logged-in users show a green "Vahvistettu" badge,
while guest submissions show a random code (e.g. #L01U51) for tracking.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 12:02:50 +02:00
dcc1205244 Restore contact form and make it functional with email sending
- Replace mailto link with original contact form (name, email, message fields)
- Add contact API endpoint that sends email via mail() and saves to messages.json
- Restore .contact-form CSS styles and translation keys

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 11:28:26 +02:00
5dfbbacf39 Add user registration/login, persistent likes, category hiding, and contact email
- User auth: register (nickname + password + email), login, logout with PHP sessions
- Persistent likes: logged-in users' likes saved to users.json, anonymous via session
- "Tykkäämäni" filter button next to search — filter liked posts, combinable with search
- Hide empty/sparse categories from filter buttons until posts exist
- Replace broken contact form with simple mailto link (info@tykkaa.fi)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 11:08:22 +02:00
f14913cb4b Add 19 example posts to fill empty and sparse subcategories
Covers all previously empty subcategories:
kasityot/muut, puutarha/muut, sisustus/tekstiilit,
kirjat/tietokirjat, hyvinvointi/muut

Adds a 2nd post to thin subcategories:
kasityot/ommelu + askartelu, puutarha/kukat,
sisustus/diy + valaistus, kirjat/romaanit,
hyvinvointi/uni, lemmikit/koirat + kissat

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08 09:51:45 +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
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
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
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
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