95 Commits
Author SHA1 Message Date
fromme 11f46d0acf fix: use utf8mb4 for the database connection and new tables 2026-10-20 11:48:10 +02:00
fromme 4279669aa3 fix: add TCA default 0 to relation selects in TCA overrides for MySQL strict mode 2026-10-20 10:16:40 +02:00
fromme aa3d81102e chore: re-activate chatbot in page footer 2026-10-19 09:12:37 +02:00
frommeandClaude Opus 5.5 739a4c49f7 fix: write cachetool temp script to shared typo3temp
PHP workers with a stale realpath cache still resolve the current symlink
to the previous release and returned 404 for the script placed in the new
one.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 18:21:06 +02:00
fromme 88e0488b49 fix: adopt text orientation in page footer on mobile screens 2026-10-18 18:13:39 +02:00
fromme f57671b4d4 fix: single column in footer menu on mobile screens 2026-10-18 18:11:13 +02:00
fromme 313fb151bc fix: add missing customer code pattern 2026-10-13 17:09:06 +02:00
fromme 6350742084 feat: show pickups table below bus section on product detail pages 2026-10-13 16:10:23 +02:00
fromme ef7d81fe99 feat: remove the feature flag for the pickups table on product detail pages 2026-10-13 14:26:22 +02:00
fromme 0477589a7a feat: fall back to the travel code for dates without a customer selection 2026-10-13 14:26:17 +02:00
fromme 38962845d3 chore: cleanup htaccess 2026-10-08 17:34:15 +02:00
fromme c7f43ad02c feat: add a feature flag for the pickups table on product detail pages 2026-10-08 17:22:21 +02:00
fromme 1111c180f8 feat: hide pickups of group travel dates on product detail pages 2026-10-08 17:20:31 +02:00
fromme 69f9b42757 feat: flag group travel dates from the BusPro customer selection 2026-10-08 16:09:43 +02:00
fromme 5bb4b6254a chore: update http client config 2026-10-08 11:40:57 +02:00
fromme 32b70f9b70 feat: require the CMS API key on /api/hotel and /api/product 2026-10-08 11:37:57 +02:00
fromme 7839b97e63 chore: add a PhpStorm HTTP client suite for the chatbot content feed 2026-10-08 09:41:27 +02:00
fromme 416ac5c13d feat: add a kill switch for the chatbot content feed 2026-10-08 09:36:16 +02:00
fromme 992ec19c33 feat: add the key-protected content-only page type for the chatbot feed 2026-10-08 09:36:12 +02:00
fromme 57b09624f4 feat: serve chatbot content records at /api/content/records 2026-10-08 09:36:06 +02:00
fromme 81724c818b feat: serve the chatbot content manifest at /api/content/manifest 2026-10-08 09:36:01 +02:00
fromme b4a9156df6 feat: add the API key check and settings for the chatbot content feed 2026-10-08 09:35:55 +02:00
fromme 41d188a8cc feat: display pickups data on product detail page
addresses #869cgn2fm
2026-10-07 17:01:13 +02:00
fromme c6ab02305b fix: load captcha image in Chrome on initial page load 2026-10-05 12:01:21 +02:00
fromme 306c6b809f feat: show hotel icons on hotel and product detail pages
addresses #86965w970
2026-10-01 14:17:28 +02:00
fromme 4095c4a068 fix: stop malformed captcha requests from poisoning the page cache 2026-09-30 15:24:50 +02:00
fromme b41aeb7a25 fix: carry pickup times as local clock readings, not instants 2026-09-30 14:57:46 +02:00
fromme c2dc88b8ab fix: match API whitespace handling and skip matchcodes of hidden hotels 2026-09-30 14:57:39 +02:00
fromme 27832d6548 fix: stop truncating imported prices to whole euros 2026-09-30 14:57:20 +02:00
fromme b510299032 feat: import products from the MyE&P export API 2026-09-30 14:57:13 +02:00
fromme 1b6f480bee feat: read the BusPro XML export through XmlProductReader 2026-09-30 14:57:07 +02:00
fromme b9851943d0 fix: key imported services by BusPro id and match selection groups by id 2026-09-30 14:56:50 +02:00
fromme d338529afc chore: cleanup .htaccess 2026-09-26 10:05:12 +02:00
fromme e3099bac5f feat: preconnect to the CDN host 2026-09-26 09:53:58 +02:00
fromme 322a59b31c feat: offer brotli for the assets the webhost now serves itself 2026-09-26 09:40:11 +02:00
fromme e96dd0f06d fix: resolve leaflet marker images through webpack 2026-09-26 09:35:58 +02:00
fromme f10d784a5c fix: serve theme assets from the production host, keep images on the CDN 2026-09-25 17:35:07 +02:00
fromme b5d0c484c0 fix: add missing template for date fields 2026-09-25 14:49:39 +02:00
fromme d8bb376424 fix: send form date values as YYYY-MM-DD strings to epteam api 2026-09-25 14:46:44 +02:00
fromme 38d575cbe9 fix: point the application form finisher at epteam 2026-09-23 09:26:12 +02:00
fromme f9e8704046 fix: datepicker obscured by logo in header searchbar 2026-09-23 09:24:25 +02:00
fromme 49547ecda3 fix: reuse the MyEP api connection instead of a client per call 2026-09-22 16:49:44 +02:00
fromme eb096bd8b5 chore: update project dependencies 2026-09-22 15:49:34 +02:00
fromme b3541b21fb feat: modernize fe tooling and drop weight 2026-09-22 15:29:34 +02:00
fromme 93ed5c6962 fix: harden encoded filter settings against malformed and stale input 2026-09-22 14:49:04 +02:00
fromme 942724fdd1 feat: derive room type from occupancy instead of a mapping table 2026-09-22 14:47:04 +02:00
frommeandClaude Opus 5 e52f7dcff8 feat: post application forms to MyEP with label-keyed extra values
Forms built in the backend form editor use generated element identifiers
(text-1, multicheckbox-2, ...) that carry no meaning and cannot be renamed
without breaking the other finishers configured on the form. ApplicationApiFinisher
therefore sends two halves: a small mapped core (firstName, lastName, email, ...)
that a developer configures per form and MyEP can rely on, plus every remaining
submitted value keyed by the element label for a human to read.

