.. include:: ../Includes.txt .. _changelog-5-0-0: ===== 5.0.0 ===== What changed for installations upgrading from 4.2.0. Commits that do not affect an upgrade — fixes to features introduced within 5.0.0, tests, CI — are not listed; the git history has them. .. contents:: On this page :local: :depth: 1 Breaking -------- * **Add TYPO3 v14 Support** (``6381907``) TYPO3 v12 and PHP 8.1 are no longer supported; the extension requires TYPO3 13.4 or 14 and PHP 8.2 or later. :file:`ext_emconf.php` is gone, install via Composer, see :ref:`installation`. * **[FEATURE] Import Events into ext:events tables** (``b2be349``) :composer:`werkraummedia/events` is a new required dependency. Events are imported into its tables, so it has to be installed even where no events are imported. * **[FEATURE] Parser based importer** (``c8c2c5f``) The import was rewritten and writes through the DataHandler. The previous extension points — :php:`MapsToType` entities, :php:`Typo3Converter` converters and their compiler passes — are removed; custom import code has to be rebuilt as described in :ref:`developers-import`. * **[TASK] Refactor code structure for importer** (``9ab6e84``) All import classes moved from :php:`WerkraumMedia\ThueCat\Domain\Import` to :php:`WerkraumMedia\ThueCat\Import`, including the :php:`UrlProvider` interface. A custom URL provider has to follow the new namespace, see :ref:`developers-import-sources`. * **[FEATURE] Import Images via Import into FAL and relate to objects** (``6040613``) Images are downloaded into FAL, into a folder the import configuration names. Existing import configurations have no folder and fail until one is set, unless run with :shell:`--no_media`, see :ref:`import-configuration`. * **[TASK] Remove deprecated json-blob fields** (``68312dc``) The columns ``media``, ``address``, :sql:`opening_hours` and :sql:`special_opening_hours` are dropped, with the models reading them: :php:`Base::getMedia()`, :php:`Place::getAddress()` and :php:`Place::get(Merged)(Special)OpeningHours()`. Templates use :ref:`the FAL fields `, :php:`getAddressInline()`/:php:`getFirstAddress()` and :ref:`the new opening hours accessors `; run the import once after the update to fill them. * **[BUGFIX] Properly read translated strings for address** (``6e05604``) Addresses are records of their own (:sql:`tx_thuecat_address`) instead of a value object. The misspelled :php:`Address::getLatitute()` is now :php:`getLatitude()`. * **[FEATURE] Store relations for schema:containedInPlace** (``f47fa76``) ``town`` holds several towns, so :php:`TouristAttraction::getTown()` is replaced by :php:`getTowns()`; templates reading :fluid:`{attraction.town.title}` have to iterate :fluid:`{attraction.towns}`. Containing organisations and places get fields of their own, see :ref:`import-contained-in-place`. * **[TASK] Remove custom page type** (``51704ca``) The page type ``950``, the :php:`ResolveEntities` data processor and the static template "ThüCAT - Page Types" are removed. Change such pages to standard pages before updating and render the data with plugins, see :ref:`frontend-output`. * **[TASK] Remove unused thuecat:configuration backend module** (``aa111e9``) The backend module listing import configurations is removed, and with it the TypoScript setting :typoscript:`module.tx_thuecat.settings.newRecordPid`. Import configurations are created and edited in the Records module. * **[BUGFIX] Scope import objects per site** (``23aae21``) A record is recognised only within the site that imports it, instead of anywhere in the installation. Where two sites import the same upstream object, the first run after the update creates the record the second site was missing, see :ref:`developers-import-records`. Important --------- * **[TASK] Change maintenance** (``8ceae43``) The extension is now maintained by Anja Leichsenring. * **Migrate CI from GitHub to Forgejo (main)** (``a09c479``) Development moved from GitHub to https://forgejo.werkraum-media.de/typo3/thuecat. * **[TASK] Remove deprecations for v14 (#138)** (``c88ad9d``) The upgrade wizard that migrated backend user permissions to the ThüCAT module group is removed. Run it before updating if it is still pending. * **[TASK] Remove requirement for fluid-styled-content** (``afc36d7``) The extension no longer requires :composer:`typo3/cms-fluid-styled-content`. Require it in the project if the instance relies on it. Features -------- * **Add TYPO3 v14 Support** (``6381907``) The extension supports TYPO3 13.4 and 14. * **[FEATURE] Prepare Extbase actions for CE output** (``3b67233``) Plugins for list, search form, selected list and detail view replace the page type. Output is built with content elements of the site's own, see :ref:`frontend-output`. * **[FEATURE] Frontend ready FAL fields main_image, media_files and editorial_images** (``23044a9``) Images are proper file references, rendered with the usual TYPO3 image handling. See :ref:`frontend-output-media`. * **[FEATURE] Remove file references not provided by upstream** (``cbe6161``) An image upstream no longer supplies loses its file reference on re-import, and each file is downloaded once per run. See :ref:`developers-import-media`. * **[FEATURE] Import opening hours as IRRE records** (``3fa6420``) Opening hours are inline records with display-ready accessors and a partial for a per-day table. See :ref:`frontend-output-opening-hours`. * **[FEATURE] Two more partials to display opening hours with merged time periods** (``73bccc1``) Two further partials group days with identical hours. See :ref:`frontend-output-opening-hours`. * **[FEATURE] Add categories to events based on @type** (``e433084``) An object's ``@type`` becomes :sql:`sys_category` relations, starting with events. * **[FEATURE] Import categories into tourist attractions** (``bda7ce1``) Tourist attractions get their categories too, and the search form filters by them. See :ref:`frontend-output-plugin-settings-trees`. * **[FEATURE] Import category hierarchy from thuecat** (``1b4b435``) Categories are arranged in the hierarchy of the schema.org and ThüCAT vocabularies instead of a flat list. See :ref:`category-hierarchy`. * **[FEATURE] Import keywords in both POIs and events** (``d4fa6d4``) ``schema:keywords`` is imported as a :sql:`sys_category` tree of its own, separate from the categories. See :ref:`import-keywords`. * **[FEATURE] Use imported keywords for display and filtering** (``86cd3e5``) Attraction lists filter by keyword, and the detail view emits a ``keywords`` meta tag. See :ref:`frontend-output-plugin-settings-trees`. * **[FEATURE] Allow top-level entities to define their sys_category anchors** (``b280d76``) Where category and keyword trees live is configured per site and per record kind, through the site set :yaml:`werkraummedia/thuecat-import`. See :ref:`configuration-category-anchors`. * **[FEATURE] Make import more robust by introducing timeout, recovery and watchdog** (``4cc9db0``) Requests time out and are retried, a run has a time budget, and progress is shown on the console. API responses are now cached in the database for 15 minutes; :shell:`--fresh` bypasses the cache, see :ref:`import-tuning`. * **[TASK] Allow skipping media during imports** (``60d3da1``) :shell:`--no_media` runs an import without downloading images. See :ref:`import-without-media`. * **[FEATURE] Improve performance of POI lists by custom caching** (``007b6f3``) Lists, list items and the search form are cached and cleared along with the page cache. See :ref:`frontend-output-caching`. * **[FEATURE] Import trails** (``2f3f3b7``) Trails are imported into a table of their own, with their way types, conditions and start and end locations. * **[FEATURE] Selected List & Show CEs incl. Templates for Trails** (``05f8161``) Trails have plugins and templates for a selected list and a detail view. See :ref:`content-element-example`. * **[FEATURE] Show plugins can show dedicated editor chosen record** (``964b92a``) A detail plugin can show one record chosen in the backend instead of the one in the URL. See :ref:`frontend-output-plugin-settings-records`. * **[FEATURE] Scope TCA and flexform select fields to records in site** (``41e06e3``) Relation fields in the backend offer only records of the current site. The suggest wizard is bounded through a global :tsconfig:`TCEFORM.suggest.default.addWhere`, which affects every suggest field of the installation, see :ref:`backend-relation-scoping`. * **[FEATURE] Import organizer and location for events** (``023d575``) Events get their location and organizer, and places list the events taking place there. See :ref:`developers-import-event-place-matching`. * **[FEATURE] Introduce sorting for POI lists** (``ee1ff62``) The list and filtered list plugins for tourist attractions sort by title, as before, or by the record order set in the backend. See :ref:`frontend-output-plugin-settings-sort-order`. Deprecation ----------- Nothing Known issues ------------ A re-import updates what ThueCat still delivers, but not everything ThueCat stops delivering is removed from the stored records. The import errs on the side of keeping data: a value is only removed where the import can tell a deliberate removal upstream from a missing or failed delivery. * **Text cleared upstream keeps its old value.** When ThueCat empties a text field, for example a description, the record keeps the previous text. This applies to every text field of every record kind. Numeric fields are not affected. * **Opening hours are never removed.** An opening hours entry ThueCat no longer delivers stays on the record, next to the current ones. * **Dropping everything of one kind keeps the old set.** Any *change* ThueCat makes is respected, including dropping some entries of one kind. When a record drops *all* entries of one kind, the stored ones stay. This applies to images, keywords, addresses, other relations, and an event's organizer and location. Related records themselves are shared and stay either way. **Workaround:** delete the affected record in the backend; the next import creates it again from what ThueCat delivers. The record gets a new uid, so plugins showing it as an editor-chosen record have to select it again.