diff --git a/Classes/Event/Listener/AfterTcaCompilationEventListener.php b/Classes/Event/Listener/AfterTcaCompilationEventListener.php new file mode 100644 index 0000000..9c54941 --- /dev/null +++ b/Classes/Event/Listener/AfterTcaCompilationEventListener.php @@ -0,0 +1,26 @@ +setTca($GLOBALS['TCA']); + } +} diff --git a/Classes/Utility/TcaUtility.php b/Classes/Utility/TcaUtility.php index 232fc7e..0816667 100644 --- a/Classes/Utility/TcaUtility.php +++ b/Classes/Utility/TcaUtility.php @@ -91,6 +91,18 @@ public static function addPageConfigFlexForm(array|string $dataStructure): void $GLOBALS['TCA']['pages']['columns']['tx_headless_config']['config']['ds']['default'] = $newFlexFormString; } + /** + * @param mixed[]|string $dataStructure either a xml flexform file path, a xml flexform string or a flexform array + */ + public static function setFooterFlexForm(array|string $dataStructure): void + { + $newFlexFormArray = self::getFlexFormArray($dataStructure); + $flexFormTools = GeneralUtility::makeInstance(FlexFormTools::class); + $newFlexFormString = $flexFormTools->flexArray2Xml($newFlexFormArray, true); + + $GLOBALS['TCA']['pages']['columns']['tx_headless_footer']['config']['ds']['default'] = $newFlexFormString; + } + /** * @param mixed[]|string $dataStructure either a xml flexform file path, a xml flexform string or a flexform array * @return mixed[] diff --git a/Configuration/Services.yaml b/Configuration/Services.yaml index 40ad936..148249d 100644 --- a/Configuration/Services.yaml +++ b/Configuration/Services.yaml @@ -19,3 +19,7 @@ services: tags: - name: event.listener + Remind\Headless\Event\Listener\AfterTcaCompilationEventListener: + tags: + - + name: event.listener \ No newline at end of file diff --git a/Configuration/TCA/Overrides/pages.php b/Configuration/TCA/Overrides/pages.php index d085bb0..4f168d2 100644 --- a/Configuration/TCA/Overrides/pages.php +++ b/Configuration/TCA/Overrides/pages.php @@ -37,6 +37,19 @@ 'displayCond' => 'FIELD:is_siteroot:REQ:true', 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_pages.xlf:page_config', ], + 'tx_headless_footer' => [ + 'config' => [ + 'behaviour' => [ + 'allowLanguageSynchronization' => true, + ], + 'ds' => [ + 'default' => 'FILE:EXT:rmnd_headless/Configuration/FlexForms/Empty.xml', + ], + 'type' => 'flex', + ], + 'displayCond' => 'FIELD:is_siteroot:REQ:true', + 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_pages.xlf:footer', + ], 'tx_headless_overview_label' => [ 'config' => [ 'type' => 'input', @@ -61,5 +74,14 @@ ExtensionManagementUtility::addToAllTCAtypes( 'pages', - 'tx_headless_config', + '--div--;LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_pages.xlf:page_config,tx_headless_config', + '', + 'after:rowDescription' +); + +ExtensionManagementUtility::addToAllTCAtypes( + 'pages', + '--div--;LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_pages.xlf:footer,tx_headless_footer', + '', + 'after:rowDescription' ); diff --git a/Configuration/TCA/Overrides/tt_content.php b/Configuration/TCA/Overrides/tt_content.php index c9777b6..2cfebda 100644 --- a/Configuration/TCA/Overrides/tt_content.php +++ b/Configuration/TCA/Overrides/tt_content.php @@ -46,23 +46,23 @@ 'default' => null, 'items' => [ [ - 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:cookie.category.none', + 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:cookies.category.none', 'value' => null, ], [ - 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:cookie.category.necessary', + 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:cookies.category.necessary', 'value' => 0, ], [ - 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:cookie.category.preferences', + 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:cookies.category.preferences', 'value' => 1, ], [ - 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:cookie.category.statistics', + 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:cookies.category.statistics', 'value' => 2, ], [ - 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:cookie.category.marketing', + 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:cookies.category.marketing', 'value' => 3, ], ], @@ -70,7 +70,7 @@ 'type' => 'select', ], 'exclude' => 0, - 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:cookie.category', + 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:cookies.category', ], 'tx_headless_cookie_message' => [ 'config' => [ @@ -81,7 +81,7 @@ 'type' => 'text', ], 'l10n_mode' => 'prefixLangTitle', - 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:cookie.message', + 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:cookies.message', ], 'tx_headless_item' => [ 'config' => [ @@ -189,8 +189,15 @@ 'after:space_after_class' ); -ExtensionManagementUtility::addToAllTCAtypes('tt_content', 'tx_headless_cookie_category'); -ExtensionManagementUtility::addToAllTCAtypes('tt_content', 'tx_headless_cookie_message'); +/** + * Palette will be added in AfterTcaCompilationEventListener so Content Elements + * added in Extensions after this one will also have the palette + */ +ExtensionManagementUtility::addFieldsToPalette( + 'tt_content', + 'cookies', + 'tx_headless_cookie_category,--linebreak--,tx_headless_cookie_message', +); $GLOBALS['TCA']['tt_content']['ctrl']['previewRenderer'] = ContentWithItemsPreviewRenderer::class; @@ -230,5 +237,5 @@ ]; // Workaround for TCEFORM (https://forge.typo3.org/issues/100775) - $GLOBALS['TCA']['tt_content']['columns']['space_after_class']['config']['items'][0]['label'] = 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:space_none'; - $GLOBALS['TCA']['tt_content']['columns']['space_before_class']['config']['items'][0]['label'] = 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:space_none'; +$GLOBALS['TCA']['tt_content']['columns']['space_after_class']['config']['items'][0]['label'] = 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:space_none'; +$GLOBALS['TCA']['tt_content']['columns']['space_before_class']['config']['items'][0]['label'] = 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:space_none'; diff --git a/Configuration/TCA/Overrides/tt_content_footer_content.php b/Configuration/TCA/Overrides/tt_content_footer_content.php deleted file mode 100644 index f14eca1..0000000 --- a/Configuration/TCA/Overrides/tt_content_footer_content.php +++ /dev/null @@ -1,37 +0,0 @@ - 'default', - 'icon' => 'content-footer', - 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ce.xlf:footer_content.title', - 'value' => 'footer_content', - ], -); - -$GLOBALS['TCA']['tt_content']['types']['footer_content'] = [ - 'showitem' => ' - --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general, - --palette--;;general, - header, - pi_flexform, - --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language, - --palette--;;language, - --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access, - --palette--;;hidden, - --palette--;;access, - --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories, - categories, - --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes, - rowDescription, - --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended, - ', -]; diff --git a/Configuration/TSConfig/Page/BackendLayouts/default.tsconfig b/Configuration/TSConfig/Page/BackendLayouts/default.tsconfig index 65c19a0..e0249f3 100644 --- a/Configuration/TSConfig/Page/BackendLayouts/default.tsconfig +++ b/Configuration/TSConfig/Page/BackendLayouts/default.tsconfig @@ -13,9 +13,6 @@ mod { 1 { name = LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_bl.xlf:column.above_breadcrumbs colPos = 1687238554 - disallowed { - CType = footer_content - } } } } @@ -24,9 +21,6 @@ mod { 1 { name = LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_bl.xlf:column.main colPos = 0 - disallowed { - CType = footer_content - } } } } diff --git a/Configuration/TSConfig/Page/BackendLayouts/root.tsconfig b/Configuration/TSConfig/Page/BackendLayouts/root.tsconfig index 8e2c726..b895df4 100644 --- a/Configuration/TSConfig/Page/BackendLayouts/root.tsconfig +++ b/Configuration/TSConfig/Page/BackendLayouts/root.tsconfig @@ -6,28 +6,13 @@ mod { config { backend_layout { colCount = 1 - rowCount = 2 + rowCount = 1 rows { 1 { columns { 1 { name = LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_bl.xlf:column.main colPos = 0 - disallowed { - CType = footer_content - } - } - } - } - 2 { - columns { - 1 { - name = LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_bl.xlf:column.footer - colPos = 1687238527 - allowed { - CType = footer_content - } - maxitems = 1 } } } diff --git a/Configuration/TSConfig/Page/TCEFORM.tsconfig b/Configuration/TSConfig/Page/TCEFORM.tsconfig index 9a320ae..f1a4f87 100644 --- a/Configuration/TSConfig/Page/TCEFORM.tsconfig +++ b/Configuration/TSConfig/Page/TCEFORM.tsconfig @@ -18,9 +18,6 @@ TCEFORM { altLabels.image = LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ce.xlf:image.title } frame_class.disabled = 1 - header.types { - footer_content.label = LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:header.label.backendOnly - } image.types { image.config.maxitems = 1 image.config.minitems = 1 diff --git a/Configuration/TSConfig/Page/WizardItems.tsconfig b/Configuration/TSConfig/Page/WizardItems.tsconfig index 0a620c0..f5daaf1 100644 --- a/Configuration/TSConfig/Page/WizardItems.tsconfig +++ b/Configuration/TSConfig/Page/WizardItems.tsconfig @@ -9,14 +9,6 @@ mod.wizards.newContentElement.wizardItems { CType = accordion } } - footer_content { - iconIdentifier = content-footer - title = LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ce.xlf:footer_content.title - description = LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ce.xlf:footer_content.description - tt_content_defValues { - CType = footer_content - } - }, // Element already exsists, only modify title and description image { title = LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ce.xlf:image.title @@ -40,7 +32,6 @@ mod.wizards.newContentElement.wizardItems { } } show := addToList(accordion) - show := addToList(footer_content) show := addToList(image_gallery) show := addToList(tabs) } diff --git a/Configuration/TypoScript/Configuration/InitialDataConfiguration.typoscript b/Configuration/TypoScript/Configuration/InitialDataConfiguration.typoscript index 9cca5c0..66e4a8c 100644 --- a/Configuration/TypoScript/Configuration/InitialDataConfiguration.typoscript +++ b/Configuration/TypoScript/Configuration/InitialDataConfiguration.typoscript @@ -16,15 +16,15 @@ initialData { } } } - footer = CONTENT + footer = JSON footer { - table = tt_content - select { - orderBy = sorting - where = {#colPos} = 1687238527 - max = 1 + dataProcessing { + 10 = Remind\Headless\DataProcessing\FlexFormProcessor + 10 { + fieldName = tx_headless_footer + as = flexform + } } - slide = -1 } } } diff --git a/Configuration/TypoScript/ContentElement/FooterContent.typoscript b/Configuration/TypoScript/ContentElement/FooterContent.typoscript deleted file mode 100644 index ec99ef8..0000000 --- a/Configuration/TypoScript/ContentElement/FooterContent.typoscript +++ /dev/null @@ -1,10 +0,0 @@ -tt_content.footer_content = JSON -tt_content.footer_content { - dataProcessing { - 10 = Remind\Headless\DataProcessing\FlexFormProcessor - 10 { - fieldName = pi_flexform - as = flexform - } - } -} diff --git a/README.md b/README.md index 782f785..0c1ec65 100644 --- a/README.md +++ b/README.md @@ -29,11 +29,7 @@ Required dependencies are [headless](https://github.com/TYPO3-Headless/headless) ### Default -The default layout consists of 1 column with 3 rows. Besides the main content (colPos = 0) there is also one column for content above the breadcrumbs (colPos = 1) and the footer (colPos = 10). - -The [content defender](https://extensions.typo3.org/extension/content_defender) extension is used to only allow exactly one footer_content content element in the footer column. The footer_content content element can not be used in the other columns. - - +The default layout consists of 1 column with 2 rows. Besides the main content (colPos = 0) there is also one column for content above the breadcrumbs (colPos = 1). ## TCA @@ -126,6 +122,14 @@ Similar to `space_before_inside`. ### pages +#### tx_headless_footer + +The `tx_headless_footer` flexform field contains the footer content. Use the following code to set a flexform: + +```php +\Remind\Headless\Utility::setFooterFlexForm('FILE:EXT:provider_extension/Configuration/FlexForms/Footer.xml'); +``` + #### tx_headless_overview_label An `tx_headless_overview_label` field is added to the page TCA. The field should be used to customize the label for the overview pages. @@ -177,18 +181,6 @@ $GLOBALS['TCA']['tt_content']['types']['accordion']['columnsOverrides']['tx_head Uses `tx_headless_item`, items consist of text (header, subheader, bodytext, title), a flexform field and images. -### footer_content - -Basic definition without any actual content fields. Add a flexform in your provider extension to use `footer_content`: - -```php -\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue( - '*', - 'FILE:EXT:provider_extension/Configuration/FlexForms/FooterContent.xml', - 'footer_content' -); -``` - ### tabs Uses `tx_headless_item`, items consist of text (header, subheader, bodytext) only. diff --git a/Resources/Private/Language/de.locallang_bl.xlf b/Resources/Private/Language/de.locallang_bl.xlf index f902e64..bf17b80 100644 --- a/Resources/Private/Language/de.locallang_bl.xlf +++ b/Resources/Private/Language/de.locallang_bl.xlf @@ -9,9 +9,6 @@ Über Breadcrumbs - - Fußzeile - Standard diff --git a/Resources/Private/Language/de.locallang_ce.xlf b/Resources/Private/Language/de.locallang_ce.xlf index 00e1184..ca81028 100644 --- a/Resources/Private/Language/de.locallang_ce.xlf +++ b/Resources/Private/Language/de.locallang_ce.xlf @@ -12,12 +12,6 @@ Akkordion Titel - - Content Element zur Benutzung in Fußzeile - - - Fußzeile Inhalt - Einzelnes Bild diff --git a/Resources/Private/Language/de.locallang_pages.xlf b/Resources/Private/Language/de.locallang_pages.xlf index cdde7ef..de5f5e4 100644 --- a/Resources/Private/Language/de.locallang_pages.xlf +++ b/Resources/Private/Language/de.locallang_pages.xlf @@ -9,6 +9,9 @@ Keine + + Footer + Page Config diff --git a/Resources/Private/Language/de.locallang_ttc.xlf b/Resources/Private/Language/de.locallang_ttc.xlf index 3b9af48..c8c7fab 100644 --- a/Resources/Private/Language/de.locallang_ttc.xlf +++ b/Resources/Private/Language/de.locallang_ttc.xlf @@ -12,25 +12,28 @@ Hintergrund über gesamte Breite - + + Cookies + + Cookie Kategorie - + Keine - + Notwendig - + Präferenzen - + Statistiken - + Marketing - + Cookie Meldung diff --git a/Resources/Private/Language/locallang_bl.xlf b/Resources/Private/Language/locallang_bl.xlf index bd423da..b33805d 100644 --- a/Resources/Private/Language/locallang_bl.xlf +++ b/Resources/Private/Language/locallang_bl.xlf @@ -9,9 +9,6 @@ Above Breadcrumbs - - Footer - Default diff --git a/Resources/Private/Language/locallang_ce.xlf b/Resources/Private/Language/locallang_ce.xlf index 3e81207..6aea4f2 100644 --- a/Resources/Private/Language/locallang_ce.xlf +++ b/Resources/Private/Language/locallang_ce.xlf @@ -12,12 +12,6 @@ Accordion Title - - Content Element to be used in Footer - - - Footer Content - One Image only diff --git a/Resources/Private/Language/locallang_pages.xlf b/Resources/Private/Language/locallang_pages.xlf index 98ada48..6e4baed 100644 --- a/Resources/Private/Language/locallang_pages.xlf +++ b/Resources/Private/Language/locallang_pages.xlf @@ -9,6 +9,9 @@ None + + Footer + Page Config diff --git a/Resources/Private/Language/locallang_ttc.xlf b/Resources/Private/Language/locallang_ttc.xlf index b1d6eb3..03d4f8e 100644 --- a/Resources/Private/Language/locallang_ttc.xlf +++ b/Resources/Private/Language/locallang_ttc.xlf @@ -12,25 +12,28 @@ Full Width Background - + + Cookies + + Cookie Category - + None - + Necessary - + Preferences - + Statistics - + Marketing - + Cookie Message diff --git a/Resources/Public/Icons/content-footer.svg b/Resources/Public/Icons/content-footer.svg deleted file mode 100644 index 4eab41e..0000000 --- a/Resources/Public/Icons/content-footer.svg +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - diff --git a/composer.json b/composer.json index cb818b7..307279b 100644 --- a/composer.json +++ b/composer.json @@ -35,7 +35,6 @@ } }, "require": { - "ichhabrecht/content-defender":"^3.4", "php": "^8.2", "typo3/cms-core": "^12.4", "friendsoftypo3/headless": "^4.4" diff --git a/composer.lock b/composer.lock index 7289220..b088926 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "36f7c2c201f11b30596f114a57ac63d3", + "content-hash": "fe4e24ca0ae307db7ae9ed4e8d5c4984", "packages": [ { "name": "bacon/bacon-qr-code", @@ -1326,83 +1326,6 @@ ], "time": "2024-07-18T11:15:46+00:00" }, - { - "name": "ichhabrecht/content-defender", - "version": "3.4.3", - "source": { - "type": "git", - "url": "https://github.com/IchHabRecht/content_defender.git", - "reference": "50b072c8477d779aac00ebc10d6b52d8edfd9099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/IchHabRecht/content_defender/zipball/50b072c8477d779aac00ebc10d6b52d8edfd9099", - "reference": "50b072c8477d779aac00ebc10d6b52d8edfd9099", - "shasum": "" - }, - "require": { - "php": "^7.4 || ^8.0", - "typo3/cms-backend": "^10.4 || ^11.5 || ^12.4", - "typo3/cms-core": "^10.4 || ^11.5 || ^12.4" - }, - "conflict": { - "psr/container": "<1.1", - "typo3/testing-framework": ">=7.0.0 <7.0.4" - }, - "replace": { - "typo3-ter/content-defender": "self.version" - }, - "require-dev": { - "doctrine/dbal": "^2.11 || ^3.8", - "php-parallel-lint/php-parallel-lint": "^1.4", - "phpspec/prophecy": "^1.12.1", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^8.4 || ^9.0", - "typo3/cms-fluid-styled-content": "^10.4 || ^11.5 || ^12.4", - "typo3/cms-indexed-search": "^10.4 || ^11.5 || ^12.4", - "typo3/cms-workspaces": "^10.4 || ^11.5 || ^12.4", - "typo3/minimal": "^10.4 || ^11.5 || ^12.0", - "typo3/testing-framework": "^6.16 || ^7.0.2" - }, - "type": "typo3-cms-extension", - "extra": { - "typo3/cms": { - "extension-key": "content_defender", - "cms-package-dir": "{$vendor-dir}/typo3/cms", - "app-dir": ".Build", - "web-dir": ".Build/public" - } - }, - "autoload": { - "psr-4": { - "IchHabRecht\\ContentDefender\\": "Classes/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "Nicole Cordes", - "email": "typo3@cordes.co", - "role": "Developer" - } - ], - "description": "Define allowed or denied content element types in your backend layouts", - "homepage": "https://github.com/IchHabRecht/content_defender", - "keywords": [ - "TYPO3 CMS", - "backend", - "content", - "restrict" - ], - "support": { - "issues": "https://github.com/IchHabRecht/content_defender/issues", - "source": "https://github.com/IchHabRecht/content_defender/tree/3.4.3" - }, - "time": "2024-04-29T07:35:37+00:00" - }, { "name": "lolli42/finediff", "version": "1.1.1", @@ -5160,85 +5083,6 @@ }, "time": "2022-08-07T14:48:42+00:00" }, - { - "name": "typo3/cms-backend", - "version": "v12.4.20", - "source": { - "type": "git", - "url": "https://github.com/TYPO3-CMS/backend.git", - "reference": "175402085bb835a9ea4f6ab670195f0e091a61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/backend/zipball/175402085bb835a9ea4f6ab670195f0e091a61be", - "reference": "175402085bb835a9ea4f6ab670195f0e091a61be", - "shasum": "" - }, - "require": { - "psr/event-dispatcher": "^1.0", - "typo3/cms-core": "12.4.20" - }, - "conflict": { - "typo3/cms": "*" - }, - "replace": { - "typo3/cms-about": "self.version", - "typo3/cms-context-help": "self.version", - "typo3/cms-cshmanual": "self.version", - "typo3/cms-func-wizards": "self.version", - "typo3/cms-recordlist": "self.version", - "typo3/cms-wizard-crpages": "self.version", - "typo3/cms-wizard-sortpages": "self.version" - }, - "suggest": { - "typo3/cms-install": "To generate url to install tool in environment toolbar" - }, - "type": "typo3-cms-framework", - "extra": { - "branch-alias": { - "dev-main": "12.4.x-dev" - }, - "typo3/cms": { - "Package": { - "serviceProvider": "TYPO3\\CMS\\Backend\\ServiceProvider", - "protected": true, - "partOfFactoryDefault": true, - "partOfMinimalUsableSystem": true - }, - "extension-key": "backend" - }, - "typo3/class-alias-loader": { - "class-alias-maps": [ - "Migrations/Code/ClassAliasMap.php" - ] - } - }, - "autoload": { - "psr-4": { - "TYPO3\\CMS\\Backend\\": "Classes/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "TYPO3 Core Team", - "email": "typo3cms@typo3.org", - "role": "Developer" - } - ], - "description": "TYPO3 CMS backend", - "homepage": "https://typo3.org", - "support": { - "chat": "https://typo3.org/help", - "docs": "https://docs.typo3.org", - "issues": "https://forge.typo3.org", - "source": "https://github.com/typo3/typo3" - }, - "time": "2024-09-10T07:47:57+00:00" - }, { "name": "typo3/cms-cli", "version": "3.1.1", @@ -6720,6 +6564,85 @@ }, "time": "2024-02-05T19:24:11+00:00" }, + { + "name": "typo3/cms-backend", + "version": "v12.4.20", + "source": { + "type": "git", + "url": "https://github.com/TYPO3-CMS/backend.git", + "reference": "175402085bb835a9ea4f6ab670195f0e091a61be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/TYPO3-CMS/backend/zipball/175402085bb835a9ea4f6ab670195f0e091a61be", + "reference": "175402085bb835a9ea4f6ab670195f0e091a61be", + "shasum": "" + }, + "require": { + "psr/event-dispatcher": "^1.0", + "typo3/cms-core": "12.4.20" + }, + "conflict": { + "typo3/cms": "*" + }, + "replace": { + "typo3/cms-about": "self.version", + "typo3/cms-context-help": "self.version", + "typo3/cms-cshmanual": "self.version", + "typo3/cms-func-wizards": "self.version", + "typo3/cms-recordlist": "self.version", + "typo3/cms-wizard-crpages": "self.version", + "typo3/cms-wizard-sortpages": "self.version" + }, + "suggest": { + "typo3/cms-install": "To generate url to install tool in environment toolbar" + }, + "type": "typo3-cms-framework", + "extra": { + "branch-alias": { + "dev-main": "12.4.x-dev" + }, + "typo3/cms": { + "Package": { + "serviceProvider": "TYPO3\\CMS\\Backend\\ServiceProvider", + "protected": true, + "partOfFactoryDefault": true, + "partOfMinimalUsableSystem": true + }, + "extension-key": "backend" + }, + "typo3/class-alias-loader": { + "class-alias-maps": [ + "Migrations/Code/ClassAliasMap.php" + ] + } + }, + "autoload": { + "psr-4": { + "TYPO3\\CMS\\Backend\\": "Classes/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "TYPO3 Core Team", + "email": "typo3cms@typo3.org", + "role": "Developer" + } + ], + "description": "TYPO3 CMS backend", + "homepage": "https://typo3.org", + "support": { + "chat": "https://typo3.org/help", + "docs": "https://docs.typo3.org", + "issues": "https://forge.typo3.org", + "source": "https://github.com/typo3/typo3" + }, + "time": "2024-09-10T07:47:57+00:00" + }, { "name": "typo3/cms-frontend", "version": "v12.4.20", diff --git a/ext_localconf.php b/ext_localconf.php index 22ecab0..20320b1 100644 --- a/ext_localconf.php +++ b/ext_localconf.php @@ -2,22 +2,9 @@ declare(strict_types=1); -use TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider; -use TYPO3\CMS\Core\Imaging\IconRegistry; -use TYPO3\CMS\Core\Utility\GeneralUtility; - defined('TYPO3') or die; (function (): void { - /* @var $iconRegistry \TYPO3\CMS\Core\Imaging\IconRegistry */ - $iconRegistry = GeneralUtility::makeInstance(IconRegistry::class); - - $iconRegistry->registerIcon( - 'content-footer', - SvgIconProvider::class, - ['source' => 'EXT:rmnd_headless/Resources/Public/Icons/content-footer.svg'] - ); - $GLOBALS['TYPO3_CONF_VARS']['SYS']['features']['headless.elementBodyResponse'] = true; $GLOBALS['TYPO3_CONF_VARS']['SYS']['features']['headless.frontendUrls'] = true; diff --git a/ext_tables.sql b/ext_tables.sql index 2c59fda..2bfe2ab 100644 --- a/ext_tables.sql +++ b/ext_tables.sql @@ -36,6 +36,7 @@ CREATE TABLE tt_content ( CREATE TABLE pages ( tx_headless_breadcrumbs_background_color VARCHAR(60), tx_headless_config mediumtext, + tx_headless_footer mediumtext, tx_headless_overview_label VARCHAR(60) DEFAULT '' NOT NULL, );