Initial commit - Typo3 11.5.41

This commit is contained in:
Matteo Gallo
2026-07-03 17:53:31 +02:00
commit 5ca4743197
6811 changed files with 568848 additions and 0 deletions

View File

@@ -0,0 +1,53 @@
<?php
declare(strict_types=1);
return [
\GeorgRinger\News\Domain\Model\News::class => [
'subclasses' => [
0 => \GeorgRinger\News\Domain\Model\NewsDefault::class,
1 => \GeorgRinger\News\Domain\Model\NewsInternal::class,
2 => \GeorgRinger\News\Domain\Model\NewsExternal::class,
]
],
\GeorgRinger\News\Domain\Model\NewsDefault::class => [
'tableName' => 'tx_news_domain_model_news',
'recordType' => 0,
],
\GeorgRinger\News\Domain\Model\NewsInternal::class => [
'tableName' => 'tx_news_domain_model_news',
'recordType' => 1,
],
\GeorgRinger\News\Domain\Model\NewsExternal::class => [
'tableName' => 'tx_news_domain_model_news',
'recordType' => 2,
],
\GeorgRinger\News\Domain\Model\FileReference::class => [
'tableName' => 'sys_file_reference',
],
\GeorgRinger\News\Domain\Model\TtContent::class => [
'tableName' => 'tt_content',
'properties' => [
'altText' => [
'fieldName' => 'altText'
],
'titleText' => [
'fieldName' => 'titleText'
],
'colPos' => [
'fieldName' => 'colPos'
],
'CType' => [
'fieldName' => 'CType'
],
],
],
\GeorgRinger\News\Domain\Model\Category::class => [
'tableName' => 'sys_category',
'properties' => [
'parentcategory' => [
'fieldName' => 'parent'
],
],
],
];

View File

@@ -0,0 +1,640 @@
<T3DataStructure>
<sheets>
<!--
################################
SHEET General Settings
################################
-->
<sDEF>
<ROOT>
<TCEforms>
<sheetTitle>LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_tab.settings</sheetTitle>
</TCEforms>
<type>array</type>
<el>
<!-- View -->
<switchableControllerActions>
<TCEforms>
<label>LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.mode</label>
<onChange>reload</onChange>
<config>
<type>select</type>
<itemsProcFunc>GeorgRinger\News\Hooks\ItemsProcFunc->user_switchableControllerActions</itemsProcFunc>
<renderType>selectSingle</renderType>
<items>
<numIndex index="1">
<numIndex index="0">LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.mode.news_list</numIndex>
<numIndex index="1">News->list;News->detail</numIndex>
</numIndex>
<numIndex index="2">
<numIndex index="0">LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.mode.news_listOnly</numIndex>
<numIndex index="1">News->list</numIndex>
</numIndex>
<numIndex index="3">
<numIndex index="0">LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.mode.news_selectedlist</numIndex>
<numIndex index="1">News->selectedList</numIndex>
</numIndex>
<numIndex index="8">
<numIndex index="0">LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.mode.news_detail</numIndex>
<numIndex index="1">News->detail</numIndex>
</numIndex>
<numIndex index="10">
<numIndex index="0">LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.mode.news_datemenu</numIndex>
<numIndex index="1">News->dateMenu</numIndex>
</numIndex>
<numIndex index="14">
<numIndex index="0">LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.mode.optgroup_search</numIndex>
<numIndex index="1">--div--</numIndex>
</numIndex>
<numIndex index="15">
<numIndex index="0">LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.mode.news_searchform</numIndex>
<numIndex index="1">News->searchForm</numIndex>
</numIndex>
<numIndex index="16">
<numIndex index="0">LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.mode.news_searchresult</numIndex>
<numIndex index="1">News->searchResult</numIndex>
</numIndex>
<numIndex index="20">
<numIndex index="0">LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.mode.optgroup_others</numIndex>
<numIndex index="1">--div--</numIndex>
</numIndex>
<numIndex index="7">
<numIndex index="0">LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.mode.category_list</numIndex>
<numIndex index="1">Category->list</numIndex>
</numIndex>
<numIndex index="21">
<numIndex index="0">LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.mode.tag_list</numIndex>
<numIndex index="1">Tag->list</numIndex>
</numIndex>
</items>
</config>
</TCEforms>
</switchableControllerActions>
<!-- order -->
<settings.orderBy>
<TCEforms>
<label>LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.orderBy</label>
<config>
<type>select</type>
<itemsProcFunc>GeorgRinger\News\Hooks\ItemsProcFunc->user_orderBy</itemsProcFunc>
<renderType>selectSingle</renderType>
<items>
<numIndex index="0" type="array">
<numIndex index="0"></numIndex>
<numIndex index="1"></numIndex>
</numIndex>
<numIndex index="1">
<numIndex index="0">LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.orderBy.tstamp</numIndex>
<numIndex index="1">tstamp</numIndex>
</numIndex>
<numIndex index="2">
<numIndex index="0">LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.orderBy.datetime</numIndex>
<numIndex index="1">datetime</numIndex>
</numIndex>
<numIndex index="3">
<numIndex index="0">LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.orderBy.crdate</numIndex>
<numIndex index="1">crdate</numIndex>
</numIndex>
<numIndex index="4">
<numIndex index="0">LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.orderBy.title</numIndex>
<numIndex index="1">title</numIndex>
</numIndex>
</items>
</config>
</TCEforms>
</settings.orderBy>
<!-- order direction -->
<settings.orderDirection>
<TCEforms>
<label>LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.orderDirection</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items>
<numIndex index="0" type="array">
<numIndex index="0"></numIndex>
<numIndex index="1"></numIndex>
</numIndex>
<numIndex index="1">
<numIndex index="0">LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.orderDirection.asc</numIndex>
<numIndex index="1">asc</numIndex>
</numIndex>
<numIndex index="2">
<numIndex index="0">LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.orderDirection.desc</numIndex>
<numIndex index="1">desc</numIndex>
</numIndex>
</items>
</config>
</TCEforms>
</settings.orderDirection>
<!-- datefield: select relevant file dateMenu -->
<settings.dateField>
<TCEforms>
<label>LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.dateField</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items>
<numIndex index="0" type="array">
<numIndex index="0"></numIndex>
<numIndex index="1"></numIndex>
</numIndex>
<numIndex index="1">
<numIndex index="0">LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.dateField.datetime</numIndex>
<numIndex index="1">datetime</numIndex>
</numIndex>
<numIndex index="2">
<numIndex index="0">LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.dateField.archive</numIndex>
<numIndex index="1">archive</numIndex>
</numIndex>
</items>
</config>
</TCEforms>
</settings.dateField>
<!-- Category Mode -->
<settings.categoryConjunction>
<TCEforms>
<label>LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.categoryConjunction</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items>
<numIndex index="0" type="array">
<numIndex index="0">LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.categoryConjunction.all</numIndex>
<numIndex index="1"></numIndex>
</numIndex>
<numIndex index="1">
<numIndex index="0">LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.categoryConjunction.or</numIndex>
<numIndex index="1">or</numIndex>
</numIndex>
<numIndex index="2">
<numIndex index="0">LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.categoryConjunction.and</numIndex>
<numIndex index="1">and</numIndex>
</numIndex>
<numIndex index="3">
<numIndex index="0">LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.categoryConjunction.notor</numIndex>
<numIndex index="1">notor</numIndex>
</numIndex>
<numIndex index="4">
<numIndex index="0">LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.categoryConjunction.notand</numIndex>
<numIndex index="1">notand</numIndex>
</numIndex>
</items>
</config>
</TCEforms>
</settings.categoryConjunction>
<!-- Category -->
<settings.categories>
<TCEforms>
<label>LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.categories</label>
<config>
<type>select</type>
<renderMode>tree</renderMode>
<renderType>selectTree</renderType>
<treeConfig>
<!-- <dataProvider>GeorgRinger\News\TreeProvider\DatabaseTreeDataProvider</dataProvider>-->
<parentField>parent</parentField>
<appearance>
<maxLevels>99</maxLevels>
<expandAll>TRUE</expandAll>
<showHeader>TRUE</showHeader>
</appearance>
</treeConfig>
<foreign_table>sys_category</foreign_table>
<foreign_table_where>AND (sys_category.sys_language_uid = 0 OR sys_category.l10n_parent = 0) ORDER BY sys_category.sorting</foreign_table_where>
<size>15</size>
<minitems>0</minitems>
<maxitems>99</maxitems>
</config>
</TCEforms>
</settings.categories>
<!-- Include sub categories -->
<settings.includeSubCategories>
<TCEforms>
<label>LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.includeSubCategories</label>
<config>
<type>check</type>
</config>
</TCEforms>
</settings.includeSubCategories>
<!-- Archive -->
<settings.archiveRestriction>
<TCEforms>
<label>LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.archiveRestriction</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items>
<numIndex index="0" type="array">
<numIndex index="0">LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.no-constraint</numIndex>
<numIndex index="1"></numIndex>
</numIndex>
<numIndex index="1">
<numIndex index="0">LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.archiveRestriction.active</numIndex>
<numIndex index="1">active</numIndex>
</numIndex>
<numIndex index="2">
<numIndex index="0">LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.archiveRestriction.archived</numIndex>
<numIndex index="1">archived</numIndex>
</numIndex>
</items>
</config>
</TCEforms>
</settings.archiveRestriction>
<!-- Time limit Low -->
<settings.timeRestriction>
<TCEforms>
<label>LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.timeRestriction</label>
<config>
<checkbox>1</checkbox>
<default></default>
<type>input</type>
<size>15</size>
</config>
</TCEforms>
</settings.timeRestriction>
<!-- Time limit High -->
<settings.timeRestrictionHigh>
<TCEforms>
<label>LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.timeRestrictionHigh</label>
<config>
<checkbox>1</checkbox>
<default></default>
<type>input</type>
<size>15</size>
</config>
</TCEforms>
</settings.timeRestrictionHigh>
<!-- Top News -->
<settings.topNewsRestriction>
<TCEforms>
<label>LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.topNewsRestriction</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items>
<numIndex index="0" type="array">
<numIndex index="0">LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.no-constraint</numIndex>
<numIndex index="1"></numIndex>
</numIndex>
<numIndex index="1">
<numIndex index="0">LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.topNewsRestriction.1</numIndex>
<numIndex index="1">1</numIndex>
</numIndex>
<numIndex index="2">
<numIndex index="0">LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.topNewsRestriction.2</numIndex>
<numIndex index="1">2</numIndex>
</numIndex>
</items>
</config>
</TCEforms>
</settings.topNewsRestriction>
<!-- single news -->
<settings.singleNews>
<TCEforms>
<label>LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.singleNews</label>
<config>
<type>group</type>
<internal_type>db</internal_type>
<allowed>tx_news_domain_model_news</allowed>
<size>1</size>
<maxitems>1</maxitems>
<minitems>0</minitems>
</config>
</TCEforms>
</settings.singleNews>
<!-- settings.previewHiddenRecords -->
<settings.previewHiddenRecords>
<TCEforms>
<label>LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.previewHiddenRecords</label>
<config type="array">
<type>select</type>
<renderType>selectSingle</renderType>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.previewHiddenRecords.I.2</numIndex>
<numIndex index="1">2</numIndex>
</numIndex>
<numIndex index="1" type="array">
<numIndex index="0">LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.previewHiddenRecords.I.1</numIndex>
<numIndex index="1">1</numIndex>
</numIndex>
<numIndex index="2" type="array">
<numIndex index="0">LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.previewHiddenRecords.I.0</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
</items>
<size type="integer">1</size>
<maxitems type="integer">1</maxitems>
</config>
</TCEforms>
</settings.previewHiddenRecords>
<!-- startingpoint -->
<settings.startingpoint>
<TCEforms>
<label>LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.startingpoint</label>
<config>
<type>group</type>
<internal_type>db</internal_type>
<allowed>pages</allowed>
<size>3</size>
<maxitems>50</maxitems>
<minitems>0</minitems>
</config>
</TCEforms>
</settings.startingpoint>
<!-- recursive -->
<settings.recursive>
<TCEforms>
<label>LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.recursive</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items type="array">
<numIndex index="1" type="array">
<numIndex index="0">LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.recursive.I.inherit</numIndex>
<numIndex index="1"></numIndex>
</numIndex>
<numIndex index="2" type="array">
<numIndex index="0">LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:recursive.I.0</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
<numIndex index="3" type="array">
<numIndex index="0">LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:recursive.I.1</numIndex>
<numIndex index="1">1</numIndex>
</numIndex>
<numIndex index="4" type="array">
<numIndex index="0">LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:recursive.I.2</numIndex>
<numIndex index="1">2</numIndex>
</numIndex>
<numIndex index="5" type="array">
<numIndex index="0">LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:recursive.I.3</numIndex>
<numIndex index="1">3</numIndex>
</numIndex>
<numIndex index="6" type="array">
<numIndex index="0">LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:recursive.I.4</numIndex>
<numIndex index="1">4</numIndex>
</numIndex>
<numIndex index="7" type="array">
<numIndex index="0">LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:recursive.I.5</numIndex>
<numIndex index="1">250</numIndex>
</numIndex>
</items>
</config>
</TCEforms>
</settings.recursive>
<!-- selectedList -->
<settings.selectedList>
<TCEforms>
<label>LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.selectedList</label>
<config>
<type>group</type>
<internal_type>db</internal_type>
<allowed>tx_news_domain_model_news</allowed>
<size>3</size>
</config>
</TCEforms>
</settings.selectedList>
</el>
</ROOT>
</sDEF>
<!--
################################
SHEET Additional
################################
-->
<additional>
<ROOT>
<TCEforms>
<sheetTitle>LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_tab.additional</sheetTitle>
</TCEforms>
<type>array</type>
<el>
<!-- PID Detail Page -->
<settings.detailPid>
<TCEforms>
<label>LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_additional.detailPid</label>
<config>
<type>group</type>
<internal_type>db</internal_type>
<allowed>pages</allowed>
<size>1</size>
<maxitems>1</maxitems>
<minitems>0</minitems>
</config>
</TCEforms>
</settings.detailPid>
<!-- PID List Page -->
<settings.listPid>
<TCEforms>
<label>LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_additional.listPid</label>
<config>
<type>group</type>
<internal_type>db</internal_type>
<allowed>pages</allowed>
<size>1</size>
<maxitems>1</maxitems>
<minitems>0</minitems>
</config>
</TCEforms>
</settings.listPid>
<!-- PID Back -->
<settings.backPid>
<TCEforms>
<label>LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_additional.backPid</label>
<config>
<type>group</type>
<internal_type>db</internal_type>
<allowed>pages</allowed>
<size>1</size>
<maxitems>1</maxitems>
<minitems>0</minitems>
</config>
</TCEforms>
</settings.backPid>
<!-- Limit Start -->
<settings.limit>
<TCEforms>
<label>LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_additional.limit</label>
<config>
<type>input</type>
<size>5</size>
<eval>num</eval>
</config>
</TCEforms>
</settings.limit>
<!-- Offset -->
<settings.offset>
<TCEforms>
<label>LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_additional.offset</label>
<config>
<type>input</type>
<size>5</size>
<eval>num</eval>
</config>
</TCEforms>
</settings.offset>
<!-- Tags -->
<settings.tags>
<TCEforms>
<label>LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_additional.tags</label>
<config>
<type>group</type>
<internal_type>db</internal_type>
<allowed>tx_news_domain_model_tag</allowed>
<size>3</size>
<minitems>0</minitems>
<maxitems>99</maxitems>
</config>
</TCEforms>
</settings.tags>
<!-- Hide pagination -->
<settings.hidePagination>
<TCEforms>
<label>LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_additional.hidePagination</label>
<config>
<type>check</type>
</config>
</TCEforms>
</settings.hidePagination>
<settings.list.paginate.itemsPerPage>
<TCEforms>
<label>LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_additional.itemsPerPage</label>
<config>
<type>input</type>
<size>2</size>
</config>
</TCEforms>
</settings.list.paginate.itemsPerPage>
<!-- topNewsFirst -->
<settings.topNewsFirst>
<TCEforms>
<label>LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_additional.topNewsFirst</label>
<config>
<type>check</type>
</config>
</TCEforms>
</settings.topNewsFirst>
<!-- only not displayed news -->
<settings.excludeAlreadyDisplayedNews>
<TCEforms>
<label>LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_additional.excludeAlreadyDisplayedNews</label>
<config>
<type>check</type>
</config>
</TCEforms>
</settings.excludeAlreadyDisplayedNews>
<!-- disable overrideDemand -->
<settings.disableOverrideDemand>
<TCEforms>
<label>LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_additional.disableOverrideDemand</label>
<config>
<type>check</type>
<default>1</default>
</config>
</TCEforms>
</settings.disableOverrideDemand>
</el>
</ROOT>
</additional>
<!--
################################
SHEET Template
################################
-->
<template>
<ROOT>
<TCEforms>
<sheetTitle>LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_tab.template</sheetTitle>
</TCEforms>
<type>array</type>
<el>
<!-- Image Width -->
<settings.media.maxWidth>
<TCEforms>
<label>LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_template.mediaMaxWidth</label>
<config>
<type>input</type>
<size>5</size>
<eval>num</eval>
</config>
</TCEforms>
</settings.media.maxWidth>
<!-- Image Height -->
<settings.media.maxHeight>
<TCEforms>
<label>LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_template.mediaMaxHeight</label>
<config>
<type>input</type>
<size>5</size>
<eval>num</eval>
</config>
</TCEforms>
</settings.media.maxHeight>
<!-- crop length Teaser -->
<settings.cropMaxCharacters>
<TCEforms>
<label>LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_template.cropMaxCharacters</label>
<config>
<type>input</type>
<size>5</size>
<eval>num</eval>
</config>
</TCEforms>
</settings.cropMaxCharacters>
<!-- Template Layout -->
<settings.templateLayout>
<TCEforms>
<label>LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_template.templateLayout</label>
<config>
<type>select</type>
<itemsProcFunc>GeorgRinger\News\Hooks\ItemsProcFunc->user_templateLayout</itemsProcFunc>
<renderType>selectSingle</renderType>
<items>
<numIndex index="0" type="array">
<numIndex index="0"></numIndex>
<numIndex index="1"></numIndex>
</numIndex>
</items>
</config>
</TCEforms>
</settings.templateLayout>
</el>
</ROOT>
</template>
</sheets>
</T3DataStructure>