Each submission also carries where it came from: the form identifier and its
editor-given name, plus the uid and canonical URL of the page it was submitted
from - the same definition is embedded on several pages, so the page is what
distinguishes them. The URL is generated through the site router in the visitor's
language, like AddReferrerFinisher does it.

Labels come from the form definition rather than TranslationService, so the keys
do not shift with the site language. Values are normalized for JSON: dates to
Y-m-d, uploads to the file name, multi-value elements to a list, empty values
dropped, unsupported objects skipped with a log warning.

Like BpnApiFinisher the request failure is only logged, so a MyEP outage never
costs the application mail.

The endpoint (POST applications) does not exist in MyEP yet; the contract handed
over to that team lives in .ddev/plans/MYEP-APPLICATION-ENDPOINT.md. Until it is
built the finisher is registered but attached to no form.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-22 13:42:07 +02:00
fromme 30e531497d fix: default Geoapify base url to Europe 2026-09-22 10:54:41 +02:00
fromme 2cb37e760a fix: serve svg sprite locally for same-origin restrictions 2026-09-22 10:35:58 +02:00
fromme 3ff3251419 feat: integrate with Geaoapify for maps tiles 2026-09-22 10:25:20 +02:00
fromme abcd39107b fix: serve css/js via cdn 2026-09-22 09:32:15 +02:00
fromme 599e3c7ee2 fix: accept 409 from the MyEP contact form endpoint 2026-09-22 08:29:58 +02:00
fromme 6ff308015a chore: optimize deployer config 2026-09-15 11:38:56 +02:00
fromme 6e0479bf22 fix: reduce timeout values for snowreport import 2026-09-15 11:28:14 +02:00
fromme fb8fddf669 fix: make snowreport import type-safe and drop wget shell-out 2026-09-15 11:14:33 +02:00
fromme f745c7b683 chore: exclude temp dir from repository 2026-09-15 11:08:49 +02:00
fromme 9b3550ec40 feat: migrate to native lazy loading of images 2026-09-12 12:08:09 +02:00
fromme d9943619f6 chore: cleanup 2026-09-12 12:04:52 +02:00
fromme e33b57c9f1 feat: disable chatbot in page footer 2026-09-12 12:04:33 +02:00
fromme dc594efee1 chore: remove obsolete vue component 2026-09-12 11:52:46 +02:00
fromme 432d8da350 chore: update redis config 2026-09-12 11:31:29 +02:00
fromme 5b338eeab6 chore: align redis config with prod 2026-09-12 11:27:08 +02:00
fromme 05ceae5100 fix: simplify generated captchas to improve ux 2026-09-12 11:22:49 +02:00
fromme f005272242 chore: align php version with prod 2026-09-10 13:51:37 +02:00
fromme 7d856d1031 chore: align mariadb version with prod 2026-09-10 13:50:26 +02:00
fromme f9e94231a7 chore: update project dependencies 2026-09-10 12:54:35 +02:00
fromme 0a3e8f59cb fix: repair broken backend search and improve copy traceability 2026-09-10 12:52:55 +02:00
fromme a01d1ba0c5 chore: drop dead description column from product table 2026-09-10 11:50:38 +02:00
fromme 6828e49663 fix: declare importer-written date columns as passthrough 2026-09-10 11:50:38 +02:00
fromme 46001a02ed fix: add TCA default 0 to relation selects for MySQL strict mode 2026-09-10 10:17:10 +02:00
fromme 5e39e39b90 chore: finalize deployer config to new target host 2026-09-10 09:01:22 +02:00
fromme 8dad782603 feat: integrate with redis for improved performance 2026-09-08 18:27:00 +02:00
fromme 0e6a65dfa0 feat: integrate with bunny.net cdn for images 2026-09-05 10:47:00 +02:00
fromme 8f421da599 fix: prevent empty buttons in link panel content element 2026-09-03 15:51:38 +02:00
fromme 39fb85744d feat: replace secondary theme color for snowbreak subsite 2026-09-03 15:43:49 +02:00
fromme 07b42c9334 feat: import buspro xml files from remote sftp source 2026-09-03 10:02:36 +02:00
fromme e27b376285 chore: adjust deployer config for new Hetzner host 2026-09-03 08:18:46 +02:00
fromme 20e56aab1f feat: disable page header and breadcrumb in concept detail plugin 2026-09-01 11:45:07 +02:00
fromme d7219ec341 feat: remove date constraints from price calendar 2026-08-26 13:33:10 +02:00
fromme 0bdc6c873b feat: explicit icon label map for accommodation booking api 2026-08-20 14:43:09 +02:00
fromme b502127e2e fix: correct order of flushing caches during deployment 2026-08-20 12:12:18 +02:00
fromme baf7b5d94a feat: improved caching of api-backed content 2026-08-20 12:11:58 +02:00
fromme 87e6857bff chore: refactor and cleanup template 2026-08-19 17:50:41 +02:00
fromme 47de6027c8 fix: hide groups price calendar on winter products 2026-08-19 17:34:27 +02:00
fromme 3178eee8a0 feat: remove obsolete buttons/links from product detail page 2026-08-19 17:03:29 +02:00
fromme 229c675e4d feat: remove obsolete plugins for hotel groups prices 2026-08-19 14:53:22 +02:00
fromme 22072b4a25 feat: remove obsolete fields from backend form for hotel groups prices 2026-08-17 15:21:01 +02:00
fromme d809d747b7 chore: update frontend tooling 2026-08-17 08:40:41 +02:00
fromme 9fc490fabf fix: use currency value provided by api response for the calendar 2026-08-17 08:40:41 +02:00
fromme 5396ab941b feat: replace button labels 2026-08-17 08:40:41 +02:00
fromme e8154ebba1 fix: remove exstraneous border below tables 2026-08-17 08:40:41 +02:00
fromme b19d09ef64 feat: replace secondary theme color for snowbreak subsite 2026-08-17 08:32:46 +02:00
fromme 8578f7fca4 feat: update theme colors for snowbreak subsite 2026-08-13 11:58:42 +02:00
fromme 843b963195 chore: replace logo files with optimized versions 2026-08-13 11:37:08 +02:00
fromme 61b5e1a2d3 fix: provide required typoscript to content element 2026-08-13 11:12:40 +02:00