Commit Graph
10 Commits
Author SHA1 Message Date
frommeandClaude Opus 5.5 96a9c7217d chore: production-safe settings, development values only in DDEV
settings.php now holds production values (no debug, no devIPmask,
displayErrors off, warnings logged instead of thrown, deprecation log
off, sendmail, trustedHostsPattern for the production domains,
FE.compressionLevel 0 as the CDN compresses). The development values
moved into the DDEV block of additional.php. secrets.example.php gets
the production database connection.

Composer platform: PHP 8.5.12 (the version Hetzner rolls out).
Deployer 8 as dev dependency for the deployment.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 16:22:17 +02:00
frommeandClaude Opus 5.5 72465053cd feat: product search on TYPO3 13
Search page (searchresult plugin), AJAX results and filter panel, the
mobile filter overlay, search links ("Alle anzeigen", menu icon) and
the /reiseauswahl/{name} landing redirects are back. The search bar in
the page header stays out (SearchbarController not ported); on detail
pages the menu icon links to the search page instead of toggling it.

- Extbase requests are immutable: withArgument() instead of
  setArgument()
- StaticSearchParamsMiddleware runs after site resolution and before
  page resolution (the old position is a cycle in v13); FilterService
  copes with the missing TypoScript there, as TYPO3 10 did
- Search and filter forms are sent URL-encoded instead of multipart, so
  production can keep rejecting multipart requests
- ski-wochenenden: websiteTitle from the old sys_template sitetitle

Compared with TYPO3 10 on the same data (249 cases: search pages with
all 41 preset filters, landing redirects, AJAX results and filter
panel, GET and POST): 186 identical, 63 with the same results in a
different order (PHP 8 sorts stably, ties came out in arbitrary order
on PHP 7.4). Processed image names differ by their configuration hash.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 15:47:15 +02:00
frommeandClaude Opus 5.5 18757781bb fix: content feed matches TYPO3 10 for news and sites
- News records: EXT:news is not installed, so the default restrictions
  lack its TCA; deleted, hidden, starttime and endtime are applied by
  hand (TYPO3 13 listed 37 deleted or hidden news in the manifest)
- Site config ski-wochenenden is back: the content feed lists it
  (contentFeedSites); DDEV host skiwe-ep13.ddev.site

Compared with the TYPO3 10 project on the same database (912 cases):
240 identical, 665 differ only because TYPO3 13 leaves out hidden
file references in image lists, 7 only in the order of MM relations
with equal sorting values.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 15:29:32 +02:00
frommeandClaude Opus 5.5 a912e0c614 fix: local MyE&P runs as myep.ddev.site
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 15:22:03 +02:00
frommeandClaude Opus 5.5 bc2a914b67 feat: ep:import-dates command on TYPO3 13
- Registered with #[AsCommand]; Configuration/Commands.php is no
  longer read
- Storage page of the imported records from the extension
  configuration (importStoragePid, 11 as in all site templates):
  frontend TypoScript is not available on the CLI in TYPO3 13
- The reseller and travel info page cache flush is gone with those
  plugins; the import still clears the page cache

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 15:19:13 +02:00
frommeandClaude Opus 5.5 c1b4979583 feat: price calendar and price table for group houses
Ports AjaxCalendarController::priceCalendarAction and priceTableAction
(MyE&P price config and price table), used on the /gruppe/gruppenhaus-*
pages and example trips. Page cache tags and "do not cache" on API
errors go through the frontend.cache.collector and
frontend.cache.instruction request attributes instead of TSFE.

Left out: priceConfig (no caller) and range (daytrip calendar via
bpn-connect, out of scope), so bpn-connect needs no credentials.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 15:11:12 +02:00
frommeandClaude Opus 5.5 294d270bc1 chore: load secrets from config/system/secrets.php
additional.php is maintained in Git now (taken over from DDEV's
generated file): DDEV settings apply inside DDEV only, and
secrets.php (gitignored, template secrets.example.php) is merged in
everywhere, ignoring empty values. The web container reaches the local
MyE&P project as myep-next.ddev.site, as in EP/website.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 15:09:50 +02:00
frommeandClaude Opus 5.5 34f2d55f2c fix: render product detail pages on TYPO3 13
- ObjectManager replaced by GeneralUtility::makeInstance(), the
  services fetched that way are public
- QueryBuilder::add('orderBy') and the remaining execute() calls,
  detailAction returns a response
- PHP 8 warnings for missing array keys (same values as on PHP 7.4)
- Webcam images are external URLs: plain img tag, f:image only takes
  FAL files
- typo3_encore 7 needs the PKG:ssch/typo3-encore: prefix and
  external = 1 so TYPO3's path check does not drop the entry
- CDN image rewriting as a middleware instead of EXT:replacer, which
  is not PHP 8.5 clean; same pattern, only for page responses
- vhs 8 for the ViewHelpers the templates use
- OpenGraph meta tag manager skips the backend
- myEpUrl with trailing slash as in production

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 14:34:10 +02:00
frommeandClaude Opus 5.5 a598339f67 feat: boot TYPO3 13 with site configs and the theme build
- Site configs for the seven live sites from EP/website, Development
  base variants on *-ep13.ddev.site (DDEV additional_hostnames)
- Webpack Encore build moved to the root, output in
  packages/ep_theme/Resources/Public, public path /_assets/<hash>
- Search UI removed from the kept layouts and partials, as the static
  export already does
- Daytrip room selection and the contingent chain removed (contingent
  import is not ported; no daytrip product has current contingents)
- f:uri.action is final in v13: Uri\AjaxViewHelper invokes it
- Remaining QueryBuilder::execute() and array logicalAnd() calls,
  addRootLineFields, TSFE getData, legacy typo3conf/ext template path
- Rector skips the plugin-to-CType rules; plugins stay list_type

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 14:25:01 +02:00
Björn Fromme ae1ae3cb38 chore: initial commit of fresh project 2026-10-21 13:24:40 +02:00