View File

@@ -0,0 +1,31 @@
<?php
declare(strict_types=1);
use GeorgRinger\News\Backend\FormDataProvider\NewsFlexFormManipulation;
use GeorgRinger\News\Hooks\Backend\RecordListQueryHook;
use GeorgRinger\News\Hooks\BackendUtility;
use GeorgRinger\News\Hooks\ItemsProcFunc;
use GeorgRinger\News\Hooks\PageLayoutView;
use GeorgRinger\News\Updates\NewsSlugUpdater;
use GeorgRinger\News\Updates\RealurlAliasNewsSlugUpdater;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use TYPO3\CMS\Core\DependencyInjection;
return function (ContainerConfigurator $container, ContainerBuilder $containerBuilder) {
$containerBuilder->registerForAutoconfiguration(NewsFlexFormManipulation::class)->addTag('news.NewsFlexFormManipulation');
$containerBuilder->registerForAutoconfiguration(RecordListQueryHook::class)->addTag('news.RecordListQueryHook');
$containerBuilder->registerForAutoconfiguration(BackendUtility::class)->addTag('news.BackendUtility');
$containerBuilder->registerForAutoconfiguration(ItemsProcFunc::class)->addTag('news.ItemsProcFunc');
$containerBuilder->registerForAutoconfiguration(PageLayoutView::class)->addTag('news.PageLayoutView');
$containerBuilder->registerForAutoconfiguration(NewsSlugUpdater::class)->addTag('news.NewsSlugUpdater');
$containerBuilder->registerForAutoconfiguration(RealurlAliasNewsSlugUpdater::class)->addTag('news.RealurlAliasNewsSlugUpdater');
$containerBuilder->addCompilerPass(new DependencyInjection\SingletonPass('news.NewsFlexFormManipulation'));
$containerBuilder->addCompilerPass(new DependencyInjection\SingletonPass('news.RecordListQueryHook'));
$containerBuilder->addCompilerPass(new DependencyInjection\SingletonPass('news.BackendUtility'));
$containerBuilder->addCompilerPass(new DependencyInjection\SingletonPass('news.ItemsProcFunc'));
$containerBuilder->addCompilerPass(new DependencyInjection\SingletonPass('news.PageLayoutView'));
$containerBuilder->addCompilerPass(new DependencyInjection\SingletonPass('news.NewsSlugUpdater'));
$containerBuilder->addCompilerPass(new DependencyInjection\SingletonPass('news.RealurlAliasNewsSlugUpdater'));
};

