TYPO3 13.4 LTS compatibility#1
Open
jloderhose wants to merge 11 commits into
Open
Conversation
added 11 commits
July 7, 2026 14:13
ExtensionManagementUtility::allowTableOnStandardPages() was removed in TYPO3 v13. Configure the equivalent directly in the table's TCA via ctrl.security.ignorePageTypeRestriction instead, and drop the call from ext_tables.php.
Three APIs used by the plugin were removed in TYPO3 v13: - ConfigurationManager::getContentObject() -> read the current content object from the request attribute "currentContentObject". - Doctrine\DBAL\Connection::PARAM_INT_ARRAY (removed with DBAL 4) -> TYPO3\CMS\Core\Database\Connection::PARAM_INT_ARRAY. - \PDO::PARAM_INT (unsupported by DBAL 4) -> TYPO3\CMS\Core\Database\Connection::PARAM_INT in SceneItemsProvider.
The extension scanner reports the "->data" access as a weak match for the now-protected GifBuilder->data property (breaking #101955). Here the object is the current ContentObjectRenderer, whose "data" array is public and unaffected. Make the type explicit with an instanceof check (which also collapses the two reads into one) and annotate it with @extensionScannerIgnoreLine.
The <TCEforms> wrapper around FlexForm field configuration was auto-migrated in v12 and the compatibility layer was removed in v13, causing the FlexForms to render broken in the backend. Move the field configuration up one level as required by TYPO3 v13.
Fluid treats "{" as the start of an inline expression, so the CSS braces in
the template's inline <style> block broke variable resolution for everything
after it (the element id and the JSON config attribute were emitted verbatim,
so the viewer never initialised). Move the styles to a dedicated stylesheet
loaded via <f:asset.css>.
Resolve the TCA migration warnings reported on TYPO3 v13: - "required" moved out of the "eval" list into 'required' => true (identifier, title). - eval="double2" fields migrated to TCA type "number" with 'format' => 'decimal' (yaw, pitch, hfov and the min/max variants); obsolete "eval"/"size" dropped and defaults changed to floats. - Removed the obsolete ctrl.cruser_id definition. - "type" select items switched to associative keys (label/value).
TCA must not be modified in ext_tables.php (loaded too late; flagged by the TYPO3 v13 "check TCA" report). Move the plugin registration to Configuration/TCA/Overrides/tt_content.php (which already registered the FlexForm and preview field) and delete the now-empty ext_tables.php.
The "General Plugin" (list_type) registration is deprecated in TYPO3 v13 and removed in v14 (#105076). Register the plugin as its own content type: - ext_localconf.php: configurePlugin() now uses PLUGIN_TYPE_CONTENT_ELEMENT. - TCA/Overrides/tt_content.php: register as CType, replace the subtypes_addlist/excludelist handling with an explicit showitem, and register the FlexForm for the new CType. - PageTS wizard item now sets CType = pannellum_panorama. - Add an upgrade wizard (AbstractListTypeToCTypeUpdate) to convert existing content elements from list_type to the new CType.
ExtensionManagementUtility::addPageTSConfig() is deprecated in TYPO3 v13 and removed in v14 (#101799). TYPO3 automatically includes an extension's Configuration/page.tsconfig, so move the wizard TSconfig there and drop the call from ext_localconf.php.
AbstractListTypeToCTypeUpdate, the base class of the list_type -> CType upgrade wizard, only exists in TYPO3 v13. With the previous Services.yaml the DI container reflected every class under Classes/, so building the container on TYPO3 v12.4 fataled on the missing base class even though the extension otherwise supports v12.4. Move the service configuration to Configuration/Services.php, exclude Classes/Updates from the default autoloading, and register the upgrade wizard only when running on TYPO3 v13 or newer.
Automatic inclusion of an extension's Configuration/page.tsconfig was introduced in TYPO3 v13. On v12.4 the file is not loaded, so the content element wizard configuration would be missing. Import it explicitly via addPageTSConfig() when running on TYPO3 versions older than 13; on v13+ the automatic inclusion is used and the manual import is skipped.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Hi,
First of all — thank you for building and sharing this extension, it's been really useful!
After updating to the latest version from Packagist, I ran into a number of errors on both TYPO3 12.4 LTS and 13.4 LTS (the current public releases). Most of them come from APIs that were deprecated or removed during the v12 → v13 transition.
I worked through the code and fixed the issues so the extension runs cleanly again on both LTS versions, and I added an upgrade wizard that migrates existing panorama plugins to the new content-type registration.
To make review easy, each change is a separate, self-contained commit (based on v1.0.3):
I've tested the result on TYPO3 12.4 LTS and 13.4 LTS, and it works seamlessly for me on both.
Would you consider merging these changes and publishing an updated release? I'm happy to adjust anything, split the commits differently, or answer any questions.
Thanks again, and best regards