/reiseinformationen/{path segment} and /reiseinformationen/{travel code}
(travel info records combined with live travel data and pickup planning
from MyE&P). All of them answer 404 in production since the static
switch: the export never found these URLs.
Compared with TYPO3 10 (482 travel info pages, 40 travel codes, 20
fallbacks through the base code, unknown code): identical apart from
the content of the 404 page. The page without parameter fails on both,
as intended.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
DateService reads options that callers only sometimes pass (paCode,
filterSettings, date, nonBookableDateUids, showBookingButton). Missing
keys were null on PHP 7.4; in_array() on null returned a falsy value,
so nonBookableDateUids defaults to an empty list. Fixes the event
price table (500).
All 216 distinct AJAX fragment URLs referenced from the TYPO3 10 pages
(date and price tables, event price tables, concept popups, filter
panel) were compared with TYPO3 10 on the same data: identical, apart
from daytripRooms, which fails on both.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Watchlist page (/merkliste/) and its list action, which renders the
hotel/product pairs a visitor stored in sessionStorage. The "remember"
buttons on teasers and detail pages had nowhere to show their list
since the static switch.
Compared with TYPO3 10 (page, empty and invalid input, unknown and
1 to 25 real pairs): identical.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The marker was display-only for the TYPO3 10 backend module, which is
not ported. Locally fileadmin is hardlinked from the TYPO3 10 project,
so writing it also changed that project's copy.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
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]>
- 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]>
- 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]>
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]>
- Uri\ProductViewHelper builds links with the Extbase UriBuilder (no
controller context in v13), also from content elements
- Null-safe reads of missing row fields and plugin settings, with the
values PHP 7.4 produced
- /gruppe/ without a product redirects to the search page again
instead of failing on findByIdentifier(null)
Checked against the TYPO3 10 project: 355 of 359 /gruppe/{product}
pages identical (the rest differ by newer content), all product pages
render, 377 of 396 date tables load (the 19 others fail on TYPO3 10
too: products without a hotel).
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- 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]>
The additional_hostnames edit also replaced a commented example and left
uncommented list items behind, which made the YAML unreadable.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- 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]>
Automated migrations from rector.php and fractor.php (TCA, Extbase
controllers and annotations, ViewHelpers, QueryBuilder, FlexForms,
TypoScript conditions).
Plugins stay list_type plugins: Rector switched them to content
element types, which needs a tt_content migration. That is deferred to
the TYPO3 14 step, where list_type is removed.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Keeps what the product detail pages, the AJAX date/price tables, the
API endpoints (/api/hotel, /api/product, /api/content/*), the chatbot
content-only page type and the MyE&P import need, determined by a class
and template reference closure from those entry points.
Removed: search, watchlist, calendar/contingent AJAX, snow report and
contingent imports, groups swiss, iCal, reseller export, team/EpTeam,
newsletter, CSV feeds, BpnConnect client, backend modules and page
module previews, Tcemain hooks, scheduler tasks, staging and static
search middlewares, forms and their finishers, gridelements and news
templates, and the plugins and content elements not used on product
pages.
The SFTP and local XML import sources are gone; the import reads
MyE&P only (ApiImportSource as ProductImportSource) and runs as
ep:import-dates.
ext_tables.sql stays complete so no table or column is dropped while
the TYPO3 10 project shares the data.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Copied unchanged from public/typo3conf/ext/ of EP/website at
9593cc8631354f8a363d6609de8b7433f669a9a0 (Git-tracked files only).
History stays in the old repository. Only composer.json files are
added so the extensions install as path packages.
Co-Authored-By: Claude Opus 5.5 <[email protected]>