View File

@@ -0,0 +1,37 @@
services:
_defaults:
autowire: true
autoconfigure: true
public: false
news.cache:
class: TYPO3\CMS\Core\Cache\Frontend\PhpFrontend
# We can not use CacheManager, as it can not be
# injected/instantiated during ext_localconf.php loading
# factory: ['@TYPO3\CMS\Core\Cache\CacheManager', 'getCache']
# therefore we use the static Bootstrap::createCache factory instead.
factory: ['TYPO3\CMS\Core\Core\Bootstrap', 'createCache']
arguments: ['news']
GeorgRinger\News\:
resource: '../Classes/*'
exclude: '../Classes/Domain/Model/*'
GeorgRinger\News\Utility\ClassCacheManager:
arguments: ['@news.cache']
public: true
GeorgRinger\News\Utility\ClassLoader:
arguments: ['@news.cache', '@GeorgRinger\News\Utility\ClassCacheManager']
public: true
GeorgRinger\News\Seo\HrefLangEvent:
tags:
- name: event.listener
identifier: 'my-ext/ownHrefLang'
after: 'typo3-seo/hreflangGenerator'
event: TYPO3\CMS\Frontend\Event\ModifyHrefLangTagsEvent
GeorgRinger\News\Backend\RecordList\NewsDatabaseRecordList:
public: true

View File

@@ -0,0 +1,22 @@
<?php
defined('TYPO3_MODE') or die();
// Override news icon
$GLOBALS['TCA']['pages']['columns']['module']['config']['items'][] = [
0 => 'LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:news-folder',
1 => 'news',
2 => 'apps-pagetree-folder-contains-news'
];
$GLOBALS['TCA']['pages']['columns']['module']['config']['items'][] = [
0 => 'LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:news-page',
1 => 'newsplugins',
2 => 'apps-pagetree-page-contains-news'
];
$GLOBALS['TCA']['pages']['ctrl']['typeicon_classes']['contains-newsplugins'] = 'apps-pagetree-page-contains-news';
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::registerPageTSConfigFile(
'news',
'Configuration/TSconfig/Page/news_only.tsconfig',
'EXT:news :: Restrict pages to news records'
);

View File

@@ -0,0 +1,198 @@
<?php
defined('TYPO3_MODE') or die();
$ll = 'LLL:EXT:news/Resources/Private/Language/locallang_db.xlf:';
$configuration = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\GeorgRinger\News\Domain\Model\Dto\EmConfiguration::class);
/**
* Add extra fields to the sys_category record
*/
$newSysCategoryColumns = [
'pid' => [
'label' => 'pid',
'config' => [
'type' => 'passthrough'
]
],
'sorting' => [
'label' => 'sorting',
'config' => [
'type' => 'passthrough'
]
],
'crdate' => [
'label' => 'crdate',
'config' => [
'type' => 'passthrough',
]
],
'tstamp' => [
'label' => 'tstamp',
'config' => [
'type' => 'passthrough',
]
],
'images' => [
'exclude' => true,
'label' => $ll . 'tx_news_domain_model_category.image',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'images',
[
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference',
'showPossibleLocalizationRecords' => true,
'showRemovedLocalizationRecords' => true,
'showAllLocalizationLink' => true,
'showSynchronizationLink' => true
],
'foreign_match_fields' => [
'fieldname' => 'images',
'tablenames' => 'sys_category',
'table_local' => 'sys_file',
],
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
)
],
'single_pid' => [
'exclude' => true,
'label' => $ll . 'tx_news_domain_model_category.single_pid',
'config' => [
'type' => 'group',
'internal_type' => 'db',
'allowed' => 'pages',
'size' => 1,
'maxitems' => 1,
'default' => 0,
'suggestOptions' => [
'default' => [
'searchWholePhrase' => true,
]
],
'behaviour' => [
'allowLanguageSynchronization' => true,
],
]
],
'shortcut' => [
'exclude' => true,
'label' => $ll . 'tx_news_domain_model_category.shortcut',
'config' => [
'type' => 'group',
'internal_type' => 'db',
'allowed' => 'pages',
'size' => 1,
'maxitems' => 1,
'default' => 0,
'suggestOptions' => [
'default' => [
'searchWholePhrase' => true,
]
],
'behaviour' => [
'allowLanguageSynchronization' => true,
],
]
],
'import_id' => [
'label' => $ll . 'tx_news_domain_model_news.import_id',
'config' => [
'type' => 'passthrough'
]
],
'import_source' => [
'label' => $ll . 'tx_news_domain_model_news.import_source',
'config' => [
'type' => 'passthrough'
]
],
'seo_headline' => [
'exclude' => true,
'label' => $ll . 'tx_news_domain_model_category.seo.seo_headline',
'config' => [
'type' => 'input',
],
],
'seo_title' => [
'exclude' => true,
'label' => $ll . 'tx_news_domain_model_category.seo.seo_title',
'config' => [
'type' => 'input',
],
],
'seo_description' => [
'exclude' => true,
'label' => $ll . 'tx_news_domain_model_category.seo.seo_description',
'config' => [
'type' => 'text',
],
],
'seo_text' => [
'exclude' => true,
'label' => $ll . 'tx_news_domain_model_category.seo.seo_text',
'config' => [
'type' => 'text',
'enableRichtext' => true,
],
],
'slug' =>[
'exclude' => true,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_tca.xlf:pages.slug',
'displayCond' => 'VERSION:IS:false',
'config' => [
'type' => 'slug',
'size' => 50,
'generatorOptions' => [
'fields' => ['title'],
'replacements' => [
'/' => '-'
],
],
'fallbackCharacter' => '-',
'eval' => $configuration->getSlugBehaviour(),
'default' => ''
]
],
];
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('sys_category', $newSysCategoryColumns);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes(
'sys_category',
'--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.tabs.options, images',
'',
'before:description'
);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes(
'sys_category',
'single_pid',
'',
'after:description'
);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes(
'sys_category',
'shortcut',
'',
'after:single_pid'
);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes(
'sys_category',
'--div--;' . $ll . 'tx_news_domain_model_category.tabs.seo, seo_title, seo_description, seo_headline, seo_text',
'',
'after:endtime'
);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes(
'sys_category',
'slug',
'',
'after:title'
);
$GLOBALS['TCA']['sys_category']['columns']['items']['config']['MM_oppositeUsage']['tx_news_domain_model_news']
= [0 => 'categories'];
$GLOBALS['TCA']['sys_category']['ctrl']['label_userFunc'] =
\GeorgRinger\News\Hooks\Labels::class . '->getUserLabelCategory';

View File

@@ -0,0 +1,33 @@
<?php
defined('TYPO3_MODE') or die();
$emConfiguration = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\GeorgRinger\News\Domain\Model\Dto\EmConfiguration::class);
if ($emConfiguration->isAdvancedMediaPreview()) {
$fieldConfig = [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
['LLL:EXT:news/Resources/Private/Language/locallang_db.xlf:tx_news_domain_model_media.showinviews.0', 0, ''],
['LLL:EXT:news/Resources/Private/Language/locallang_db.xlf:tx_news_domain_model_media.showinviews.1', 1, ''],
['LLL:EXT:news/Resources/Private/Language/locallang_db.xlf:tx_news_domain_model_media.showinviews.2', 2, ''],
],
'default' => 0,
];
} else {
$fieldConfig = [
'type' => 'check',
'default' => 0
];
}
$newSysFileReferenceColumns = [
'showinpreview' => [
'exclude' => true,
'label' => 'LLL:EXT:news/Resources/Private/Language/locallang_db.xlf:tx_news_domain_model_media.showinviews',
'config' => $fieldConfig
],
];
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('sys_file_reference', $newSysFileReferenceColumns);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette('sys_file_reference', 'newsPalette', 'showinpreview');

View File

@@ -0,0 +1,8 @@
<?php
defined('TYPO3_MODE') or die();
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile('news', 'Configuration/TypoScript', 'News');
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile('news', 'Configuration/TypoScript/Sitemap', 'News Sitemap');
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile('news', 'Configuration/TypoScript/Styles/Twb', 'News Styles Twitter Bootstrap');
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile('news', 'Configuration/TypoScript/Styles/Twb5', 'News Styles Twitter Bootstrap V5');

View File

@@ -0,0 +1,42 @@
<?php
defined('TYPO3_MODE') or die();
/***************
* Plugin
*/
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
'news',
'Pi1',
'LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:pi1_title'
);
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_excludelist']['news_pi1'] = 'recursive,select_key,pages';
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist']['news_pi1'] = 'pi_flexform';
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue(
'news_pi1',
'FILE:EXT:news/Configuration/FlexForms/flexform_news.xml'
);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToInsertRecords('tx_news_domain_model_news');
foreach (['crdate', 'tstamp'] as $fakeField) {
if (!isset($GLOBALS['TCA']['tt_content']['columns'][$fakeField])) {
$GLOBALS['TCA']['tt_content']['columns'][$fakeField] = [
'label' => $fakeField,
'config' => [
'type' => 'passthrough',
]
];
}
}
$newFields = [
'tx_news_related_news' => [
'label' => 'tx_news_related_news',
'config' => [
'type' => 'passthrough'
]
]
];
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('tt_content', $newFields);

View File

@@ -0,0 +1,69 @@
<?php
defined('TYPO3_MODE') or die();
$boot = static function (): void {
// Add seo sitemap fields
if (\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('seo')) {
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns(
'tx_news_domain_model_news',
[
'sitemap_changefreq' => [
'config' => [
'items' => [
['LLL:EXT:seo/Resources/Private/Language/locallang_tca.xlf:pages.sitemap_changefreq.none', ''],
['LLL:EXT:seo/Resources/Private/Language/locallang_tca.xlf:pages.sitemap_changefreq.always', 'always'],
['LLL:EXT:seo/Resources/Private/Language/locallang_tca.xlf:pages.sitemap_changefreq.hourly', 'hourly'],
['LLL:EXT:seo/Resources/Private/Language/locallang_tca.xlf:pages.sitemap_changefreq.daily', 'daily'],
['LLL:EXT:seo/Resources/Private/Language/locallang_tca.xlf:pages.sitemap_changefreq.weekly', 'weekly'],
['LLL:EXT:seo/Resources/Private/Language/locallang_tca.xlf:pages.sitemap_changefreq.monthly', 'monthly'],
['LLL:EXT:seo/Resources/Private/Language/locallang_tca.xlf:pages.sitemap_changefreq.yearly', 'yearly'],
['LLL:EXT:seo/Resources/Private/Language/locallang_tca.xlf:pages.sitemap_changefreq.never', 'never']
],
'renderType' => 'selectSingle',
'type' => 'select'
],
'exclude' => true,
'label' => 'LLL:EXT:seo/Resources/Private/Language/locallang_tca.xlf:pages.sitemap_changefreq'
],
'sitemap_priority' => [
'config' => [
'items' => [
['0.0', '0.0'],
['0.1', '0.1'],
['0.2', '0.2'],
['0.3', '0.3'],
['0.4', '0.4'],
['0.5', '0.5'],
['0.6', '0.6'],
['0.7', '0.7'],
['0.8', '0.8'],
['0.9', '0.9'],
['1.0', '1.0']
],
'renderType' => 'selectSingle',
'type' => 'select',
'default' => '0.5',
],
'exclude' => true,
'label' => 'LLL:EXT:seo/Resources/Private/Language/locallang_tca.xlf:pages.sitemap_priority'
]
]
);
$GLOBALS['TCA']['tx_news_domain_model_news']['palettes']['sitemap'] = [
'label' => 'LLL:EXT:seo/Resources/Private/Language/locallang_tca.xlf:pages.palettes.sitemap',
'showitem' => 'sitemap_changefreq,sitemap_priority'
];
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes(
'tx_news_domain_model_news',
'--palette--;;sitemap',
'',
'after:alternative_title'
);
}
};
$boot();
unset($boot);

View File

@@ -0,0 +1,25 @@
<?php
defined('TYPO3') or die();
call_user_func(static function () {
$versionInformation = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Information\Typo3Version::class);
if ($versionInformation->getMajorVersion() === 11) {
foreach (['link', 'news', 'tag'] as $tableSuffix) {
$GLOBALS['TCA']['tx_news_domain_model_' . $tableSuffix]['columns']['sys_language_uid']['config'] = [
'type' => 'language'
];
}
$showRemovedLocalizationRecordsFields = [
'sys_category' => ['images'],
'tx_news_domain_model_news' => ['related_links', 'content_elements', 'fal_media', 'fal_related_files']
];
foreach ($showRemovedLocalizationRecordsFields as $tableName => $fields) {
foreach ($fields as $field) {
unset($GLOBALS['TCA'][$tableName]['columns'][$field]['config']['appearance']['showRemovedLocalizationRecords']);
}
}
}
});

View File

@@ -0,0 +1,159 @@
<?php
defined('TYPO3_MODE') or die();
$ll = 'LLL:EXT:news/Resources/Private/Language/locallang_db.xlf:';
return [
'ctrl' => [
'title' => $ll . 'tx_news_domain_model_link',
'descriptionColumn' => 'description',
'label' => 'title',
'label_alt' => 'uri',
'label_alt_force' => true,
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'languageField' => 'sys_language_uid',
'transOrigPointerField' => 'l10n_parent',
'transOrigDiffSourceField' => 'l10n_diffsource',
'translationSource' => 'l10n_source',
'versioningWS' => true,
'origUid' => 't3_origuid',
'default_sortby' => 'ORDER BY sorting',
'sortby' => 'sorting',
'delete' => 'deleted',
'enablecolumns' => [
'disabled' => 'hidden',
],
'typeicon_classes' => [
'default' => 'ext-news-link'
],
'hideTable' => true,
],
'columns' => [
'pid' => [
'label' => 'pid',
'config' => [
'type' => 'passthrough'
]
],
'crdate' => [
'label' => 'crdate',
'config' => [
'type' => 'input',
'renderType' => 'inputDateTime',
'eval' => 'datetime',
]
],
'tstamp' => [
'label' => 'tstamp',
'config' => [
'type' => 'input',
'renderType' => 'inputDateTime',
'eval' => 'datetime',
]
],
'sys_language_uid' => [
'exclude' => true,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'special' => 'languages',
'items' => [
[
'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages',
-1,
'flags-multiple'
],
],
'default' => 0,
]
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.l18n_parent',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
['', 0],
],
'foreign_table' => 'tx_news_domain_model_link',
'foreign_table_where' => 'AND tx_news_domain_model_link.pid=###CURRENT_PID### AND tx_news_domain_model_link.sys_language_uid IN (-1,0)',
'default' => 0,
]
],
'l10n_source' => [
'config' => [
'type' => 'passthrough'
]
],
'l10n_diffsource' => [
'config' => [
'type' => 'passthrough',
'default' => ''
]
],
'hidden' => [
'exclude' => true,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.hidden',
'config' => [
'type' => 'check',
'default' => 0
]
],
'title' => [
'exclude' => false,
'label' => $ll . 'tx_news_domain_model_link.title',
'config' => [
'type' => 'input',
'size' => 30,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
]
],
'description' => [
'exclude' => true,
'label' => $ll . 'tx_news_domain_model_link.description',
'config' => [
'type' => 'text',
'cols' => 30,
'rows' => 5,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
]
],
'uri' => [
'exclude' => false,
'label' => $ll . 'tx_news_domain_model_link.uri',
'config' => [
'type' => 'input',
'renderType' => 'inputLink',
'placeholder' => $ll . 'tx_news_domain_model_link.uri.placeholder',
'size' => 30,
'eval' => 'trim,required',
'softref' => 'typolink',
'behaviour' => [
'allowLanguageSynchronization' => true,
],
]
],
],
'types' => [
0 => [
'showitem' => 'uri, --palette--;;paletteCore,title, --palette--;;paletteDescription'
]
],
'palettes' => [
'paletteCore' => [
'showitem' => 'hidden,sys_language_uid,l10n_parent, l10n_diffsource,',
],
'paletteDescription' => [
'showitem' => 'description',
]
]
];

View File

@@ -0,0 +1,866 @@
<?php
defined('TYPO3_MODE') or die();
$ll = 'LLL:EXT:news/Resources/Private/Language/locallang_db.xlf:';
$configuration = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\GeorgRinger\News\Domain\Model\Dto\EmConfiguration::class);
$tx_news_domain_model_news = [
'ctrl' => [
'title' => $ll . 'tx_news_domain_model_news',
'descriptionColumn' => 'notes',
'label' => 'title',
'prependAtCopy' => $configuration->getPrependAtCopy() ? 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.prependAtCopy' : '',
'hideAtCopy' => true,
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'versioningWS' => true,
'origUid' => 't3_origuid',
'editlock' => 'editlock',
'type' => 'type',
'typeicon_column' => 'type',
'typeicon_classes' => [
'default' => 'ext-news-type-default',
'1' => 'ext-news-type-internal',
'2' => 'ext-news-type-external',
],
'useColumnsForDefaultValues' => 'type',
'languageField' => 'sys_language_uid',
'transOrigPointerField' => 'l10n_parent',
'transOrigDiffSourceField' => 'l10n_diffsource',
'translationSource' => 'l10n_source',
'default_sortby' => 'ORDER BY datetime DESC',
'sortby' => ($configuration->getManualSorting() ? 'sorting' : ''),
'delete' => 'deleted',
'enablecolumns' => [
'disabled' => 'hidden',
'starttime' => 'starttime',
'endtime' => 'endtime',
'fe_group' => 'fe_group',
],
'iconfile' => 'EXT:news/Resources/Public/Icons/news_domain_model_news.svg',
'searchFields' => 'uid,title',
],
'columns' => [
'sys_language_uid' => [
'exclude' => true,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'special' => 'languages',
'items' => [
[
'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages',
-1,
'flags-multiple'
],
],
'default' => 0,
]
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.l18n_parent',
'config' => [
'type' => 'group',
'internal_type' => 'db',
'allowed' => 'tx_news_domain_model_news',
'size' => 1,
'maxitems' => 1,
'minitems' => 0,
'default' => 0,
],
],
'l10n_source' => [
'config' => [
'type' => 'passthrough'
]
],
'l10n_diffsource' => [
'config' => [
'type' => 'passthrough',
'default' => ''
]
],
'hidden' => [
'exclude' => true,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.hidden',
'config' => [
'type' => 'check',
'renderType' => 'checkboxToggle',
'default' => 0,
'items' => [
[
0 => '',
1 => '',
]
],
]
],
'cruser_id' => [
'label' => 'cruser_id',
'config' => [
'type' => 'passthrough'
]
],
'pid' => [
'label' => 'pid',
'config' => [
'type' => 'passthrough'
]
],
'crdate' => [
'label' => 'crdate',
'config' => [
'type' => 'input',
'renderType' => 'inputDateTime',
'eval' => 'datetime',
]
],
'tstamp' => [
'label' => 'tstamp',
'config' => [
'type' => 'input',
'renderType' => 'inputDateTime',
'eval' => 'datetime',
]
],
'sorting' => [
'label' => 'sorting',
'config' => [
'type' => 'passthrough',
]
],
'starttime' => [
'exclude' => true,
'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:starttime_formlabel',
'config' => [
'type' => 'input',
'renderType' => 'inputDateTime',
'size' => 16,
'eval' => 'datetime,int',
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
]
],
'endtime' => [
'exclude' => true,
'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:endtime_formlabel',
'config' => [
'type' => 'input',
'renderType' => 'inputDateTime',
'size' => 16,
'eval' => 'datetime,int',
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
]
],
'fe_group' => [
'exclude' => true,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.fe_group',
'config' => [
'type' => 'select',
'renderType' => 'selectMultipleSideBySide',
'size' => 5,
'maxitems' => 20,
'items' => [
[
'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.hide_at_login',
-1,
],
[
'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.any_login',
-2,
],
[
'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.usergroups',
'--div--',
],
],
'exclusiveKeys' => '-1,-2',
'foreign_table' => 'fe_groups',
'foreign_table_where' => 'ORDER BY fe_groups.title',
],
],
'title' => [
'exclude' => false,
'l10n_mode' => 'prefixLangTitle',
'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header_formlabel',
'config' => [
'type' => 'input',
'size' => 60,
'max' => 255,
'eval' => 'required',
]
],
'alternative_title' => [
'exclude' => true,
'label' => $ll . 'tx_news_domain_model_news.alternative_title',
'config' => [
'type' => 'input',
'size' => 30,
]
],
'teaser' => [
'exclude' => true,
'label' => $ll . 'tx_news_domain_model_news.teaser',
'config' => [
'type' => 'text',
'cols' => 60,
'rows' => 5,
'enableRichtext' => $configuration->getRteForTeaser(),
]
],
'bodytext' => [
'exclude' => false,
'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:bodytext_formlabel',
'config' => [
'type' => 'text',
'cols' => 30,
'rows' => 5,
'softref' => 'typolink_tag,email[subst],url',
'enableRichtext' => true,
]
],
'datetime' => [
'exclude' => false,
'label' => $ll . 'tx_news_domain_model_news.datetime',
'config' => [
'type' => 'input',
'renderType' => 'inputDateTime',
'size' => 16,
'eval' => 'datetime,int' . ($configuration->getDateTimeRequired() ? ',required' : ''),
]
],
'archive' => [
'exclude' => true,
'l10n_mode' => 'copy',
'label' => $ll . 'tx_news_domain_model_news.archive',
'config' => [
'type' => 'input',
'renderType' => 'inputDateTime',
'size' => 30,
'eval' => $configuration->getArchiveDate() . ',int',
'default' => 0
]
],
'author' => [
'exclude' => true,
'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.author_formlabel',
'config' => [
'type' => 'input',
'size' => 30,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
]
],
'author_email' => [
'exclude' => true,
'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.author_email_formlabel',
'config' => [
'type' => 'input',
'size' => 30,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
]
],
'categories' => [
'exclude' => true,
'label' => $ll . 'tx_news_domain_model_news.categories',
'config' => [
'type' => 'select',
'renderType' => 'selectTree',
'treeConfig' => [
// 'dataProvider' => \GeorgRinger\News\TreeProvider\DatabaseTreeDataProvider::class,
'parentField' => 'parent',
'appearance' => [
'showHeader' => true,
'expandAll' => true,
'maxLevels' => 99,
],
],
'MM' => 'sys_category_record_mm',
'MM_match_fields' => [
'fieldname' => 'categories',
'tablenames' => 'tx_news_domain_model_news',
],
'MM_opposite_field' => 'items',
'foreign_table' => 'sys_category',
'foreign_table_where' => ' AND (sys_category.sys_language_uid = 0 OR sys_category.l10n_parent = 0) ORDER BY sys_category.sorting',
'size' => 10,
'minitems' => 0,
'maxitems' => 99,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
]
],
'related' => [
'exclude' => true,
'label' => $ll . 'tx_news_domain_model_news.related',
'config' => [
'type' => 'group',
'internal_type' => 'db',
'allowed' => 'tx_news_domain_model_news',
'foreign_table' => 'tx_news_domain_model_news',
'MM_opposite_field' => 'related_from',
'size' => 5,
'minitems' => 0,
'maxitems' => 100,
'MM' => 'tx_news_domain_model_news_related_mm',
'suggestOptions' => [
'default' => [
'suggestOptions' => true,
'addWhere' => ' AND tx_news_domain_model_news.uid != ###THIS_UID###'
]
],
'behaviour' => [
'allowLanguageSynchronization' => true,
],
]
],
'related_from' => [
'exclude' => true,
'label' => $ll . 'tx_news_domain_model_news.related_from',
'config' => [
'type' => 'group',
'internal_type' => 'db',
'foreign_table' => 'tx_news_domain_model_news',
'allowed' => 'tx_news_domain_model_news',
'size' => 5,
'maxitems' => 100,
'MM' => 'tx_news_domain_model_news_related_mm',
'readOnly' => 1,
]
],
'related_links' => [
'exclude' => true,
'label' => $ll . 'tx_news_domain_model_news.related_links',
'config' => [
'type' => 'inline',
'allowed' => 'tx_news_domain_model_link',
'foreign_table' => 'tx_news_domain_model_link',
'foreign_sortby' => 'sorting',
'foreign_field' => 'parent',
'size' => 5,
'minitems' => 0,
'maxitems' => 100,
'appearance' => [
'collapseAll' => true,
'expandSingle' => true,
'levelLinksPosition' => 'bottom',
'useSortable' => true,
'showPossibleLocalizationRecords' => true,
'showRemovedLocalizationRecords' => true,
'showAllLocalizationLink' => true,
'showSynchronizationLink' => true,
'enabledControls' => [
'info' => false,
]
],
'behaviour' => [
'allowLanguageSynchronization' => true,
],
]
],
'type' => [
'exclude' => false,
'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.doktype_formlabel',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
[$ll . 'tx_news_domain_model_news.type.I.0', 0, 'ext-news-type-default'],
[$ll . 'tx_news_domain_model_news.type.I.1', 1, 'ext-news-type-internal'],
[$ll . 'tx_news_domain_model_news.type.I.2', 2, 'ext-news-type-external'],
],
'fieldWizard' => [
'selectIcons' => [
'disabled' => false,
],
],
'size' => 1,
'maxitems' => 1,
]
],
'keywords' => [
'exclude' => true,
'label' => $GLOBALS['TCA']['pages']['columns']['keywords']['label'],
'config' => [
'type' => 'text',
'placeholder' => $ll . 'tx_news_domain_model_news.keywords.placeholder',
'cols' => 30,
'rows' => 5,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
]
],
'description' => [
'exclude' => true,
'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.description_formlabel',
'config' => [
'type' => 'text',
'cols' => 30,
'rows' => 5,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
]
],
'internalurl' => [
'exclude' => false,
'label' => $ll . 'tx_news_domain_model_news.type.I.1',
'config' => [
'type' => 'input',
'renderType' => 'inputLink',
'size' => 30,
'max' => 255,
'eval' => 'trim,required',
'softref' => 'typolink'
]
],
'externalurl' => [
'exclude' => false,
'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.doktype.I.8',
'config' => [
'type' => 'input',
'size' => 50,
'eval' => 'required',
'softref' => 'typolink'
]
],
'istopnews' => [
'exclude' => true,
'label' => $ll . 'tx_news_domain_model_news.istopnews',
'config' => [
'type' => 'check',
'renderType' => 'checkboxToggle',
'default' => 0,
'items' => [
[
0 => '',
1 => '',
]
],
]
],
'editlock' => [
'exclude' => true,
'displayCond' => 'HIDE_FOR_NON_ADMINS',
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_tca.xlf:editlock',
'config' => [
'type' => 'check',
'renderType' => 'checkboxToggle',
'default' => 0,
'items' => [
[
0 => '',
1 => '',
]
],
'behaviour' => [
'allowLanguageSynchronization' => true,
],
]
],
'content_elements' => [
'exclude' => true,
'label' => $ll . 'tx_news_domain_model_news.content_elements',
'config' => [
'type' => 'inline',
'allowed' => 'tt_content',
'foreign_table' => 'tt_content',
'foreign_sortby' => 'sorting',
'foreign_field' => 'tx_news_related_news',
'minitems' => 0,
'maxitems' => 99,
'appearance' => [
'useXclassedVersion' => $configuration->getContentElementPreview(),
'collapseAll' => true,
'expandSingle' => true,
'levelLinksPosition' => 'bottom',
'useSortable' => true,
'showPossibleLocalizationRecords' => true,
'showRemovedLocalizationRecords' => true,
'showAllLocalizationLink' => true,
'showSynchronizationLink' => true,
'enabledControls' => [
'info' => false,
]
],
'behaviour' => [
'allowLanguageSynchronization' => true,
],
]
],
'tags' => [
'exclude' => true,
'label' => $ll . 'tx_news_domain_model_news.tags',
'config' => [
'type' => 'group',
'internal_type' => 'db',
'allowed' => 'tx_news_domain_model_tag',
'MM' => 'tx_news_domain_model_news_tag_mm',
'foreign_table' => 'tx_news_domain_model_tag',
'foreign_table_where' => ' AND (tx_news_domain_model_tag.sys_language_uid IN (-1,0) OR tx_news_domain_model_tag.l10n_parent = 0) ORDER BY tx_news_domain_model_tag.title',
'size' => 10,
'minitems' => 0,
'maxitems' => 99,
'fieldInformation' => [
'tagInformation' => [
'renderType' => 'NewsStaticText',
'options' => [
'labels' => [
[
'label' => '',
'bold' => true,
'italic' => true,
],
],
],
],
],
'suggestOptions' => [
'default' => [
'minimumCharacters' => 2,
'searchWholePhrase' => true,
'receiverClass' => \GeorgRinger\News\Backend\Wizard\SuggestWizardReceiver::class
],
],
'fieldControl' => [
'editPopup' => [
'disabled' => false,
'options' => [
'type' => 'popup',
'title' => $ll . 'tx_news_domain_model_news.tags.edit',
'module' => [
'name' => 'wizard_edit',
],
'popup_onlyOpenIfSelected' => true,
'icon' => 'actions-open',
'JSopenParams' => 'height=350,width=580,status=0,menubar=0,scrollbars=1',
],
],
'listModule' => [
'disabled' => false,
'options' => [
'type' => 'script',
'title' => $ll . 'tx_news_domain_model_news.tags.list',
'icon' => 'actions-system-list-open',
'params' => [
'table' => 'tx_news_domain_model_tag',
'pid' => $configuration->getTagPid(),
],
'module' => [
'name' => 'wizard_list',
],
],
],
],
'behaviour' => [
'allowLanguageSynchronization' => true,
],
],
],
'path_segment' => [
'label' => $ll . 'tx_news_domain_model_news.path_segment',
'displayCond' => 'VERSION:IS:false',
'config' => [
'type' => 'slug',
'size' => 50,
'generatorOptions' => [
'fields' => ['title'],
'replacements' => [
'/' => '-'
],
],
'fallbackCharacter' => '-',
'eval' => $configuration->getSlugBehaviour(),
'default' => ''
]
],
'import_id' => [
'label' => $ll . 'tx_news_domain_model_news.import_id',
'config' => [
'type' => 'passthrough'
]
],
'import_source' => [
'label' => $ll . 'tx_news_domain_model_news.import_source',
'config' => [
'type' => 'passthrough'
]
],
'fal_media' => [
'exclude' => true,
'label' => $ll . 'tx_news_domain_model_news.fal_media',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'fal_media',
[
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'appearance' => [
'createNewRelationLinkTitle' => $ll . 'tx_news_domain_model_news.fal_media.add',
'showPossibleLocalizationRecords' => true,
'showRemovedLocalizationRecords' => true,
'showAllLocalizationLink' => true,
'showSynchronizationLink' => true
],
'foreign_match_fields' => [
'fieldname' => 'fal_media',
'tablenames' => 'tx_news_domain_model_news',
'table_local' => 'sys_file',
],
// custom configuration for displaying fields in the overlay/reference table
// to use the newsPalette and imageoverlayPalette instead of the basicoverlayPalette
'overrideChildTca' => [
'types' => [
\TYPO3\CMS\Core\Resource\File::FILETYPE_UNKNOWN => [
'showitem' => '
--palette--;LLL:EXT:core/Resources/Private/Language/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;newsPalette,
--palette--;;imageoverlayPalette,
--palette--;;filePalette'
],
\TYPO3\CMS\Core\Resource\File::FILETYPE_TEXT => [
'showitem' => '
--palette--;LLL:EXT:core/Resources/Private/Language/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;newsPalette,
--palette--;;imageoverlayPalette,
--palette--;;filePalette'
],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
--palette--;LLL:EXT:core/Resources/Private/Language/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;newsPalette,
--palette--;;imageoverlayPalette,
--palette--;;filePalette'
],
\TYPO3\CMS\Core\Resource\File::FILETYPE_AUDIO => [
'showitem' => '
--palette--;LLL:EXT:core/Resources/Private/Language/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;newsPalette,
--palette--;;audioOverlayPalette,
--palette--;;filePalette'
],
\TYPO3\CMS\Core\Resource\File::FILETYPE_VIDEO => [
'showitem' => '
--palette--;LLL:EXT:core/Resources/Private/Language/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;newsPalette,
--palette--;;videoOverlayPalette,
--palette--;;filePalette'
],
\TYPO3\CMS\Core\Resource\File::FILETYPE_APPLICATION => [
'showitem' => '
--palette--;LLL:EXT:core/Resources/Private/Language/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;newsPalette,
--palette--;;imageoverlayPalette,
--palette--;;filePalette'
]
],
],
],
$GLOBALS['TYPO3_CONF_VARS']['SYS']['mediafile_ext']
)
],
'fal_related_files' => [
'exclude' => true,
'label' => $ll . 'tx_news_domain_model_news.fal_related_files',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'fal_related_files',
[
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'appearance' => [
'createNewRelationLinkTitle' => $ll . 'tx_news_domain_model_news.fal_related_files.add',
'showPossibleLocalizationRecords' => true,
'showRemovedLocalizationRecords' => true,
'showAllLocalizationLink' => true,
'showSynchronizationLink' => true
],
'inline' => [
'inlineOnlineMediaAddButtonStyle' => 'display:none'
],
'foreign_match_fields' => [
'fieldname' => 'fal_related_files',
'tablenames' => 'tx_news_domain_model_news',
'table_local' => 'sys_file',
],
]
)
],
'notes' => [
'label' => $ll . 'notes',
'config' => [
'type' => 'text',
'rows' => 10,
'cols' => 48
]
],
],
'types' => [
// default news
'0' => [
'showitem' => '
--palette--;;paletteCore,title,--palette--;;paletteSlug,teaser,
--palette--;;paletteDate,
bodytext,
--div--;' . $ll . 'tx_news_domain_model_news.content_elements,
content_elements,
--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.media,
fal_media,fal_related_files,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
categories,
--div--;' . $ll . 'tx_news_domain_model_news.tabs.relations,
related,related_from,
related_links,tags,
--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.tabs.metadata,
--palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.palettes.editorial;paletteAuthor,
--palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.palettes.metatags;metatags,
--palette--;' . $ll . 'tx_news_domain_model_news.palettes.alternativeTitles;alternativeTitles,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
--palette--;;paletteLanguage,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
--palette--;;paletteHidden,
--palette--;;paletteAccess,
--div--;' . $ll . 'notes,
notes,
--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.tabs.extended,'
],
// internal url
'1' => [
'showitem' => '
--palette--;;paletteCore,title,--palette--;;paletteSlug,teaser,
internalurl,
--palette--;;paletteDate,
--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.media,
fal_media,fal_related_files,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
categories,
--div--;' . $ll . 'tx_news_domain_model_news.tabs.relations,
related,related_from,
related_links,tags,
--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.tabs.metadata,
--palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.palettes.editorial;paletteAuthor,
--palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.palettes.metatags;metatags,
--palette--;' . $ll . 'tx_news_domain_model_news.palettes.alternativeTitles;alternativeTitles,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
--palette--;;paletteLanguage,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
--palette--;;paletteHidden,
--palette--;;paletteAccess,
--div--;' . $ll . 'notes,
notes,
--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.tabs.extended,'
],
// external url
'2' => [
'showitem' => '
--palette--;;paletteCore,title,--palette--;;paletteSlug,teaser,
externalurl,
--palette--;;paletteDate,
--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.media,
fal_media,fal_related_files,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
categories,
--div--;' . $ll . 'tx_news_domain_model_news.tabs.relations,
related,related_from,
related_links,tags,
--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.tabs.metadata,
--palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.palettes.editorial;paletteAuthor,
--palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.palettes.metatags;metatags,
--palette--;' . $ll . 'tx_news_domain_model_news.palettes.alternativeTitles;alternativeTitles,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
--palette--;;paletteLanguage,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
--palette--;;paletteHidden,
--palette--;;paletteAccess,
--div--;' . $ll . 'notes,
notes,
--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.tabs.extended,'
],
],
'palettes' => [
'paletteAuthor' => [
'showitem' => 'author,author_email,',
],
'paletteDate' => [
'label' => $ll . 'tx_news_domain_model_news.palettes.dates',
'showitem' => 'datetime,archive,',
],
'paletteCore' => [
'showitem' => 'type,istopnews,',
],
'metatags' => [
'showitem' => 'keywords,description,',
],
'alternativeTitles' => [
'showitem' => 'alternative_title',
],
'paletteHidden' => [
'showitem' => '
hidden
',
],
'paletteAccess' => [
'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access',
'showitem' => '
starttime;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:starttime_formlabel,
endtime;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:endtime_formlabel,
--linebreak--,
fe_group;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:fe_group_formlabel,
--linebreak--,editlock
',
],
'paletteLanguage' => [
'showitem' => '
sys_language_uid;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:sys_language_uid_formlabel,l10n_parent, l10n_diffsource,
',
],
'paletteSlug' => [
'showitem' => '
path_segment
',
],
]
];
// category restriction based on settings in extension manager
$categoryRestrictionSetting = $configuration->getCategoryRestriction();
if ($categoryRestrictionSetting) {
$categoryRestriction = '';
switch ($categoryRestrictionSetting) {
case 'current_pid':
$categoryRestriction = ' AND sys_category.pid=###CURRENT_PID### ';
break;
case 'siteroot':
$categoryRestriction = ' AND sys_category.pid IN (###SITEROOT###) ';
break;
case 'page_tsconfig':
$categoryRestriction = ' AND sys_category.pid IN (###PAGE_TSCONFIG_IDLIST###) ';
break;
default:
$categoryRestriction = '';
}
// prepend category restriction at the beginning of foreign_table_where
if (!empty($categoryRestriction)) {
$tx_news_domain_model_news['columns']['categories']['config']['foreign_table_where'] = $categoryRestriction .
$tx_news_domain_model_news['columns']['categories']['config']['foreign_table_where'];
}
}
if (!$configuration->getContentElementRelation()) {
unset($tx_news_domain_model_news['columns']['content_elements']);
}
return $tx_news_domain_model_news;

View File

@@ -0,0 +1,195 @@
<?php
defined('TYPO3_MODE') or die();
$ll = 'LLL:EXT:news/Resources/Private/Language/locallang_db.xlf:';
$configuration = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\GeorgRinger\News\Domain\Model\Dto\EmConfiguration::class);
return [
'ctrl' => [
'title' => $ll . 'tx_news_domain_model_tag',
'descriptionColumn' => 'notes',
'label' => 'title',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'versioningWS' => true,
'languageField' => 'sys_language_uid',
'transOrigPointerField' => 'l10n_parent',
'transOrigDiffSourceField' => 'l10n_diffsource',
'translationSource' => 'l10n_source',
'default_sortby' => 'ORDER BY title',
'delete' => 'deleted',
'enablecolumns' => [
'disabled' => 'hidden',
],
'typeicon_classes' => [
'default' => 'ext-news-tag'
],
'searchFields' => 'uid,title',
],
'columns' => [
'sys_language_uid' => [
'exclude' => true,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'special' => 'languages',
'items' => [
[
'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages',
-1,
'flags-multiple'
],
],
'default' => 0,
]
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.l18n_parent',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
['', 0],
],
'foreign_table' => 'tx_news_domain_model_tag',
'foreign_table_where' => 'AND tx_news_domain_model_tag.pid=###CURRENT_PID### AND tx_news_domain_model_tag.sys_language_uid IN (-1,0)',
'fieldWizard' => [
'selectIcons' => [
'disabled' => true,
],
],
'default' => 0,
]
],
'l10n_source' => [
'config' => [
'type' => 'passthrough'
]
],
'l10n_diffsource' => [
'config' => [
'type' => 'passthrough',
'default' => ''
]
],
'pid' => [
'label' => 'pid',
'config' => [
'type' => 'passthrough'
]
],
'crdate' => [
'label' => 'crdate',
'config' => [
'type' => 'input',
'renderType' => 'inputDateTime',
'eval' => 'datetime',
]
],
'tstamp' => [
'label' => 'tstamp',
'config' => [
'type' => 'input',
'renderType' => 'inputDateTime',
'eval' => 'datetime',
]
],
'hidden' => [
'exclude' => true,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.hidden',
'config' => [
'type' => 'check',
'default' => 0
]
],
'title' => [
'exclude' => false,
'label' => $ll . 'tx_news_domain_model_tag.title',
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'required,unique,trim',
]
],
'slug' => [
'exclude' => true,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_tca.xlf:pages.slug',
'displayCond' => 'VERSION:IS:false',
'config' => [
'type' => 'slug',
'size' => 50,
'generatorOptions' => [
'fields' => ['title'],
'replacements' => [
'/' => '-'
],
],
'fallbackCharacter' => '-',
'eval' => $configuration->getSlugBehaviour(),
'default' => ''
]
],
'seo_headline' => [
'exclude' => true,
'label' => $ll . 'tx_news_domain_model_tag.seo.seo_headline',
'config' => [
'type' => 'input',
],
],
'seo_title' => [
'exclude' => true,
'label' => $ll . 'tx_news_domain_model_tag.seo.seo_title',
'config' => [
'type' => 'input',
],
],
'seo_description' => [
'exclude' => true,
'label' => $ll . 'tx_news_domain_model_tag.seo.seo_description',
'config' => [
'type' => 'text',
],
],
'seo_text' => [
'exclude' => true,
'label' => $ll . 'tx_news_domain_model_tag.seo.seo_text',
'config' => [
'type' => 'text',
'enableRichtext' => true,
],
],
'notes' => [
'label' => $ll . 'notes',
'config' => [
'type' => 'text',
'rows' => 10,
'cols' => 48
]
],
],
'types' => [
0 => [
'showitem' => 'title, slug, --palette--;;paletteCore,
--div--;' . $ll . 'tx_news_domain_model_tag.tabs.seo, seo_title, seo_description, seo_headline, seo_text,
--div--;' . $ll . 'notes,
notes,
--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.tabs.extended,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
--palette--;;paletteLanguage,'
]
],
'palettes' => [
'paletteCore' => [
'showitem' => 'hidden,',
],
'paletteLanguage' => [
'showitem' => '
sys_language_uid;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:sys_language_uid_formlabel,l10n_parent, l10n_diffsource,
',
],
]
];

View File

@@ -0,0 +1,14 @@
tx_news.module {
filters {
searchWord = 1
timeRestriction = 1
topNewsRestriction = 1
hidden = 1
archived = 1
sortingField = 1
number = 1
categories = 1
categoryConjunction = 1
includeSubCategories = 1
}
}

View File

@@ -0,0 +1,13 @@
mod.wizards.newContentElement.wizardItems.plugins {
elements {
news {
iconIdentifier = ext-news-wizard-icon
title = LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:pi1_title
description = LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:pi1_plus_wiz_description
tt_content_defValues {
CType = list
list_type = news_pi1
}
}
}
}

View File

@@ -0,0 +1,4 @@
mod.linkvalidator.searchFields {
tx_news_domain_model_news = bodytext,internalurl,externalurl
tx_news_domain_model_link = uri
}

View File

@@ -0,0 +1,2 @@
mod.web_list.allowedNewTables := addToList(tx_news_domain_model_news,sys_note,tx_news_domain_model_tag)

View File

@@ -0,0 +1,97 @@
mod.guide.tours.TxNewsAdministrationModule {
title = LLL:EXT:news/Resources/Private/Language/Tours.xlf:adminModule.title
description = LLL:EXT:news/Resources/Private/Language/Tours.xlf:adminModule.description
moduleName = web_NewsAdministration
iconIdentifier = ext-news-type-default
steps {
# General
10 {
selector = h1
title = LLL:EXT:news/Resources/Private/Language/Tours.xlf:adminModule.general.title
content = LLL:EXT:news/Resources/Private/Language/Tours.xlf:adminModule.general.content
placement = bottom
showArrow = true
}
# Filter
20 {
selector = .icon-actions-filter
title = LLL:EXT:news/Resources/Private/Language/Tours.xlf:adminModule.filter.title
content = LLL:EXT:news/Resources/Private/Language/Tours.xlf:adminModule.filter.content
placement = right
showArrow = true
}
21 {
selector = .icon-actions-filter
title = LLL:EXT:news/Resources/Private/Language/Tours.xlf:adminModule.filter2.title
content = LLL:EXT:news/Resources/Private/Language/Tours.xlf:adminModule.filter2.content
placement = right
showArrow = true
}
31 {
selector = #searchWord
title = LLL:EXT:news/Resources/Private/Language/Tours.xlf:adminModule.searchWord.title
content = LLL:EXT:news/Resources/Private/Language/Tours.xlf:adminModule.searchWord.content
placement = right
showArrow = true
}
32 {
selector = #timeRestriction
title = LLL:EXT:news/Resources/Private/Language/Tours.xlf:adminModule.timeRestriction.title
content = LLL:EXT:news/Resources/Private/Language/Tours.xlf:adminModule.timeRestriction.content
placement = right
showArrow = true
}
33 {
selector = #topNewsRestriction
title = LLL:EXT:news/Resources/Private/Language/Tours.xlf:adminModule.topNewsRestriction.title
content = LLL:EXT:news/Resources/Private/Language/Tours.xlf:adminModule.topNewsRestriction.content
placement = right
showArrow = true
}
34 {
selector = #sortingField
title = LLL:EXT:news/Resources/Private/Language/Tours.xlf:adminModule.sortingField.title
content = LLL:EXT:news/Resources/Private/Language/Tours.xlf:adminModule.sortingField.content
placement = right
showArrow = true
}
35 {
selector = #recursive
title = LLL:EXT:news/Resources/Private/Language/Tours.xlf:adminModule.recursive.title
content = LLL:EXT:news/Resources/Private/Language/Tours.xlf:adminModule.recursive.content
placement = right
showArrow = true
}
36 {
selector = .category-tree
title = LLL:EXT:news/Resources/Private/Language/Tours.xlf:adminModule.categoryTree.title
content = LLL:EXT:news/Resources/Private/Language/Tours.xlf:adminModule.categoryTree.content
placement = left
showArrow = true
}
37 {
selector = #categoryConjunction
title = LLL:EXT:news/Resources/Private/Language/Tours.xlf:adminModule.categoryConjunction.title
content = LLL:EXT:news/Resources/Private/Language/Tours.xlf:adminModule.categoryConjunction.content
placement = left
showArrow = true
}
100 {
selector = .t3-js-jumpMenuBox
title = LLL:EXT:news/Resources/Private/Language/Tours.xlf:adminModule.actionSwitch.title
content = LLL:EXT:news/Resources/Private/Language/Tours.xlf:adminModule.actionSwitch.content
placement = right
showArrow = true
}
}
}

View File

@@ -0,0 +1,2 @@
# Important: This file is deprecated and will removed with EXT:news 10.x
@import 'EXT:news/Configuration/TypoScript/Sitemap/constants.typoscript'

View File

@@ -0,0 +1,13 @@
# customsubcategory=sitemap=News sitemap settings
plugin.tx_news.settings.sitemap {
# cat=plugin.tx_news/sitemap/0010; type=int+; label=Sitemap startingpoint
startingpoint =
# cat=plugin.tx_news/sitemap/0020; type=int+; label=Detail view page UID for sitemap
detailPid =
# cat=plugin.tx_news/sitemap/0030; type=int+; label=Recursion level of startingpoint for sitemap
recursive = 0
# cat=plugin.tx_news/sitemap/0040; type=int+; label=Limit of news to list in the sitemap
limit = 1000
# cat=plugin.tx_news/sitemap/0050; type=int+; label=Page type for the sitemap
typeNumber = 1426844832
}

View File

@@ -0,0 +1,2 @@
# Important: This file is deprecated and will removed with EXT:news 10.x
@import 'EXT:news/Configuration/TypoScript/Sitemap/setup.typoscript'

View File

@@ -0,0 +1,65 @@
tx_news_sitemap = PAGE
tx_news_sitemap {
typeNum = {$plugin.tx_news.settings.sitemap.typeNumber}
config {
disableAllHeaderCode = 1
xhtml_cleaning = none
admPanel = 0
debug = 0
disablePrefixComment = 1
metaCharset = utf-8
additionalHeaders = Content-Type:text/xml;charset=utf-8
additionalHeaders.10.header = Content-Type:text/xml;charset=utf-8
}
wrap = <?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">|</urlset>
10 = CONTENT
10 {
table = tx_news_domain_model_news
select {
pidInList = {$plugin.tx_news.settings.sitemap.startingpoint}
recursive = {$plugin.tx_news.settings.sitemap.recursive}
selectFields = uid,pid,tstamp,sys_language_uid,l10n_parent
orderBy = tstamp DESC
max = {$plugin.tx_news.settings.sitemap.limit}
languageField = sys_language_uid
where = type=0
}
renderObj = COA
renderObj {
wrap = <url>|</url>
10 = COA
10 {
wrap = <loc>|</loc>
10 = COA
10 {
# htmlSpecialChar on the link to encode ampersand
stdWrap.htmlSpecialChars = 1
10 = TEXT
10 {
typolink {
parameter = {$plugin.tx_news.settings.sitemap.detailPid}
forceAbsoluteUrl = 1
returnLast = url
additionalParams.field = uid
additionalParams.wrap = &tx_news_pi1[news]=|
}
}
}
}
20 = TEXT
20.wrap = <lastmod>|</lastmod>
20.field = tstamp
20.date = Y-m-d
}
}
# Add more news urls in the same sitemap
# from other page with a different detail view page if needed
#20 < .10
#20.select.pidInList = Startingpoint
#20.select.recursive = 0
#20.renderObj.10.10.10.typolink.parameter = Detail pid
}

View File

@@ -0,0 +1,2 @@
# Important: This file is deprecated and will removed with EXT:news 10.x
@import 'EXT:news/Configuration/TypoScript/Styles/Twb/constants.typoscript'

View File

@@ -0,0 +1,10 @@
plugin.tx_news {
view.twb {
# cat=plugin.tx_news/file; type=string; label=Path to template root (FE)
templateRootPath = EXT:news/Resources/Private/Templates/Styles/Twb/Templates
# cat=plugin.tx_news/file; type=string; label=Path to template partials (FE)
partialRootPath = EXT:news/Resources/Private/Templates/Styles/Twb/Partials/
# cat=plugin.tx_news/file; type=string; label=Path to template layouts (FE)
layoutRootPath = EXT:news/Resources/Private/Templates/Styles/Twb/Layouts/
}
}

View File

@@ -0,0 +1,2 @@
# Important: This file is deprecated and will removed with EXT:news 10.x
@import 'EXT:news/Configuration/TypoScript/Styles/Twb/setup.typoscript'

View File

@@ -0,0 +1,35 @@
plugin.tx_news {
view {
templateRootPaths {
0 = EXT:news/Resources/Private/Templates/
1 = EXT:news/Resources/Private/Templates/Styles/Twb/Templates
2 = {$plugin.tx_news.view.twb.templateRootPath}
}
partialRootPaths {
0 = EXT:news/Resources/Private/Partials/
1 = EXT:news/Resources/Private/Templates/Styles/Twb/Partials/
2 = {$plugin.tx_news.view.twb.partialRootPath}
}
layoutRootPaths {
0 = EXT:news/Resources/Private/Layouts/
1 = EXT:news/Resources/Private/Templates/Styles/Twb/Layouts/
2 = {$plugin.tx_news.view.twb.layoutRootPath}
}
widget.GeorgRinger\News\ViewHelpers\Widget\PaginateViewHelper.templateRootPath = EXT:news/Resources/Private/Templates/Styles/Twb/Templates/
}
settings {
list {
media {
image >
image {
lazyLoading = {$styles.content.image.lazyLoading}
width = 300
}
}
}
}
}

View File

@@ -0,0 +1,10 @@
plugin.tx_news {
view.twb5 {
# cat=plugin.tx_news/file; type=string; label=Path to template root (FE)
templateRootPath = EXT:news/Resources/Private/Templates/Styles/Twb5/Templates
# cat=plugin.tx_news/file; type=string; label=Path to template partials (FE)
partialRootPath = EXT:news/Resources/Private/Templates/Styles/Twb5/Partials/
# cat=plugin.tx_news/file; type=string; label=Path to template layouts (FE)
layoutRootPath = EXT:news/Resources/Private/Templates/Styles/Twb5/Layouts/
}
}

View File

@@ -0,0 +1,35 @@
plugin.tx_news {
view {
templateRootPaths {
0 = EXT:news/Resources/Private/Templates/
1 = EXT:news/Resources/Private/Templates/Styles/Twb5/Templates
2 = {$plugin.tx_news.view.twb5.templateRootPath}
}
partialRootPaths {
0 = EXT:news/Resources/Private/Partials/
1 = EXT:news/Resources/Private/Templates/Styles/Twb5/Partials/
2 = {$plugin.tx_news.view.twb5.partialRootPath}
}
layoutRootPaths {
0 = EXT:news/Resources/Private/Layouts/
1 = EXT:news/Resources/Private/Templates/Styles/Twb5/Layouts/
2 = {$plugin.tx_news.view.twb5.layoutRootPath}
}
widget.GeorgRinger\News\ViewHelpers\Widget\PaginateViewHelper.templateRootPath = EXT:news/Resources/Private/Templates/Styles/Twb5/Templates/
}
settings {
list {
media {
image >
image {
lazyLoading = {$styles.content.image.lazyLoading}
width = 300
}
}
}
}
}

View File

@@ -0,0 +1,2 @@
# Important: This file is deprecated and will removed with EXT:news 10.x
@import 'EXT:news/Configuration/TypoScript/constants.typoscript'

View File

@@ -0,0 +1,36 @@
plugin.tx_news {
rss.channel {
title = Dummy Title
description =
link = http://example.com
language = en-gb
copyright = TYPO3 News
category =
generator = TYPO3 EXT:news
typeNum = 9818
}
opengraph {
site_name =
twitter {
card = summary
site =
creator =
}
}
view {
# cat=plugin.tx_news/file; type=string; label=Path to template root (FE)
templateRootPath = EXT:news/Resources/Private/Templates/
# cat=plugin.tx_news/file; type=string; label=Path to template partials (FE)
partialRootPath = EXT:news/Resources/Private/Partials/
# cat=plugin.tx_news/file; type=string; label=Path to template layouts (FE)
layoutRootPath = EXT:news/Resources/Private/Layouts/
}
settings {
# cat=plugin.tx_news/file; type=string; label=Path to CSS file
cssFile = EXT:news/Resources/Public/Css/news-basic.css
}
}

View File

@@ -0,0 +1,2 @@
# Important: This file is deprecated and will removed with EXT:news 10.x
@import 'EXT:news/Configuration/TypoScript/setup.typoscript'

View File

@@ -0,0 +1,263 @@
# ==============================================
# FE-Plugin configuration for EXT:news
# ==============================================
plugin.tx_news {
mvc.callDefaultActionIfActionCantBeResolved = 1
view {
templateRootPaths {
0 = EXT:news/Resources/Private/Templates/
1 = {$plugin.tx_news.view.templateRootPath}
}
partialRootPaths {
0 = EXT:news/Resources/Private/Partials/
1 = {$plugin.tx_news.view.partialRootPath}
}
layoutRootPaths {
0 = EXT:news/Resources/Private/Layouts/
1 = {$plugin.tx_news.view.layoutRootPath}
}
widget.GeorgRinger\News\ViewHelpers\Widget\PaginateViewHelper.templateRootPath = EXT:news/Resources/Private/Templates/
}
# Modify the translation
#_LOCAL_LANG {
# default {
# more-link = more >>
# }
#}
# ====================================
# Settings available inside Controller and View by accessing $this->settings or {settings.xyz}
# ====================================
settings {
cssFile = {$plugin.tx_news.settings.cssFile}
#Displays a dummy image if the news have no media items
displayDummyIfNoMedia = 1
# Output format
format = html
# general settings
overrideFlexformSettingsIfEmpty = cropMaxCharacters,dateField,timeRestriction,timeRestrictionHigh,archiveRestriction,orderBy,orderDirection,backPid,listPid,startingpoint,recursive,list.paginate.itemsPerPage,list.paginate.templatePath
allowEmptyStringsForOverwriteDemand = 0
includeSubCategories = 0
analytics {
social {
facebookLike = 1
facebookShare = 1
twitter = 1
}
}
detailPidDetermination = flexform, categories, default
defaultDetailPid = 0
dateField = datetime
link {
typesOpeningInNewWindow = 2
hrDate = 0
hrDate {
day = j
month = n
year = Y
}
}
cropMaxCharacters = 150
orderBy = datetime
orderDirection = desc
topNewsFirst = 0
orderByAllowed = sorting,author,uid,title,teaser,author,tstamp,crdate,datetime,categories.title
facebookLocale = en_US
googlePlusLocale = en
demandClass =
# --------------
# Search
# --------------
search {
fields = teaser,title,bodytext
splitSearchWord = 0
}
# --------------
# Detail
# --------------
detail {
errorHandling = showStandaloneTemplate,EXT:news/Resources/Private/Templates/News/DetailNotFound.html,404
checkPidOfNewsRecord = 0
registerProperties = keywords,title
showPrevNext = 0
showSocialShareButtons = 1
showMetaTags = 1
# media configuration
media {
image {
lazyLoading = {$styles.content.image.lazyLoading}
maxWidth = 282
maxHeight =
# Get lightbox settings from fluid_styled_content
lightbox {
enabled = {$styles.content.textmedia.linkWrap.lightboxEnabled}
class = {$styles.content.textmedia.linkWrap.lightboxCssClass}
width = {$styles.content.textmedia.linkWrap.width}
height = {$styles.content.textmedia.linkWrap.height}
rel = lightbox[myImageSet]
}
}
video {
width = 282
height = 159
}
}
pageTitle = 1
pageTitle {
provider = GeorgRinger\News\Seo\NewsTitleProvider
properties = title,teaser
}
}
# --------------
# List
# --------------
list {
# media configuration
media {
image {
lazyLoading = {$styles.content.image.lazyLoading}
maxWidth = 100
maxHeight = 100
}
dummyImage = EXT:news/Resources/Public/Images/dummy-preview-image.png
}
# Paginate configuration.
paginate {
class = GeorgRinger\NumberedPagination\NumberedPagination
itemsPerPage = 10
insertAbove = 1
insertBelow = 1
maximumNumberOfLinks = 3
}
rss {
channel {
title = {$plugin.tx_news.rss.channel.title}
description = {$plugin.tx_news.rss.channel.description}
language = {$plugin.tx_news.rss.channel.language}
copyright = {$plugin.tx_news.rss.channel.copyright}
generator = {$plugin.tx_news.rss.channel.generator}
link = {$plugin.tx_news.rss.channel.link}
typeNum = {$plugin.tx_news.rss.channel.typeNum}
}
}
}
# Opengraph implementation
opengraph {
site_name = {$plugin.tx_news.opengraph.site_name}
type = article
admins =
locale =
twitter {
card = {$plugin.tx_news.opengraph.twitter.card}
site = {$plugin.tx_news.opengraph.twitter.site}
creator = {$plugin.tx_news.opengraph.twitter.creator}
}
}
}
}
# Rendering of content elements in detail view
lib.tx_news.contentElementRendering = RECORDS
lib.tx_news.contentElementRendering {
tables = tt_content
source.current = 1
dontCheckPid = 1
}
# Rendering of news, displayed by "Insert Record" content element
tt_content.shortcut.20.tables := addToList(tx_news_domain_model_news)
tt_content.shortcut.20.conf.tx_news_domain_model_news = USER
tt_content.shortcut.20.conf.tx_news_domain_model_news {
userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
extensionName = News
pluginName = Pi1
vendorName = GeorgRinger
switchableControllerActions {
News {
1 = detail
}
}
settings =< plugin.tx_news.settings
settings {
singleNews.field = uid
useStdWrap = singleNews
insertRecord = 1
isShortcut = 1
}
}
# For fluid_styled_content
tt_content.shortcut.variables.shortcuts.tables := addToList(tx_news_domain_model_news)
tt_content.shortcut.variables.shortcuts.conf.tx_news_domain_model_news < tt_content.shortcut.20.conf.tx_news_domain_model_news
# ==============================================
# BE-module configuration for EXT:news
# ==============================================
module.tx_news < plugin.tx_news
module.tx_news {
settings.list.paginate.itemsPerPage = 25
}
# ==============================================
# Persistence object mapping configuration
# ==============================================
config.tx_extbase.persistence.classes {
GeorgRinger\News\Domain\Model\News {
subclasses {
0 = GeorgRinger\News\Domain\Model\NewsDefault
1 = GeorgRinger\News\Domain\Model\NewsInternal
2 = GeorgRinger\News\Domain\Model\NewsExternal
}
}
GeorgRinger\News\Domain\Model\NewsDefault {
mapping {
recordType = 0
tableName = tx_news_domain_model_news
}
}
GeorgRinger\News\Domain\Model\NewsInternal {
mapping {
recordType = 1
tableName = tx_news_domain_model_news
}
}
GeorgRinger\News\Domain\Model\NewsExternal {
mapping {
recordType = 2
tableName = tx_news_domain_model_news
}
}
}