Initial Commit
This commit is contained in:
1 parent
4f495177e4
commit
b6d2142214
166 files changed
+13952
-178
No files matched your search
@@ -0,0 +1,4 @@
|
||||
contentBlocks:
|
||||
paths:
|
||||
# Register all content elements under ContentBlocks/ContentElements
|
||||
- 'EXT:vitec/ContentBlocks/ContentElements/'
|
||||
@@ -0,0 +1,103 @@
|
||||
#
|
||||
# Extension Builder settings for extension vitec
|
||||
# generated 2025-01-13T15:54:51Z
|
||||
#
|
||||
# See http://www.yaml.org/spec/1.2/spec.html
|
||||
#
|
||||
|
||||
############# Overwrite settings ###########
|
||||
#
|
||||
# These settings only apply, if the roundtrip feature of the extension builder
|
||||
# is enabled in the extension manager
|
||||
#
|
||||
# Usage:
|
||||
# nesting reflects the file structure
|
||||
# a setting applies to a file or recursive to all files and subfolders
|
||||
#
|
||||
# merge:
|
||||
# means for classes: All properties, methods and method bodies
|
||||
# of the existing class will be modified according to the new settings
|
||||
# but not overwritten
|
||||
#
|
||||
# for locallang.xlf files: Existing keys and labels are always
|
||||
# preserved (renaming a property or DomainObject will result in new keys and new labels)
|
||||
#
|
||||
# for other files: You will find a Split token at the end of the file
|
||||
# see: \EBT\ExtensionBuilder\Service\RoundTrip::SPLIT_TOKEN
|
||||
#
|
||||
# After this token you can write whatever you want and it will be appended
|
||||
# everytime the code is generated
|
||||
#
|
||||
# keep:
|
||||
# files are never overwritten
|
||||
# These settings may break the functionality of the extension builder!
|
||||
# Handle with care!
|
||||
|
||||
############# Extension settings ###########
|
||||
|
||||
overwriteSettings:
|
||||
Classes:
|
||||
Controller: merge
|
||||
Domain:
|
||||
Model: merge
|
||||
Repository: merge
|
||||
|
||||
Configuration:
|
||||
# TCA merge not possible - use overrides directory
|
||||
#TypoScript: keep
|
||||
|
||||
Resources:
|
||||
Private:
|
||||
#Language: merge
|
||||
#Layouts: keep
|
||||
#Partials: keep
|
||||
#Templates: keep
|
||||
Backend:
|
||||
#Layouts: keep
|
||||
#Partials: keep
|
||||
#Templates: keep
|
||||
|
||||
user_extension.svg: keep
|
||||
#ext_localconf.php: merge
|
||||
#ext_tables.php: merge
|
||||
#ext_tables.sql: merge
|
||||
|
||||
## add declare strict types in php files
|
||||
declareStrictTypes: true
|
||||
|
||||
## use static date attribute in xliff files
|
||||
#staticDateInXliffFiles: '2025-01-13T15:54:51Z'
|
||||
|
||||
## skip docComment (license header)
|
||||
#skipDocComment: false
|
||||
|
||||
## list of error codes for warnings that should be ignored
|
||||
#ignoreWarnings:
|
||||
#503
|
||||
|
||||
############# settings for classBuilder #######################
|
||||
#
|
||||
# here you may define default parent classes for your classes
|
||||
# these settings only apply for new generated classes
|
||||
# you may also just change the parent class in the generated class file.
|
||||
# It will be kept on next code generation, if the overwrite settings
|
||||
# are configured to merge it
|
||||
#
|
||||
#################################################################
|
||||
|
||||
classBuilder:
|
||||
|
||||
Controller:
|
||||
parentClass: \TYPO3\CMS\Extbase\Mvc\Controller\ActionController
|
||||
|
||||
Model:
|
||||
AbstractEntity:
|
||||
parentClass: \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
|
||||
|
||||
AbstractValueObject:
|
||||
parentClass: \TYPO3\CMS\Extbase\DomainObject\AbstractValueObject
|
||||
|
||||
Repository:
|
||||
parentClass: \TYPO3\CMS\Extbase\Persistence\Repository
|
||||
|
||||
setDefaultValuesForClassProperties: true
|
||||
@@ -0,0 +1,65 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<T3DataStructure>
|
||||
<meta>
|
||||
<langDisable>1</langDisable>
|
||||
</meta>
|
||||
<sheets>
|
||||
<sDEF>
|
||||
<ROOT>
|
||||
<TCEforms>
|
||||
<sheetTitle>General Settings</sheetTitle>
|
||||
</TCEforms>
|
||||
<type>array</type>
|
||||
<el>
|
||||
<settings.showFilter>
|
||||
<TCEforms>
|
||||
<label>Show Filter</label>
|
||||
<config>
|
||||
<type>check</type>
|
||||
<default>1</default>
|
||||
</config>
|
||||
</TCEforms>
|
||||
</settings.showFilter>
|
||||
|
||||
<settings.showSearch>
|
||||
<TCEforms>
|
||||
<label>Show Search</label>
|
||||
<config>
|
||||
<type>check</type>
|
||||
<default>1</default>
|
||||
</config>
|
||||
</TCEforms>
|
||||
</settings.showSearch>
|
||||
|
||||
<settings.itemsPerPage>
|
||||
<TCEforms>
|
||||
<label>Items per Page</label>
|
||||
<config>
|
||||
<type>number</type>
|
||||
<default>20</default>
|
||||
</config>
|
||||
</TCEforms>
|
||||
</settings.itemsPerPage>
|
||||
|
||||
<settings.defaultCategory>
|
||||
<TCEforms>
|
||||
<label>Default Category</label>
|
||||
<config>
|
||||
<type>select</type>
|
||||
<renderType>selectSingle</renderType>
|
||||
<foreign_table>tx_vitec_domain_model_downloadcategory</foreign_table>
|
||||
<foreign_table_where>ORDER BY title</foreign_table_where>
|
||||
<items>
|
||||
<numIndex index="0">
|
||||
<label>All Categories</label>
|
||||
<value>0</value>
|
||||
</numIndex>
|
||||
</items>
|
||||
</config>
|
||||
</TCEforms>
|
||||
</settings.defaultCategory>
|
||||
</el>
|
||||
</ROOT>
|
||||
</sDEF>
|
||||
</sheets>
|
||||
</T3DataStructure>
|
||||
@@ -0,0 +1,119 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<T3DataStructure>
|
||||
<sheets>
|
||||
<sDEF>
|
||||
<ROOT>
|
||||
<TCEforms>
|
||||
<sheetTitle>General Settings</sheetTitle>
|
||||
</TCEforms>
|
||||
<type>array</type>
|
||||
<el>
|
||||
<settings.product>
|
||||
<label>Select Product</label>
|
||||
<config>
|
||||
<type>select</type>
|
||||
<renderType>selectSingle</renderType>
|
||||
<items>
|
||||
<numIndex index="0">
|
||||
<label>None</label>
|
||||
<value>0</value>
|
||||
</numIndex>
|
||||
</items>
|
||||
<foreign_table>tx_vitec_domain_model_product</foreign_table>
|
||||
<foreign_table_where>AND (tx_vitec_domain_model_product.hidden = 0 AND tx_vitec_domain_model_product.deleted = 0) ORDER BY tx_vitec_domain_model_product.title</foreign_table_where>
|
||||
<size>1</size>
|
||||
<minitems>0</minitems>
|
||||
<maxitems>99</maxitems>
|
||||
</config>
|
||||
</settings.product>
|
||||
<settings.download>
|
||||
<label>Select Download</label>
|
||||
<config>
|
||||
<type>select</type>
|
||||
<renderType>selectSingle</renderType>
|
||||
<items>
|
||||
<numIndex index="0">
|
||||
<label>None</label>
|
||||
<value>0</value>
|
||||
</numIndex>
|
||||
</items>
|
||||
<foreign_table>tx_vitec_domain_model_download</foreign_table>
|
||||
<foreign_table_where>AND (tx_vitec_domain_model_download.hidden = 0 AND tx_vitec_domain_model_download.deleted = 0) ORDER BY tx_vitec_domain_model_download.title</foreign_table_where>
|
||||
<size>1</size>
|
||||
<minitems>0</minitems>
|
||||
<maxitems>99</maxitems>
|
||||
</config>
|
||||
</settings.download>
|
||||
<settings.layout>
|
||||
<label>Layout</label>
|
||||
<config>
|
||||
<type>select</type>
|
||||
<renderType>selectSingle</renderType>
|
||||
<items>
|
||||
<numIndex index="0">
|
||||
<label>
|
||||
Default Product List
|
||||
</label>
|
||||
<value>0</value>
|
||||
</numIndex>
|
||||
<numIndex index="1">
|
||||
<label>
|
||||
Variation 1 Product List
|
||||
</label>
|
||||
<value>1</value>
|
||||
</numIndex>
|
||||
<numIndex index="2">
|
||||
<label>
|
||||
Variation 2 Product List
|
||||
</label>
|
||||
<value>2</value>
|
||||
</numIndex>
|
||||
<numIndex index="3">
|
||||
<label>
|
||||
Variation 3 Product List
|
||||
</label>
|
||||
<value>3</value>
|
||||
</numIndex>
|
||||
</items>
|
||||
</config>
|
||||
</settings.layout>
|
||||
<settings.magstyle>
|
||||
<label>Magazine Style layout</label>
|
||||
<config>
|
||||
<type>check</type>
|
||||
<default>0</default>
|
||||
</config>
|
||||
</settings.magstyle>
|
||||
<settings.adddetaillink>
|
||||
<label>Add Button to Detail View</label>
|
||||
<config>
|
||||
<type>check</type>
|
||||
<default>0</default>
|
||||
</config>
|
||||
</settings.adddetaillink>
|
||||
<settings.magheader>
|
||||
<label>Header Text for Magazine Layout</label>
|
||||
<config>
|
||||
<type>input</type>
|
||||
<size>30</size>
|
||||
</config>
|
||||
</settings.magheader>
|
||||
<settings.magtext>
|
||||
<label>A short Text for Magazine Layout</label>
|
||||
<config>
|
||||
<type>input</type>
|
||||
<size>30</size>
|
||||
</config>
|
||||
</settings.magtext>
|
||||
<settings.maglink>
|
||||
<label>Link for Magazine Layout</label>
|
||||
<config>
|
||||
<type>input</type>
|
||||
<size>30</size>
|
||||
</config>
|
||||
</settings.maglink>
|
||||
</el>
|
||||
</ROOT>
|
||||
</sDEF>
|
||||
</sheets>
|
||||
</T3DataStructure>
|
||||
@@ -0,0 +1,172 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<T3DataStructure>
|
||||
<sheets>
|
||||
<sDEF>
|
||||
<ROOT>
|
||||
<TCEforms>
|
||||
<sheetTitle>General Settings</sheetTitle>
|
||||
</TCEforms>
|
||||
<type>array</type>
|
||||
<el>
|
||||
<settings.image>
|
||||
<label>Image</label>
|
||||
<config>
|
||||
<type>inline</type>
|
||||
<maxitems>1</maxitems>
|
||||
<foreign_table>sys_file_reference</foreign_table>
|
||||
<foreign_table_field>tablenames</foreign_table_field>
|
||||
<foreign_label>uid_local</foreign_label>
|
||||
<foreign_sortby>sorting_foreign</foreign_sortby>
|
||||
<foreign_field>uid_foreign</foreign_field>
|
||||
<foreign_selector>uid_local</foreign_selector>
|
||||
<foreign_selector_fieldTcaOverride>
|
||||
<config>
|
||||
<appearance>
|
||||
<elementBrowserType>file</elementBrowserType>
|
||||
<elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
|
||||
</appearance>
|
||||
</config>
|
||||
</foreign_selector_fieldTcaOverride>
|
||||
<foreign_types type="array">
|
||||
<numIndex index="0">
|
||||
<showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
|
||||
</numIndex>
|
||||
<numIndex index="2">
|
||||
<showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
|
||||
</numIndex>
|
||||
</foreign_types>
|
||||
<foreign_match_fields>
|
||||
<fieldname>image</fieldname> <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
|
||||
</foreign_match_fields>
|
||||
<appearance type="array">
|
||||
<newRecordLinkAddTitle>1</newRecordLinkAddTitle>
|
||||
<headerThumbnail>
|
||||
<field>uid_local</field>
|
||||
<height>64</height>
|
||||
<width>64</width>
|
||||
</headerThumbnail>
|
||||
<enabledControls>
|
||||
<info>1</info>
|
||||
<new>0</new>
|
||||
<dragdrop>0</dragdrop>
|
||||
<sort>1</sort>
|
||||
<hide>0</hide>
|
||||
<delete>1</delete>
|
||||
<localize>1</localize>
|
||||
</enabledControls>
|
||||
<createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
|
||||
</appearance>
|
||||
<behaviour>
|
||||
<localizationMode>select</localizationMode>
|
||||
<localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
|
||||
</behaviour>
|
||||
<overrideChildTca>
|
||||
<columns type="array">
|
||||
<uid_local type="array">
|
||||
<config type="array">
|
||||
<appearance type="array">
|
||||
<elementBrowserType>file</elementBrowserType>
|
||||
<elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
|
||||
</appearance>
|
||||
</config>
|
||||
</uid_local>
|
||||
</columns>
|
||||
<types type="array">
|
||||
<numIndex index="2">
|
||||
<showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
|
||||
</numIndex>
|
||||
</types>
|
||||
</overrideChildTca>
|
||||
</config>
|
||||
</settings.image>
|
||||
<settings.download>
|
||||
<label>Select Download</label>
|
||||
<config>
|
||||
<type>select</type>
|
||||
<renderType>selectMultipleSideBySide</renderType>
|
||||
<items>
|
||||
<numIndex index="0">
|
||||
<label>None</label>
|
||||
<value>0</value>
|
||||
</numIndex>
|
||||
</items>
|
||||
<foreign_table>tx_vitec_domain_model_download</foreign_table>
|
||||
<foreign_table_where>AND (tx_vitec_domain_model_download.hidden = 0 AND tx_vitec_domain_model_download.deleted = 0) ORDER BY tx_vitec_domain_model_download.title</foreign_table_where>
|
||||
<size>4</size>
|
||||
<minitems>0</minitems>
|
||||
<maxitems>99</maxitems>
|
||||
</config>
|
||||
</settings.download>
|
||||
<settings.layout>
|
||||
<label>Layout</label>
|
||||
<config>
|
||||
<type>select</type>
|
||||
<renderType>selectSingle</renderType>
|
||||
<items>
|
||||
<numIndex index="0">
|
||||
<label>
|
||||
Default Product List
|
||||
</label>
|
||||
<value>0</value>
|
||||
</numIndex>
|
||||
<numIndex index="1">
|
||||
<label>
|
||||
Variation 1 Product List
|
||||
</label>
|
||||
<value>1</value>
|
||||
</numIndex>
|
||||
<numIndex index="2">
|
||||
<label>
|
||||
Variation 2 Product List
|
||||
</label>
|
||||
<value>2</value>
|
||||
</numIndex>
|
||||
<numIndex index="3">
|
||||
<label>
|
||||
Variation 3 Product List
|
||||
</label>
|
||||
<value>3</value>
|
||||
</numIndex>
|
||||
</items>
|
||||
</config>
|
||||
</settings.layout>
|
||||
<settings.magstyle>
|
||||
<label>Magazine Style layout</label>
|
||||
<config>
|
||||
<type>check</type>
|
||||
<default>0</default>
|
||||
</config>
|
||||
</settings.magstyle>
|
||||
<settings.adddetaillink>
|
||||
<label>Add Button to Detail View</label>
|
||||
<config>
|
||||
<type>check</type>
|
||||
<default>0</default>
|
||||
</config>
|
||||
</settings.adddetaillink>
|
||||
<settings.magheader>
|
||||
<label>Header Text for Magazine Layout</label>
|
||||
<config>
|
||||
<type>input</type>
|
||||
<size>30</size>
|
||||
</config>
|
||||
</settings.magheader>
|
||||
<settings.magtext>
|
||||
<label>A short Text for Magazine Layout</label>
|
||||
<config>
|
||||
<type>input</type>
|
||||
<size>30</size>
|
||||
</config>
|
||||
</settings.magtext>
|
||||
<settings.maglink>
|
||||
<label>Link for Magazine Layout</label>
|
||||
<config>
|
||||
<type>input</type>
|
||||
<size>30</size>
|
||||
</config>
|
||||
</settings.maglink>
|
||||
</el>
|
||||
</ROOT>
|
||||
</sDEF>
|
||||
</sheets>
|
||||
</T3DataStructure>
|
||||
@@ -0,0 +1,69 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<T3DataStructure>
|
||||
<sheets>
|
||||
<sDEF>
|
||||
<ROOT>
|
||||
<sheetTitle>
|
||||
Select Market
|
||||
</sheetTitle>
|
||||
<type>array</type>
|
||||
<el>
|
||||
<settings.debug>
|
||||
<label>Allow Debug Output.</label>
|
||||
<config>
|
||||
<type>check</type>
|
||||
<items type="array">
|
||||
<numIndex index="0" type="array">
|
||||
<label>LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.enabled</label>
|
||||
</numIndex>
|
||||
</items>
|
||||
</config>
|
||||
</settings.debug>
|
||||
<settings.market>
|
||||
<label>
|
||||
Market
|
||||
</label>
|
||||
<config>
|
||||
<type>select</type>
|
||||
<renderType>selectSingle</renderType>
|
||||
<foreign_table>tx_vitec_domain_model_market</foreign_table>
|
||||
<foreign_table_where>AND tx_vitec_domain_model_market.hidden = 0 AND tx_vitec_domain_model_market.deleted = 0 ORDER BY tx_vitec_domain_model_market.title</foreign_table_where>
|
||||
<size>1</size>
|
||||
<minitems>0</minitems>
|
||||
<maxitems>1</maxitems>
|
||||
</config>
|
||||
</settings.market>
|
||||
<settings.layout>
|
||||
<label>
|
||||
Layout
|
||||
</label>
|
||||
<config>
|
||||
<type>select</type>
|
||||
<renderType>selectSingle</renderType>
|
||||
<items>
|
||||
<numIndex index="0">
|
||||
<label>Default Layout</label>
|
||||
<value>default</value>
|
||||
</numIndex>
|
||||
<numIndex index="1">
|
||||
<label>Card Layout</label>
|
||||
<value>card</value>
|
||||
</numIndex>
|
||||
<numIndex index="2">
|
||||
<label>Hero Layout</label>
|
||||
<value>hero</value>
|
||||
</numIndex>
|
||||
<numIndex index="3">
|
||||
<label>Compact Layout</label>
|
||||
<value>compact</value>
|
||||
</numIndex>
|
||||
</items>
|
||||
<default>default</default>
|
||||
<size>1</size>
|
||||
</config>
|
||||
</settings.layout>
|
||||
</el>
|
||||
</ROOT>
|
||||
</sDEF>
|
||||
</sheets>
|
||||
</T3DataStructure>
|
||||
@@ -0,0 +1,99 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<T3DataStructure>
|
||||
<sheets>
|
||||
<sDEF>
|
||||
<ROOT>
|
||||
<sheetTitle>
|
||||
Select Categories
|
||||
</sheetTitle>
|
||||
<type>array</type>
|
||||
<el>
|
||||
<settings.allproducts>
|
||||
<label>Show all products disregarding the category selection below.</label>
|
||||
<config>
|
||||
<type>check</type>
|
||||
<items type="array">
|
||||
<numIndex index="0" type="array">
|
||||
<label>LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.enabled</label>
|
||||
</numIndex>
|
||||
</items>
|
||||
</config>
|
||||
</settings.allproducts>
|
||||
<settings.debug>
|
||||
<label>Allow Debug Output.</label>
|
||||
<config>
|
||||
<type>check</type>
|
||||
<items type="array">
|
||||
<numIndex index="0" type="array">
|
||||
<label>LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.enabled</label>
|
||||
</numIndex>
|
||||
</items>
|
||||
</config>
|
||||
</settings.debug>
|
||||
<settings.categories>
|
||||
<label>Select Category</label>
|
||||
<description>
|
||||
Select one or more categories to filter the products in the product list.
|
||||
|
||||
</description>
|
||||
<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>
|
||||
</settings.categories>
|
||||
<settings.layout>
|
||||
<label>Layout</label>
|
||||
<description>
|
||||
Select which layout variation should be used for the product list in the frontend.
|
||||
</description>
|
||||
<config>
|
||||
<type>select</type>
|
||||
<renderType>selectSingle</renderType>
|
||||
<items>
|
||||
<numIndex index="0">
|
||||
<label>
|
||||
Default Product List
|
||||
</label>
|
||||
<value>0</value>
|
||||
</numIndex>
|
||||
<numIndex index="1">
|
||||
<label>
|
||||
Variation 1 Product List
|
||||
</label>
|
||||
<value>1</value>
|
||||
</numIndex>
|
||||
<numIndex index="2">
|
||||
<label>
|
||||
Variation 2 Product List
|
||||
</label>
|
||||
<value>2</value>
|
||||
</numIndex>
|
||||
<numIndex index="3">
|
||||
<label>
|
||||
Variation 3 Product List
|
||||
</label>
|
||||
<value>3</value>
|
||||
</numIndex>
|
||||
</items>
|
||||
</config>
|
||||
</settings.layout>
|
||||
</el>
|
||||
</ROOT>
|
||||
</sDEF>
|
||||
</sheets>
|
||||
</T3DataStructure>
|
||||
@@ -0,0 +1,82 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<T3DataStructure>
|
||||
<sheets>
|
||||
<sDEF>
|
||||
<ROOT>
|
||||
<sheetTitle>
|
||||
Select Product
|
||||
</sheetTitle>
|
||||
<type>array</type>
|
||||
<el>
|
||||
<settings.debug>
|
||||
<label>Allow Debug Output.</label>
|
||||
<config>
|
||||
<type>check</type>
|
||||
<items type="array">
|
||||
<numIndex index="0" type="array">
|
||||
<label>LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.enabled</label>
|
||||
</numIndex>
|
||||
</items>
|
||||
</config>
|
||||
</settings.debug>
|
||||
<settings.product>
|
||||
<label>
|
||||
Select Product
|
||||
</label>
|
||||
<config>
|
||||
<type>select</type>
|
||||
<renderType>selectSingle</renderType>
|
||||
<items>
|
||||
<numIndex index="0">
|
||||
<label>No Product - Use product from URL parameter</label>
|
||||
<value>0</value>
|
||||
</numIndex>
|
||||
</items>
|
||||
<foreign_table>tx_vitec_domain_model_product</foreign_table>
|
||||
<foreign_table_where>AND tx_vitec_domain_model_product.hidden = 0 AND tx_vitec_domain_model_product.deleted = 0 ORDER BY tx_vitec_domain_model_product.title</foreign_table_where>
|
||||
<size>1</size>
|
||||
<minitems>0</minitems>
|
||||
<maxitems>1</maxitems>
|
||||
</config>
|
||||
</settings.product>
|
||||
<settings.layout>
|
||||
<label>Layout</label>
|
||||
<description>
|
||||
Select which layout variation should be used for the product in the frontend.
|
||||
</description>
|
||||
<config>
|
||||
<type>select</type>
|
||||
<renderType>selectSingle</renderType>
|
||||
<items>
|
||||
<numIndex index="0">
|
||||
<label>
|
||||
Default Product Card
|
||||
</label>
|
||||
<value>0</value>
|
||||
</numIndex>
|
||||
<numIndex index="1">
|
||||
<label>
|
||||
Variation 1 Product Card
|
||||
</label>
|
||||
<value>1</value>
|
||||
</numIndex>
|
||||
<numIndex index="2">
|
||||
<label>
|
||||
Variation 2 Product Card
|
||||
</label>
|
||||
<value>2</value>
|
||||
</numIndex>
|
||||
<numIndex index="3">
|
||||
<label>
|
||||
Variation 3 Product Card
|
||||
</label>
|
||||
<value>3</value>
|
||||
</numIndex>
|
||||
</items>
|
||||
</config>
|
||||
</settings.layout>
|
||||
</el>
|
||||
</ROOT>
|
||||
</sDEF>
|
||||
</sheets>
|
||||
</T3DataStructure>
|
||||
@@ -0,0 +1,66 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<T3DataStructure>
|
||||
<sheets>
|
||||
<sDEF>
|
||||
<ROOT>
|
||||
<sheetTitle>Simple Card Settings</sheetTitle>
|
||||
<type>array</type>
|
||||
<el>
|
||||
<settings.header>
|
||||
<label>Header</label>
|
||||
<config>
|
||||
<type>input</type>
|
||||
<size>48</size>
|
||||
</config>
|
||||
</settings.header>
|
||||
<settings.bodytext>
|
||||
<label>Text</label>
|
||||
<config>
|
||||
<type>text</type>
|
||||
<enableRichtext>1</enableRichtext>
|
||||
<richtextConfiguration>default</richtextConfiguration>
|
||||
<cols>48</cols>
|
||||
<rows>5</rows>
|
||||
</config>
|
||||
</settings.bodytext>
|
||||
<settings.image>
|
||||
<label>Image</label>
|
||||
<config>
|
||||
<type>file</type>
|
||||
<appearance>
|
||||
<createNewRelationLinkTitle>Add Image</createNewRelationLinkTitle>
|
||||
</appearance>
|
||||
<maxitems>1</maxitems>
|
||||
<minitems>0</minitems>
|
||||
<allowed>jpg,jpeg,png,gif,svg</allowed>
|
||||
<fieldControl>
|
||||
<editPopup>
|
||||
<disabled>0</disabled>
|
||||
</editPopup>
|
||||
<addFileReference>
|
||||
<disabled>0</disabled>
|
||||
</addFileReference>
|
||||
</fieldControl>
|
||||
</config>
|
||||
</settings.image>
|
||||
<settings.buttontext>
|
||||
<label>Button Text</label>
|
||||
<config>
|
||||
<type>input</type>
|
||||
<size>30</size>
|
||||
</config>
|
||||
</settings.buttontext>
|
||||
<settings.buttonlink>
|
||||
<label>Button Link</label>
|
||||
<config>
|
||||
<type>input</type>
|
||||
<renderType>inputLink</renderType>
|
||||
<size>30</size>
|
||||
<eval>trim</eval>
|
||||
</config>
|
||||
</settings.buttonlink>
|
||||
</el>
|
||||
</ROOT>
|
||||
</sDEF>
|
||||
</sheets>
|
||||
</T3DataStructure>
|
||||
@@ -0,0 +1,69 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<T3DataStructure>
|
||||
<sheets>
|
||||
<sDEF>
|
||||
<ROOT>
|
||||
<sheetTitle>
|
||||
Select Solution
|
||||
</sheetTitle>
|
||||
<type>array</type>
|
||||
<el>
|
||||
<settings.debug>
|
||||
<label>Allow Debug Output.</label>
|
||||
<config>
|
||||
<type>check</type>
|
||||
<items type="array">
|
||||
<numIndex index="0" type="array">
|
||||
<label>LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.enabled</label>
|
||||
</numIndex>
|
||||
</items>
|
||||
</config>
|
||||
</settings.debug>
|
||||
<settings.solution>
|
||||
<label>
|
||||
Solution
|
||||
</label>
|
||||
<config>
|
||||
<type>select</type>
|
||||
<renderType>selectSingle</renderType>
|
||||
<foreign_table>tx_vitec_domain_model_solution</foreign_table>
|
||||
<foreign_table_where>AND tx_vitec_domain_model_solution.hidden = 0 AND tx_vitec_domain_model_solution.deleted = 0 ORDER BY tx_vitec_domain_model_solution.title</foreign_table_where>
|
||||
<size>1</size>
|
||||
<minitems>0</minitems>
|
||||
<maxitems>1</maxitems>
|
||||
</config>
|
||||
</settings.solution>
|
||||
<settings.layout>
|
||||
<label>
|
||||
Layout
|
||||
</label>
|
||||
<config>
|
||||
<type>select</type>
|
||||
<renderType>selectSingle</renderType>
|
||||
<items>
|
||||
<numIndex index="0">
|
||||
<label>Default Layout</label>
|
||||
<value>default</value>
|
||||
</numIndex>
|
||||
<numIndex index="1">
|
||||
<label>Card Layout</label>
|
||||
<value>card</value>
|
||||
</numIndex>
|
||||
<numIndex index="2">
|
||||
<label>Hero Layout</label>
|
||||
<value>hero</value>
|
||||
</numIndex>
|
||||
<numIndex index="3">
|
||||
<label>Compact Layout</label>
|
||||
<value>compact</value>
|
||||
</numIndex>
|
||||
</items>
|
||||
<default>default</default>
|
||||
<size>1</size>
|
||||
</config>
|
||||
</settings.layout>
|
||||
</el>
|
||||
</ROOT>
|
||||
</sDEF>
|
||||
</sheets>
|
||||
</T3DataStructure>
|
||||
@@ -0,0 +1,69 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<T3DataStructure>
|
||||
<sheets>
|
||||
<sDEF>
|
||||
<ROOT>
|
||||
<sheetTitle>
|
||||
Select Usecase
|
||||
</sheetTitle>
|
||||
<type>array</type>
|
||||
<el>
|
||||
<settings.debug>
|
||||
<label>Allow Debug Output.</label>
|
||||
<config>
|
||||
<type>check</type>
|
||||
<items type="array">
|
||||
<numIndex index="0" type="array">
|
||||
<label>LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.enabled</label>
|
||||
</numIndex>
|
||||
</items>
|
||||
</config>
|
||||
</settings.debug>
|
||||
<settings.usecase>
|
||||
<label>
|
||||
Usecase
|
||||
</label>
|
||||
<config>
|
||||
<type>select</type>
|
||||
<renderType>selectSingle</renderType>
|
||||
<foreign_table>tx_vitec_domain_model_usecase</foreign_table>
|
||||
<foreign_table_where>AND tx_vitec_domain_model_usecase.hidden = 0 AND tx_vitec_domain_model_usecase.deleted = 0 ORDER BY tx_vitec_domain_model_usecase.title</foreign_table_where>
|
||||
<size>1</size>
|
||||
<minitems>0</minitems>
|
||||
<maxitems>1</maxitems>
|
||||
</config>
|
||||
</settings.usecase>
|
||||
<settings.layout>
|
||||
<label>
|
||||
Layout
|
||||
</label>
|
||||
<config>
|
||||
<type>select</type>
|
||||
<renderType>selectSingle</renderType>
|
||||
<items>
|
||||
<numIndex index="0">
|
||||
<label>Default Layout</label>
|
||||
<value>default</value>
|
||||
</numIndex>
|
||||
<numIndex index="1">
|
||||
<label>Card Layout</label>
|
||||
<value>card</value>
|
||||
</numIndex>
|
||||
<numIndex index="2">
|
||||
<label>Hero Layout</label>
|
||||
<value>hero</value>
|
||||
</numIndex>
|
||||
<numIndex index="3">
|
||||
<label>Compact Layout</label>
|
||||
<value>compact</value>
|
||||
</numIndex>
|
||||
</items>
|
||||
<default>default</default>
|
||||
<size>1</size>
|
||||
</config>
|
||||
</settings.layout>
|
||||
</el>
|
||||
</ROOT>
|
||||
</sDEF>
|
||||
</sheets>
|
||||
</T3DataStructure>
|
||||
@@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<T3DataStructure>
|
||||
<sheets>
|
||||
<sDEF>
|
||||
<ROOT>
|
||||
<sheetTitle>
|
||||
Select Usecase
|
||||
</sheetTitle>
|
||||
<type>array</type>
|
||||
<el>
|
||||
<settings.usecase>
|
||||
<label>
|
||||
Usecase
|
||||
</label>
|
||||
<config>
|
||||
<type>select</type>
|
||||
<renderType>selectSingle</renderType>
|
||||
<foreign_table>tx_vitec_domain_model_usecase</foreign_table>
|
||||
<foreign_table_where>AND tx_vitec_domain_model_usecase.hidden = 0 AND tx_vitec_domain_model_usecase.deleted = 0 ORDER BY tx_vitec_domain_model_usecase.title</foreign_table_where>
|
||||
<size>1</size>
|
||||
<minitems>0</minitems>
|
||||
<maxitems>1</maxitems>
|
||||
</config>
|
||||
</settings.usecase>
|
||||
</el>
|
||||
</ROOT>
|
||||
</sDEF>
|
||||
</sheets>
|
||||
</T3DataStructure>
|
||||
Executable
+27
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
use TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider;
|
||||
|
||||
return [
|
||||
'vitec-cols-50-50' => [
|
||||
'provider' => SvgIconProvider::class,
|
||||
'source' => 'EXT:vitec/Resources/Public/Icons/vitec-cols-50-50.svg',
|
||||
],
|
||||
'vitec-cols-33-33-33' => [
|
||||
'provider' => SvgIconProvider::class,
|
||||
'source' => 'EXT:vitec/Resources/Public/Icons/vitec-cols-33-33-33.svg',
|
||||
],
|
||||
'vitec-cols-25-25-25-25' => [
|
||||
'provider' => SvgIconProvider::class,
|
||||
'source' => 'EXT:vitec/Resources/Public/Icons/vitec-cols-25-25-25-25.svg',
|
||||
],
|
||||
'vitec-cols-66-33' => [
|
||||
'provider' => SvgIconProvider::class,
|
||||
'source' => 'EXT:vitec/Resources/Public/Icons/vitec-cols-66-33.svg',
|
||||
],
|
||||
'vitec-cols-33-66' => [
|
||||
'provider' => SvgIconProvider::class,
|
||||
'source' => 'EXT:vitec/Resources/Public/Icons/vitec-cols-33-66.svg',
|
||||
],
|
||||
];
|
||||
@@ -0,0 +1,199 @@
|
||||
# ============================================================
|
||||
# VITEC — Full CKEditor5 Preset
|
||||
# All available toolbar items, styles, fonts, and options
|
||||
# ============================================================
|
||||
|
||||
imports:
|
||||
- { resource: 'EXT:rte_ckeditor/Configuration/RTE/Processing.yaml' }
|
||||
- { resource: 'EXT:rte_ckeditor/Configuration/RTE/Editor/Base.yaml' }
|
||||
- { resource: 'EXT:rte_ckeditor/Configuration/RTE/Editor/Plugins.yaml' }
|
||||
|
||||
editor:
|
||||
config:
|
||||
# Load frontend-like classes into RTE iframe for live style preview
|
||||
contentsCss:
|
||||
- 'EXT:rte_ckeditor/Resources/Public/Css/contents.css'
|
||||
- 'EXT:vitec/Resources/Public/Css/rte-content.css'
|
||||
|
||||
# ---- Toolbar (all available items) ----------------------
|
||||
toolbar:
|
||||
shouldNotGroupWhenFull: true
|
||||
items:
|
||||
# Undo / Redo / Cleanup
|
||||
- undo
|
||||
- redo
|
||||
- removeFormat
|
||||
- selectAll
|
||||
- '|'
|
||||
# Find & Replace / Source
|
||||
- findAndReplace
|
||||
- sourceEditing
|
||||
- showBlocks
|
||||
- fullscreen
|
||||
- '|'
|
||||
# Headings & Styles
|
||||
- heading
|
||||
- style
|
||||
- '-'
|
||||
# Basic formatting
|
||||
- bold
|
||||
- italic
|
||||
- underline
|
||||
- strikethrough
|
||||
- subscript
|
||||
- superscript
|
||||
- softhyphen
|
||||
- '|'
|
||||
# Font
|
||||
- fontFamily
|
||||
- fontSize
|
||||
- fontColor
|
||||
- fontBackgroundColor
|
||||
- highlight
|
||||
- highlight:greenMarker
|
||||
- '-'
|
||||
# Lists & Indent
|
||||
- bulletedList
|
||||
- numberedList
|
||||
- blockQuote
|
||||
- indent
|
||||
- outdent
|
||||
- alignment
|
||||
- horizontalLine
|
||||
- '|'
|
||||
# Links & Media
|
||||
- link
|
||||
- '|'
|
||||
# Tables
|
||||
- insertTable
|
||||
- tableColumn
|
||||
- tableRow
|
||||
- mergeTableCells
|
||||
- TableProperties
|
||||
- TableCellProperties
|
||||
- '-'
|
||||
# Special
|
||||
- specialCharacters
|
||||
- textPartLanguage
|
||||
|
||||
# ---- Heading options ------------------------------------
|
||||
heading:
|
||||
options:
|
||||
- { model: 'paragraph', title: 'Paragraph' }
|
||||
- { model: 'heading1', view: 'h1', title: 'Heading 1' }
|
||||
- { model: 'heading2', view: 'h2', title: 'Heading 2' }
|
||||
- { model: 'heading3', view: 'h3', title: 'Heading 3' }
|
||||
- { model: 'heading4', view: 'h4', title: 'Heading 4' }
|
||||
- { model: 'heading5', view: 'h5', title: 'Heading 5' }
|
||||
- { model: 'heading6', view: 'h6', title: 'Heading 6' }
|
||||
- { model: 'formatted', view: 'pre', title: 'Pre-Formatted Text' }
|
||||
|
||||
# ---- Style definitions ----------------------------------
|
||||
style:
|
||||
definitions:
|
||||
# Block level
|
||||
- { name: 'Lead / Intro', element: 'p', classes: ['lead'] }
|
||||
- { name: 'Quote / Citation', element: 'blockquote', classes: ['blockquote'] }
|
||||
- { name: 'Code block', element: 'code' }
|
||||
# Buttons (VITEC color system)
|
||||
- { name: 'Button: Orange', element: 'a', classes: ['btn', 'btn-vitec', 'btn-vitec--orange'] }
|
||||
- { name: 'Button: Blue', element: 'a', classes: ['btn', 'btn-vitec', 'btn-vitec--blue'] }
|
||||
- { name: 'Button: Graphite', element: 'a', classes: ['btn', 'btn-vitec', 'btn-vitec--graphite'] }
|
||||
- { name: 'Button: Midnight', element: 'a', classes: ['btn', 'btn-vitec', 'btn-vitec--midnight'] }
|
||||
- { name: 'Button: Light', element: 'a', classes: ['btn', 'btn-vitec', 'btn-vitec--light'] }
|
||||
- { name: 'Button: Outline Orange', element: 'a', classes: ['btn', 'btn-vitec', 'btn-vitec--outline-orange'] }
|
||||
- { name: 'Button: Outline Blue', element: 'a', classes: ['btn', 'btn-vitec', 'btn-vitec--outline-blue'] }
|
||||
# Inline
|
||||
- { name: 'Highlight yellow', element: 'mark', classes: ['highlight-yellow'] }
|
||||
- { name: 'Highlight green', element: 'mark', classes: ['highlight-green'] }
|
||||
- { name: 'Small text', element: 'small' }
|
||||
- { name: 'Keyboard input', element: 'kbd' }
|
||||
- { name: 'Delete / Strike', element: 'del' }
|
||||
- { name: 'Insert / Underline', element: 'ins' }
|
||||
|
||||
# ---- Alignment -----------------------------------------
|
||||
alignment:
|
||||
options:
|
||||
- { name: 'left', className: 'text-start' }
|
||||
- { name: 'center', className: 'text-center' }
|
||||
- { name: 'right', className: 'text-end' }
|
||||
- { name: 'justify', className: 'text-justify' }
|
||||
|
||||
# ---- Table defaults ------------------------------------
|
||||
table:
|
||||
defaultHeadings: { rows: 1 }
|
||||
contentToolbar:
|
||||
- tableColumn
|
||||
- tableRow
|
||||
- mergeTableCells
|
||||
- tableProperties
|
||||
- tableCellProperties
|
||||
- toggleTableCaption
|
||||
|
||||
# ---- Font family ----------------------------------------
|
||||
fontFamily:
|
||||
supportAllValues: false
|
||||
options:
|
||||
- 'default'
|
||||
- 'Arial, sans-serif'
|
||||
- 'Georgia, serif'
|
||||
- 'Courier New, monospace'
|
||||
|
||||
# ---- Font size ------------------------------------------
|
||||
fontSize:
|
||||
options:
|
||||
- 'default'
|
||||
- 12
|
||||
- 14
|
||||
- 16
|
||||
- 18
|
||||
- 20
|
||||
- 24
|
||||
- 28
|
||||
- 32
|
||||
- 36
|
||||
- 48
|
||||
|
||||
# ---- Font color -----------------------------------------
|
||||
fontColor:
|
||||
columns: 6
|
||||
colors:
|
||||
- { label: 'VITEC Orange', color: '#F47937' }
|
||||
- { label: 'VITEC Blue', color: '#26358C' }
|
||||
- { label: 'VITEC Graphite', color: '#313131' }
|
||||
- { label: 'VITEC Midnight', color: '#0D0D0D' }
|
||||
- { label: 'VITEC Light', color: '#CCCCCC' }
|
||||
- { label: 'Black', color: '#000000' }
|
||||
- { label: 'White', color: '#FFFFFF' }
|
||||
|
||||
# ---- Font background color ------------------------------
|
||||
fontBackgroundColor:
|
||||
columns: 6
|
||||
colors:
|
||||
- { label: 'VITEC Orange', color: '#F47937' }
|
||||
- { label: 'VITEC Orange Light', color: '#FBD2BF' }
|
||||
- { label: 'VITEC Blue', color: '#26358C' }
|
||||
- { label: 'VITEC Blue Light', color: '#C9D0EE' }
|
||||
- { label: 'VITEC Graphite', color: '#313131' }
|
||||
- { label: 'VITEC Midnight', color: '#0D0D0D' }
|
||||
- { label: 'VITEC Light', color: '#CCCCCC' }
|
||||
- { label: 'White', color: '#FFFFFF' }
|
||||
|
||||
# ---- Highlight -----------------------------------------
|
||||
highlight:
|
||||
options:
|
||||
- { model: 'yellowMarker', class: 'marker-yellow', title: 'Yellow marker', color: '#fdfd77', type: 'marker' }
|
||||
- { model: 'greenMarker', class: 'marker-green', title: 'Green marker', color: '#63f963', type: 'marker' }
|
||||
- { model: 'pinkMarker', class: 'marker-pink', title: 'Pink marker', color: '#fc7999', type: 'marker' }
|
||||
- { model: 'blueMarker', class: 'marker-blue', title: 'Blue marker', color: '#72cdfd', type: 'marker' }
|
||||
- { model: 'redPen', class: 'pen-red', title: 'Red pen', color: '#e91313', type: 'pen' }
|
||||
- { model: 'greenPen', class: 'pen-green', title: 'Green pen', color: '#118800', type: 'pen' }
|
||||
|
||||
# ---- Special characters --------------------------------
|
||||
specialCharacters:
|
||||
order: 'alphabet'
|
||||
|
||||
# ---- Word count (optional — remove if not needed) -------
|
||||
wordCount:
|
||||
displayWords: true
|
||||
displayCharacters: true
|
||||
@@ -0,0 +1,18 @@
|
||||
services:
|
||||
_defaults:
|
||||
autowire: true
|
||||
autoconfigure: true
|
||||
public: false
|
||||
|
||||
Evomedien\Vitec\:
|
||||
resource: '../Classes/*'
|
||||
exclude: '../Classes/Domain/Model/*'
|
||||
|
||||
# Make our VitecBackendLayoutView the canonical BackendLayoutView.
|
||||
# Any service / controller requesting BackendLayoutView gets our override.
|
||||
Evomedien\Vitec\View\VitecBackendLayoutView:
|
||||
public: true
|
||||
|
||||
TYPO3\CMS\Backend\View\BackendLayoutView:
|
||||
alias: Evomedien\Vitec\View\VitecBackendLayoutView
|
||||
public: true
|
||||
@@ -0,0 +1,11 @@
|
||||
name: evomedien/vitecset
|
||||
label: VITEC Set
|
||||
settings:
|
||||
website:
|
||||
background:
|
||||
color: '#386492'
|
||||
dependencies:
|
||||
- typo3/fluid-styled-content
|
||||
- friendsoftypo3/headless
|
||||
- itplusx/headless-container
|
||||
- nb-headless-content-blocks/headless-content-blocks
|
||||
Whitespace-only changes.
@@ -0,0 +1,2 @@
|
||||
# Use the custom VITEC CKEditor preset for all RTE fields
|
||||
RTE.default.preset = vitec
|
||||
@@ -0,0 +1,44 @@
|
||||
categories:
|
||||
VITEC:
|
||||
label: 'VITEC Settings'
|
||||
description: 'Settings for VITEC Stuff'
|
||||
seo:
|
||||
label: 'SEO Settings'
|
||||
description: 'SEO related settings'
|
||||
menu:
|
||||
label: 'Menu / Navigation'
|
||||
description: 'Footer & meta menu page selection'
|
||||
|
||||
settings:
|
||||
my.vitec.setting:
|
||||
label: 'My example setting'
|
||||
category: VITEC
|
||||
type: string
|
||||
default: ''
|
||||
|
||||
my.seoRelevantSetting:
|
||||
label: 'My SEO relevant setting'
|
||||
category: seo
|
||||
type: int
|
||||
default: 5
|
||||
|
||||
vitec.debugMode:
|
||||
label: 'Enable Debug Mode'
|
||||
description: 'Enable debug mode for VITEC extensions'
|
||||
category: VITEC
|
||||
type: bool
|
||||
default: false
|
||||
|
||||
menu.footer.pageUids:
|
||||
label: 'Footer menu — page UIDs'
|
||||
description: 'Comma-separated list of page UIDs to display in the footer menu (in order).'
|
||||
category: menu
|
||||
type: string
|
||||
default: ''
|
||||
|
||||
menu.meta.pageUids:
|
||||
label: 'Meta menu — page UIDs'
|
||||
description: 'Comma-separated list of page UIDs to display in the meta menu (e.g. Imprint, Privacy).'
|
||||
category: menu
|
||||
type: string
|
||||
default: ''
|
||||
@@ -0,0 +1,44 @@
|
||||
config {
|
||||
pageTitleProviders {
|
||||
vitec {
|
||||
provider = Evomedien\Vitec\PageTitle\ProductPageTitleProvider
|
||||
before = record
|
||||
before = seo
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Headless: Add products field to vitec_productlist
|
||||
tt_content.list.20.vitec_productlist = USER
|
||||
tt_content.list.20.vitec_productlist {
|
||||
userFunc = Evomedien\Vitec\UserFunc\ProductListJsonRenderer->render
|
||||
}
|
||||
|
||||
# Override the JSON structure for vitec_productlist
|
||||
tt_content.list.fields.content.fields.products = USER
|
||||
tt_content.list.fields.content.fields.products {
|
||||
userFunc = Evomedien\Vitec\UserFunc\ProductListJsonRenderer->render
|
||||
}
|
||||
|
||||
# Headless: Add product field to vitec_productshow
|
||||
tt_content.list.20.vitec_productshow = USER
|
||||
tt_content.list.20.vitec_productshow {
|
||||
userFunc = Evomedien\Vitec\UserFunc\ProductShowJsonRenderer->render
|
||||
}
|
||||
|
||||
# Override the JSON structure for vitec_productshow
|
||||
tt_content.list.fields.content.fields.product = USER
|
||||
tt_content.list.fields.content.fields.product {
|
||||
userFunc = Evomedien\Vitec\UserFunc\ProductShowJsonRenderer->render
|
||||
}
|
||||
|
||||
# Include container (layout) rendering definitions
|
||||
@import 'EXT:vitec/Configuration/TypoScript/Headless/vitec_containers.typoscript'
|
||||
|
||||
# Ensure headless's content element JSON definitions take precedence over
|
||||
# fluid_styled_content's HTML definitions. This is loaded at the end of the
|
||||
# Vitecset to guarantee winning load order.
|
||||
@import 'EXT:headless/Configuration/TypoScript/ContentElement/*.typoscript'
|
||||
|
||||
# Include menu (navigation) JSON definitions
|
||||
@import 'EXT:vitec/Configuration/TypoScript/Headless/vitec_menus.typoscript'
|
||||
@@ -0,0 +1,6 @@
|
||||
name: evomedien/vitecappset
|
||||
label: VITEC App Set
|
||||
settings:
|
||||
website:
|
||||
background:
|
||||
color: '#386492'
|
||||
@@ -0,0 +1,16 @@
|
||||
categories:
|
||||
myCategory:
|
||||
label: 'My Category'
|
||||
|
||||
settings:
|
||||
my.example.setting:
|
||||
label: 'My example setting'
|
||||
category: myCategory
|
||||
type: string
|
||||
default: ''
|
||||
|
||||
my.seoRelevantSetting:
|
||||
label: 'My SEO relevant setting'
|
||||
category: seo
|
||||
type: int
|
||||
default: 5
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
defined('TYPO3') or die();
|
||||
|
||||
(static function (): void {
|
||||
$l = 'LLL:EXT:vitec/Resources/Private/Language/locallang_pages.xlf:';
|
||||
|
||||
// Replace the default "Frontend Layout" dropdown on the page record
|
||||
// (Page Properties → Appearance → Frontend Layout) with the VITEC layouts.
|
||||
// Values are integer strings (DB column is INT).
|
||||
$GLOBALS['TCA']['pages']['columns']['layout']['config']['items'] = [
|
||||
['label' => $l . 'layout.0', 'value' => '0'],
|
||||
['label' => $l . 'layout.1', 'value' => '1'],
|
||||
['label' => $l . 'layout.2', 'value' => '2'],
|
||||
['label' => $l . 'layout.3', 'value' => '3'],
|
||||
['label' => $l . 'layout.4', 'value' => '4'],
|
||||
['label' => $l . 'layout.5', 'value' => '5'],
|
||||
['label' => $l . 'layout.6', 'value' => '6'],
|
||||
['label' => $l . 'layout.7', 'value' => '7'],
|
||||
['label' => $l . 'layout.8', 'value' => '8'],
|
||||
['label' => $l . 'layout.9', 'value' => '9'],
|
||||
['label' => $l . 'layout.10', 'value' => '10'],
|
||||
['label' => $l . 'layout.11', 'value' => '11'],
|
||||
['label' => $l . 'layout.12', 'value' => '12'],
|
||||
['label' => $l . 'layout.13', 'value' => '13'],
|
||||
['label' => $l . 'layout.14', 'value' => '14'],
|
||||
['label' => $l . 'layout.15', 'value' => '15'],
|
||||
['label' => $l . 'layout.16', 'value' => '16'],
|
||||
['label' => $l . 'layout.17', 'value' => '17'],
|
||||
['label' => $l . 'layout.18', 'value' => '18'],
|
||||
['label' => $l . 'layout.19', 'value' => '19'],
|
||||
['label' => $l . 'layout.20', 'value' => '20'],
|
||||
];
|
||||
$GLOBALS['TCA']['pages']['columns']['layout']['config']['default'] = '0';
|
||||
|
||||
// Hide the backend_layout / backend_layout_next_level fields from the editor —
|
||||
// they are auto-synced from the frontend layout via SyncBackendLayoutHook.
|
||||
$GLOBALS['TCA']['pages']['columns']['backend_layout']['displayCond'] = 'HIDE_FOR_NON_ADMINS';
|
||||
$GLOBALS['TCA']['pages']['columns']['backend_layout_next_level']['displayCond'] = 'HIDE_FOR_NON_ADMINS';
|
||||
})();
|
||||
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
// filepath: /usr/home/vitecxxx/public_html/live/extensions/vitec/Configuration/TCA/Overrides/sys_category.php
|
||||
|
||||
defined('TYPO3') || die();
|
||||
|
||||
// Add custom fields to sys_category
|
||||
$customSysCategoryColumns = [
|
||||
'class' => [
|
||||
'exclude' => true,
|
||||
'label' => 'CSS Class',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'size' => 30,
|
||||
'eval' => 'trim',
|
||||
],
|
||||
],
|
||||
'filetype' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Filetype (2nd part of filename)',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'size' => 30,
|
||||
'eval' => 'trim',
|
||||
],
|
||||
],
|
||||
'type' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Type - actual Type, can be different to filename',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'size' => 30,
|
||||
'eval' => 'trim',
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
// Add the fields to the TCA
|
||||
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('sys_category', $customSysCategoryColumns);
|
||||
|
||||
// Add the fields to the "General" tab of sys_category
|
||||
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes(
|
||||
'sys_category',
|
||||
'class, filetype, type',
|
||||
'',
|
||||
'after:description'
|
||||
);
|
||||
@@ -0,0 +1,4 @@
|
||||
<?php
|
||||
defined('TYPO3') || die();
|
||||
|
||||
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile('vitec', 'Configuration/TypoScript', 'VITEC');
|
||||
@@ -0,0 +1,120 @@
|
||||
<?php
|
||||
|
||||
defined('TYPO3') or die();
|
||||
|
||||
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
|
||||
use TYPO3\CMS\Extbase\Utility\ExtensionUtility;
|
||||
|
||||
// Register the Simple Card plugin
|
||||
$simplecardPluginSignature = \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
|
||||
'Vitec',
|
||||
'Simplecard',
|
||||
'Simple Card'
|
||||
);
|
||||
|
||||
// Register the "Single Success Story" plugin
|
||||
$usecaseShowPluginSignature = \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
|
||||
'Vitec',
|
||||
'Usecaseshow',
|
||||
'Single Success Story'
|
||||
);
|
||||
|
||||
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist'][$usecaseShowPluginSignature] = 'pi_flexform';
|
||||
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue(
|
||||
$usecaseShowPluginSignature,
|
||||
'FILE:EXT:vitec/Configuration/FlexForms/Usecase.xml'
|
||||
);
|
||||
|
||||
// Register the "Show Single Market" plugin
|
||||
$marketShowPluginSignature = \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
|
||||
'Vitec',
|
||||
'Marketshow',
|
||||
'Show Single Market'
|
||||
);
|
||||
|
||||
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist'][$marketShowPluginSignature] = 'pi_flexform';
|
||||
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue(
|
||||
$marketShowPluginSignature,
|
||||
'FILE:EXT:vitec/Configuration/FlexForms/Market.xml'
|
||||
);
|
||||
|
||||
// Register the "Show Single Solution" plugin
|
||||
$solutionShowPluginSignature = \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
|
||||
'Vitec',
|
||||
'Solutionshow',
|
||||
'Show Single Solution'
|
||||
);
|
||||
|
||||
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist'][$solutionShowPluginSignature] = 'pi_flexform';
|
||||
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue(
|
||||
$solutionShowPluginSignature,
|
||||
'FILE:EXT:vitec/Configuration/FlexForms/Solution.xml'
|
||||
);
|
||||
|
||||
// Register the "Show Products by Category" plugin
|
||||
$productListPluginSignature = \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
|
||||
'Vitec',
|
||||
'Productlist',
|
||||
'Show Products by Category'
|
||||
);
|
||||
|
||||
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist'][$productListPluginSignature] = 'pi_flexform';
|
||||
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue(
|
||||
$productListPluginSignature,
|
||||
'FILE:EXT:vitec/Configuration/FlexForms/Productlist.xml'
|
||||
);
|
||||
|
||||
// Register the "Show Single Product" plugin
|
||||
$productShowPluginSignature = \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
|
||||
'Vitec',
|
||||
'Productshow',
|
||||
'Show Single Product'
|
||||
);
|
||||
|
||||
|
||||
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist'][$productShowPluginSignature] = 'pi_flexform';
|
||||
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue(
|
||||
$productShowPluginSignature,
|
||||
'FILE:EXT:vitec/Configuration/FlexForms/Productshow.xml'
|
||||
);
|
||||
|
||||
// Register the "Shows List of all Success Stories" plugin
|
||||
$usecaseListPluginSignature = \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
|
||||
'Vitec',
|
||||
'Usecaselist',
|
||||
'Shows List of all Success Stories'
|
||||
);
|
||||
|
||||
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist'][$usecaseListPluginSignature] = 'pi_flexform';
|
||||
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue(
|
||||
$usecaseListPluginSignature,
|
||||
'FILE:EXT:vitec/Configuration/FlexForms/Usecaselist.xml'
|
||||
);
|
||||
|
||||
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist'][$simplecardPluginSignature] = 'pi_flexform';
|
||||
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue(
|
||||
$simplecardPluginSignature,
|
||||
'FILE:EXT:vitec/Configuration/FlexForms/Simplecard.xml'
|
||||
);
|
||||
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_excludelist']['vitec_datasheets'] = 'recursive,select_key,pages';
|
||||
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist']['vitec_datasheets'] = 'pi_flexform';
|
||||
ExtensionManagementUtility::addPiFlexFormValue(
|
||||
'vitec_datasheets',
|
||||
'FILE:EXT:vitec/Configuration/FlexForms/Datasheets.xml'
|
||||
);
|
||||
|
||||
// Change frame_class to allow multiple selections
|
||||
$GLOBALS['TCA']['tt_content']['columns']['frame_class']['config']['renderType'] = 'selectCheckBox';
|
||||
$GLOBALS['TCA']['tt_content']['columns']['frame_class']['config']['maxitems'] = 999;
|
||||
|
||||
// Add custom frame_class options for Vitec
|
||||
$GLOBALS['TCA']['tt_content']['columns']['frame_class']['config']['items'] = array_merge(
|
||||
$GLOBALS['TCA']['tt_content']['columns']['frame_class']['config']['items'],
|
||||
[
|
||||
['label' => 'Vitec: Full Width', 'value' => 'vitec-full-width'],
|
||||
['label' => 'Vitec: Centered Container', 'value' => 'vitec-centered'],
|
||||
['label' => 'Vitec: Card Style', 'value' => 'vitec-card'],
|
||||
['label' => 'Vitec: Dark Background', 'value' => 'vitec-dark'],
|
||||
['label' => 'Vitec: Highlight Box', 'value' => 'vitec-highlight'],
|
||||
]
|
||||
);
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
defined('TYPO3') or die();
|
||||
|
||||
use B13\Container\Tca\ContainerConfiguration;
|
||||
use B13\Container\Tca\Registry;
|
||||
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
|
||||
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
||||
|
||||
(static function (): void {
|
||||
$l = 'LLL:EXT:vitec/Resources/Private/Language/locallang_containers.xlf:';
|
||||
|
||||
/** @var Registry $registry */
|
||||
$registry = GeneralUtility::makeInstance(Registry::class);
|
||||
|
||||
$registry->configureContainer(
|
||||
(new ContainerConfiguration(
|
||||
'vitec_cols_25_25_25_25',
|
||||
$l . 'cols_25_25_25_25.title',
|
||||
$l . 'cols_25_25_25_25.description',
|
||||
[
|
||||
[
|
||||
['name' => $l . 'column.1', 'colPos' => 231],
|
||||
['name' => $l . 'column.2', 'colPos' => 232],
|
||||
['name' => $l . 'column.3', 'colPos' => 233],
|
||||
['name' => $l . 'column.4', 'colPos' => 234],
|
||||
],
|
||||
]
|
||||
))
|
||||
->setIcon('EXT:vitec/Resources/Public/Icons/vitec-cols-25-25-25-25.svg')
|
||||
->setGroup('vitec')
|
||||
->setSaveAndCloseInNewContentElementWizard(true)
|
||||
);
|
||||
|
||||
$GLOBALS['TCA']['tt_content']['types']['vitec_cols_25_25_25_25']['showitem'] =
|
||||
'--palette--;;general,
|
||||
header;LLL:EXT:vitec/Resources/Private/Language/locallang_containers.xlf:section.heading,
|
||||
subheader;LLL:EXT:vitec/Resources/Private/Language/locallang_containers.xlf:section.subline,
|
||||
tx_vitec_bg_variant,
|
||||
--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
|
||||
--palette--;;frames,
|
||||
--palette--;;appearanceLinks,
|
||||
--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';
|
||||
|
||||
ExtensionManagementUtility::addPageTSConfig(<<<TSCONFIG
|
||||
mod.wizards.newContentElement.wizardItems.vitec.elements.vitec_cols_25_25_25_25 {
|
||||
iconIdentifier = vitec-cols-25-25-25-25
|
||||
title = LLL:EXT:vitec/Resources/Private/Language/locallang_containers.xlf:cols_25_25_25_25.title
|
||||
description = LLL:EXT:vitec/Resources/Private/Language/locallang_containers.xlf:cols_25_25_25_25.description
|
||||
tt_content_defValues {
|
||||
CType = vitec_cols_25_25_25_25
|
||||
}
|
||||
}
|
||||
TSCONFIG);
|
||||
})();
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
defined('TYPO3') or die();
|
||||
|
||||
use B13\Container\Tca\ContainerConfiguration;
|
||||
use B13\Container\Tca\Registry;
|
||||
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
|
||||
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
||||
|
||||
(static function (): void {
|
||||
$l = 'LLL:EXT:vitec/Resources/Private/Language/locallang_containers.xlf:';
|
||||
|
||||
/** @var Registry $registry */
|
||||
$registry = GeneralUtility::makeInstance(Registry::class);
|
||||
|
||||
$registry->configureContainer(
|
||||
(new ContainerConfiguration(
|
||||
'vitec_cols_33_33_33',
|
||||
$l . 'cols_33_33_33.title',
|
||||
$l . 'cols_33_33_33.description',
|
||||
[
|
||||
[
|
||||
['name' => $l . 'column.1', 'colPos' => 221],
|
||||
['name' => $l . 'column.2', 'colPos' => 222],
|
||||
['name' => $l . 'column.3', 'colPos' => 223],
|
||||
],
|
||||
]
|
||||
))
|
||||
->setIcon('EXT:vitec/Resources/Public/Icons/vitec-cols-33-33-33.svg')
|
||||
->setGroup('vitec')
|
||||
->setSaveAndCloseInNewContentElementWizard(true)
|
||||
);
|
||||
|
||||
$GLOBALS['TCA']['tt_content']['types']['vitec_cols_33_33_33']['showitem'] =
|
||||
'--palette--;;general,
|
||||
header;LLL:EXT:vitec/Resources/Private/Language/locallang_containers.xlf:section.heading,
|
||||
subheader;LLL:EXT:vitec/Resources/Private/Language/locallang_containers.xlf:section.subline,
|
||||
tx_vitec_bg_variant,
|
||||
--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
|
||||
--palette--;;frames,
|
||||
--palette--;;appearanceLinks,
|
||||
--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';
|
||||
|
||||
ExtensionManagementUtility::addPageTSConfig(<<<TSCONFIG
|
||||
mod.wizards.newContentElement.wizardItems.vitec.elements.vitec_cols_33_33_33 {
|
||||
iconIdentifier = vitec-cols-33-33-33
|
||||
title = LLL:EXT:vitec/Resources/Private/Language/locallang_containers.xlf:cols_33_33_33.title
|
||||
description = LLL:EXT:vitec/Resources/Private/Language/locallang_containers.xlf:cols_33_33_33.description
|
||||
tt_content_defValues {
|
||||
CType = vitec_cols_33_33_33
|
||||
}
|
||||
}
|
||||
TSCONFIG);
|
||||
})();
|
||||
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
defined('TYPO3') or die();
|
||||
|
||||
use B13\Container\Tca\ContainerConfiguration;
|
||||
use B13\Container\Tca\Registry;
|
||||
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
|
||||
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
||||
|
||||
(static function (): void {
|
||||
$l = 'LLL:EXT:vitec/Resources/Private/Language/locallang_containers.xlf:';
|
||||
|
||||
/** @var Registry $registry */
|
||||
$registry = GeneralUtility::makeInstance(Registry::class);
|
||||
|
||||
$registry->configureContainer(
|
||||
(new ContainerConfiguration(
|
||||
'vitec_cols_33_66',
|
||||
$l . 'cols_33_66.title',
|
||||
$l . 'cols_33_66.description',
|
||||
[
|
||||
[
|
||||
['name' => $l . 'column.sidebar_33', 'colPos' => 251],
|
||||
['name' => $l . 'column.main_66', 'colPos' => 252],
|
||||
],
|
||||
]
|
||||
))
|
||||
->setIcon('EXT:vitec/Resources/Public/Icons/vitec-cols-33-66.svg')
|
||||
->setGroup('vitec')
|
||||
->setSaveAndCloseInNewContentElementWizard(true)
|
||||
);
|
||||
|
||||
$GLOBALS['TCA']['tt_content']['types']['vitec_cols_33_66']['showitem'] =
|
||||
'--palette--;;general,
|
||||
header;LLL:EXT:vitec/Resources/Private/Language/locallang_containers.xlf:section.heading,
|
||||
subheader;LLL:EXT:vitec/Resources/Private/Language/locallang_containers.xlf:section.subline,
|
||||
tx_vitec_bg_variant,
|
||||
--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
|
||||
--palette--;;frames,
|
||||
--palette--;;appearanceLinks,
|
||||
--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';
|
||||
|
||||
ExtensionManagementUtility::addPageTSConfig(<<<TSCONFIG
|
||||
mod.wizards.newContentElement.wizardItems.vitec.elements.vitec_cols_33_66 {
|
||||
iconIdentifier = vitec-cols-33-66
|
||||
title = LLL:EXT:vitec/Resources/Private/Language/locallang_containers.xlf:cols_33_66.title
|
||||
description = LLL:EXT:vitec/Resources/Private/Language/locallang_containers.xlf:cols_33_66.description
|
||||
tt_content_defValues {
|
||||
CType = vitec_cols_33_66
|
||||
}
|
||||
}
|
||||
TSCONFIG);
|
||||
})();
|
||||
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
defined('TYPO3') or die();
|
||||
|
||||
use B13\Container\Tca\ContainerConfiguration;
|
||||
use B13\Container\Tca\Registry;
|
||||
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
|
||||
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
||||
|
||||
(static function (): void {
|
||||
$l = 'LLL:EXT:vitec/Resources/Private/Language/locallang_containers.xlf:';
|
||||
|
||||
/** @var Registry $registry */
|
||||
$registry = GeneralUtility::makeInstance(Registry::class);
|
||||
|
||||
$registry->configureContainer(
|
||||
(new ContainerConfiguration(
|
||||
'vitec_cols_50_50',
|
||||
$l . 'cols_50_50.title',
|
||||
$l . 'cols_50_50.description',
|
||||
[
|
||||
[
|
||||
['name' => $l . 'column.1', 'colPos' => 211],
|
||||
['name' => $l . 'column.2', 'colPos' => 212],
|
||||
],
|
||||
]
|
||||
))
|
||||
->setIcon('EXT:vitec/Resources/Public/Icons/vitec-cols-50-50.svg')
|
||||
->setGroup('vitec')
|
||||
->setSaveAndCloseInNewContentElementWizard(true)
|
||||
);
|
||||
|
||||
$GLOBALS['TCA']['tt_content']['types']['vitec_cols_50_50']['showitem'] =
|
||||
'--palette--;;general,
|
||||
header;LLL:EXT:vitec/Resources/Private/Language/locallang_containers.xlf:section.heading,
|
||||
subheader;LLL:EXT:vitec/Resources/Private/Language/locallang_containers.xlf:section.subline,
|
||||
tx_vitec_bg_variant,
|
||||
--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
|
||||
--palette--;;frames,
|
||||
--palette--;;appearanceLinks,
|
||||
--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';
|
||||
|
||||
ExtensionManagementUtility::addPageTSConfig(<<<TSCONFIG
|
||||
mod.wizards.newContentElement.wizardItems.vitec.elements.vitec_cols_50_50 {
|
||||
iconIdentifier = vitec-cols-50-50
|
||||
title = LLL:EXT:vitec/Resources/Private/Language/locallang_containers.xlf:cols_50_50.title
|
||||
description = LLL:EXT:vitec/Resources/Private/Language/locallang_containers.xlf:cols_50_50.description
|
||||
tt_content_defValues {
|
||||
CType = vitec_cols_50_50
|
||||
}
|
||||
}
|
||||
TSCONFIG);
|
||||
})();
|
||||
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
defined('TYPO3') or die();
|
||||
|
||||
use B13\Container\Tca\ContainerConfiguration;
|
||||
use B13\Container\Tca\Registry;
|
||||
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
|
||||
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
||||
|
||||
(static function (): void {
|
||||
$l = 'LLL:EXT:vitec/Resources/Private/Language/locallang_containers.xlf:';
|
||||
|
||||
/** @var Registry $registry */
|
||||
$registry = GeneralUtility::makeInstance(Registry::class);
|
||||
|
||||
$registry->configureContainer(
|
||||
(new ContainerConfiguration(
|
||||
'vitec_cols_66_33',
|
||||
$l . 'cols_66_33.title',
|
||||
$l . 'cols_66_33.description',
|
||||
[
|
||||
[
|
||||
['name' => $l . 'column.main_66', 'colPos' => 241],
|
||||
['name' => $l . 'column.sidebar_33', 'colPos' => 242],
|
||||
],
|
||||
]
|
||||
))
|
||||
->setIcon('EXT:vitec/Resources/Public/Icons/vitec-cols-66-33.svg')
|
||||
->setGroup('vitec')
|
||||
->setSaveAndCloseInNewContentElementWizard(true)
|
||||
);
|
||||
|
||||
$GLOBALS['TCA']['tt_content']['types']['vitec_cols_66_33']['showitem'] =
|
||||
'--palette--;;general,
|
||||
header;LLL:EXT:vitec/Resources/Private/Language/locallang_containers.xlf:section.heading,
|
||||
subheader;LLL:EXT:vitec/Resources/Private/Language/locallang_containers.xlf:section.subline,
|
||||
tx_vitec_bg_variant,
|
||||
--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
|
||||
--palette--;;frames,
|
||||
--palette--;;appearanceLinks,
|
||||
--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';
|
||||
|
||||
ExtensionManagementUtility::addPageTSConfig(<<<TSCONFIG
|
||||
mod.wizards.newContentElement.wizardItems.vitec.elements.vitec_cols_66_33 {
|
||||
iconIdentifier = vitec-cols-66-33
|
||||
title = LLL:EXT:vitec/Resources/Private/Language/locallang_containers.xlf:cols_66_33.title
|
||||
description = LLL:EXT:vitec/Resources/Private/Language/locallang_containers.xlf:cols_66_33.description
|
||||
tt_content_defValues {
|
||||
CType = vitec_cols_66_33
|
||||
}
|
||||
}
|
||||
TSCONFIG);
|
||||
})();
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
defined('TYPO3') or die();
|
||||
|
||||
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
|
||||
|
||||
(static function (): void {
|
||||
$l = 'LLL:EXT:vitec/Resources/Private/Language/locallang_containers.xlf:';
|
||||
|
||||
// Shared field: Background Variant for all VITEC containers
|
||||
ExtensionManagementUtility::addTCAcolumns('tt_content', [
|
||||
'tx_vitec_bg_variant' => [
|
||||
'label' => $l . 'bg_variant.label',
|
||||
'config' => [
|
||||
'type' => 'select',
|
||||
'renderType' => 'selectSingle',
|
||||
'items' => [
|
||||
['label' => $l . 'bg_variant.option.none', 'value' => 'none'],
|
||||
['label' => $l . 'bg_variant.option.orange', 'value' => 'orange'],
|
||||
['label' => $l . 'bg_variant.option.blue', 'value' => 'blue'],
|
||||
['label' => $l . 'bg_variant.option.graphite', 'value' => 'graphite'],
|
||||
['label' => $l . 'bg_variant.option.midnight', 'value' => 'midnight'],
|
||||
],
|
||||
'default' => 'none',
|
||||
],
|
||||
],
|
||||
]);
|
||||
|
||||
// Register VITEC wizard group header
|
||||
ExtensionManagementUtility::addPageTSConfig(<<<TSCONFIG
|
||||
mod.wizards.newContentElement.wizardItems.vitec {
|
||||
header = LLL:EXT:vitec/Resources/Private/Language/locallang_containers.xlf:group.header
|
||||
show = *
|
||||
}
|
||||
TSCONFIG);
|
||||
})();
|
||||
@@ -0,0 +1,380 @@
|
||||
<?php
|
||||
return [
|
||||
'ctrl' => [
|
||||
'title' => 'VITEC Download',
|
||||
'label' => 'title',
|
||||
'tstamp' => 'tstamp',
|
||||
'crdate' => 'crdate',
|
||||
'cruser_id' => 'cruser_id',
|
||||
'versioningWS' => true,
|
||||
'languageField' => 'sys_language_uid',
|
||||
'transOrigPointerField' => 'l10n_parent',
|
||||
'transOrigDiffSourceField' => 'l10n_diffsource',
|
||||
'delete' => 'deleted',
|
||||
'enablecolumns' => [
|
||||
'disabled' => 'hidden',
|
||||
'starttime' => 'starttime',
|
||||
'endtime' => 'endtime',
|
||||
],
|
||||
'searchFields' => 'title,slug,teaser,description,sort1,sort2,sort3,icon,filepath,fileprefix',
|
||||
'iconfile' => 'EXT:vitec/Resources/Public/Icons/tx_vitec_domain_model_download.gif'
|
||||
],
|
||||
'types' => [
|
||||
'1' => ['showitem' => 'hidden, title, slug, keywords, teaser, description,
|
||||
--div--;File, useolddl, file, fileprefix, categories,
|
||||
--div--;Visibility, hideonapp, hideonwebsite, hideondatasheets, hideonproducts,
|
||||
--div--;Currently not in use,icon, filepath, private_download, onlyondatasheets, sort1, sort2, sort3,
|
||||
--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access, starttime, endtime'],
|
||||
],
|
||||
'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',
|
||||
'default' => 0,
|
||||
'items' => [
|
||||
['', 0],
|
||||
],
|
||||
'foreign_table' => 'tx_vitec_domain_model_download',
|
||||
'foreign_table_where' => 'AND {#tx_vitec_domain_model_download}.{#pid}=###CURRENT_PID### AND {#tx_vitec_domain_model_download}.{#sys_language_uid} IN (-1,0)',
|
||||
],
|
||||
],
|
||||
'l10n_diffsource' => [
|
||||
'config' => [
|
||||
'type' => 'passthrough',
|
||||
],
|
||||
],
|
||||
'hidden' => [
|
||||
'exclude' => true,
|
||||
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.visible',
|
||||
'config' => [
|
||||
'type' => 'check',
|
||||
'renderType' => 'checkboxToggle',
|
||||
'items' => [
|
||||
[
|
||||
0 => '',
|
||||
1 => '',
|
||||
'invertStateDisplay' => true
|
||||
]
|
||||
],
|
||||
],
|
||||
],
|
||||
'starttime' => [
|
||||
'exclude' => true,
|
||||
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'renderType' => 'inputDateTime',
|
||||
'eval' => 'datetime,int',
|
||||
'default' => 0,
|
||||
'behaviour' => [
|
||||
'allowLanguageSynchronization' => true
|
||||
]
|
||||
],
|
||||
],
|
||||
'endtime' => [
|
||||
'exclude' => true,
|
||||
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'renderType' => 'inputDateTime',
|
||||
'eval' => 'datetime,int',
|
||||
'default' => 0,
|
||||
'range' => [
|
||||
'upper' => mktime(0, 0, 0, 1, 1, 2038)
|
||||
],
|
||||
'behaviour' => [
|
||||
'allowLanguageSynchronization' => true
|
||||
]
|
||||
],
|
||||
],
|
||||
'categories' => [
|
||||
'config' => [
|
||||
'type' => 'category'
|
||||
]
|
||||
],
|
||||
'title' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Title',
|
||||
'description' => 'Title of the Download - this will be shown in search results',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'size' => 30,
|
||||
'eval' => 'trim',
|
||||
'default' => ''
|
||||
],
|
||||
],
|
||||
'teaser' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Teaser Text for Download Cards',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'size' => 30,
|
||||
'eval' => 'trim',
|
||||
'default' => ''
|
||||
],
|
||||
],
|
||||
'slug' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Slug',
|
||||
'config' => [
|
||||
'type' => 'slug',
|
||||
'generatorOptions' => [
|
||||
'fields' => ['title'],
|
||||
'fieldSeparator' => '/',
|
||||
'prefixParentPageSlug' => true,
|
||||
'replacements' => [
|
||||
'/' => '',
|
||||
],
|
||||
],
|
||||
'fallbackCharacter' => '-',
|
||||
'eval' => 'unique',
|
||||
],
|
||||
],
|
||||
'keywords' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Keywords for internal search engine',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'size' => 30,
|
||||
'eval' => 'trim',
|
||||
'default' => ''
|
||||
],
|
||||
],
|
||||
'description' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Description',
|
||||
'config' => [
|
||||
'type' => 'text',
|
||||
'enableRichtext' => true,
|
||||
'richtextConfiguration' => 'default',
|
||||
'fieldControl' => [
|
||||
'fullScreenRichtext' => [
|
||||
'disabled' => false,
|
||||
],
|
||||
],
|
||||
'cols' => 40,
|
||||
'rows' => 15,
|
||||
'eval' => 'trim',
|
||||
],
|
||||
|
||||
],
|
||||
'file' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Manual File Upload - if "Use manual file upload" is checked',
|
||||
'config' => [
|
||||
'type' => 'file',
|
||||
'appearance' => [
|
||||
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:media.addFileReference'
|
||||
],
|
||||
'foreign_types' => [
|
||||
'0' => [
|
||||
'showitem' => '
|
||||
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
|
||||
--palette--;;filePalette'
|
||||
],
|
||||
\TYPO3\CMS\Core\Resource\File::FILETYPE_TEXT => [
|
||||
'showitem' => '
|
||||
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
|
||||
--palette--;;filePalette'
|
||||
],
|
||||
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
|
||||
'showitem' => '
|
||||
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
|
||||
--palette--;;filePalette'
|
||||
],
|
||||
\TYPO3\CMS\Core\Resource\File::FILETYPE_AUDIO => [
|
||||
'showitem' => '
|
||||
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
|
||||
--palette--;;filePalette'
|
||||
],
|
||||
\TYPO3\CMS\Core\Resource\File::FILETYPE_VIDEO => [
|
||||
'showitem' => '
|
||||
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
|
||||
--palette--;;filePalette'
|
||||
],
|
||||
\TYPO3\CMS\Core\Resource\File::FILETYPE_APPLICATION => [
|
||||
'showitem' => '
|
||||
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
|
||||
--palette--;;filePalette'
|
||||
]
|
||||
],
|
||||
'foreign_match_fields' => [
|
||||
'fieldname' => 'file',
|
||||
'tablenames' => 'tx_vitec_domain_model_download',
|
||||
],
|
||||
'maxitems' => 1
|
||||
],
|
||||
],
|
||||
'sort1' => [
|
||||
'exclude' => true,
|
||||
'label' => 'LLL:EXT:vitec/Resources/Private/Language/locallang_db.xlf:tx_vitec_domain_model_download.sort1',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'size' => 30,
|
||||
'eval' => 'trim',
|
||||
'default' => ''
|
||||
],
|
||||
],
|
||||
'sort2' => [
|
||||
'exclude' => true,
|
||||
'label' => 'LLL:EXT:vitec/Resources/Private/Language/locallang_db.xlf:tx_vitec_domain_model_download.sort2',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'size' => 30,
|
||||
'eval' => 'trim',
|
||||
'default' => ''
|
||||
],
|
||||
],
|
||||
'sort3' => [
|
||||
'exclude' => true,
|
||||
'label' => 'LLL:EXT:vitec/Resources/Private/Language/locallang_db.xlf:tx_vitec_domain_model_download.sort3',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'size' => 30,
|
||||
'eval' => 'trim',
|
||||
'default' => ''
|
||||
],
|
||||
],
|
||||
'private_download' => [
|
||||
'exclude' => true,
|
||||
'label' => 'LLL:EXT:vitec/Resources/Private/Language/locallang_db.xlf:tx_vitec_domain_model_download.private_download',
|
||||
'config' => [
|
||||
'type' => 'check',
|
||||
'renderType' => 'checkboxToggle',
|
||||
'items' => [
|
||||
[
|
||||
0 => '',
|
||||
1 => '',
|
||||
]
|
||||
],
|
||||
'default' => 0,
|
||||
]
|
||||
],
|
||||
'hideonapp' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Do not show this Download in the App',
|
||||
'config' => [
|
||||
'type' => 'check',
|
||||
'renderType' => 'checkboxToggle',
|
||||
'items' => [
|
||||
[
|
||||
0 => '',
|
||||
1 => '',
|
||||
]
|
||||
],
|
||||
'default' => 0,
|
||||
]
|
||||
],
|
||||
'hideonwebsite' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Do not show this Download on the Website',
|
||||
'config' => [
|
||||
'type' => 'check',
|
||||
'renderType' => 'checkboxToggle',
|
||||
'items' => [
|
||||
[
|
||||
0 => '',
|
||||
1 => '',
|
||||
]
|
||||
],
|
||||
'default' => 0,
|
||||
]
|
||||
],
|
||||
'hideondatasheets' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Do not show this Download on the Datasheets-Page',
|
||||
'config' => [
|
||||
'type' => 'check',
|
||||
'renderType' => 'checkboxToggle',
|
||||
'items' => [
|
||||
[
|
||||
0 => '',
|
||||
1 => '',
|
||||
]
|
||||
],
|
||||
'default' => 0,
|
||||
]
|
||||
],
|
||||
'hideonproducts' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Do not show this Download on a Products-Page',
|
||||
'config' => [
|
||||
'type' => 'check',
|
||||
'renderType' => 'checkboxToggle',
|
||||
'items' => [
|
||||
[
|
||||
0 => '',
|
||||
1 => '',
|
||||
]
|
||||
],
|
||||
'default' => 0,
|
||||
]
|
||||
],
|
||||
'icon' => [
|
||||
'exclude' => true,
|
||||
'label' => 'LLL:EXT:vitec/Resources/Private/Language/locallang_db.xlf:tx_vitec_domain_model_download.icon',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'size' => 30,
|
||||
'eval' => 'trim',
|
||||
'default' => ''
|
||||
],
|
||||
],
|
||||
'filepath' => [
|
||||
'exclude' => true,
|
||||
'label' => 'LLL:EXT:vitec/Resources/Private/Language/locallang_db.xlf:tx_vitec_domain_model_download.filepath',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'size' => 30,
|
||||
'eval' => 'trim',
|
||||
'default' => ''
|
||||
],
|
||||
],
|
||||
'fileprefix' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Fileprefix (1st part of filename)',
|
||||
'description' => 'This is the first part of the filename.',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'size' => 30,
|
||||
'eval' => 'trim',
|
||||
'default' => ''
|
||||
],
|
||||
],
|
||||
'useolddl' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Use manual file upload',
|
||||
'config' => [
|
||||
'type' => 'check',
|
||||
'renderType' => 'checkboxToggle',
|
||||
'items' => [
|
||||
[
|
||||
0 => '',
|
||||
1 => '',
|
||||
]
|
||||
],
|
||||
'default' => 0,
|
||||
]
|
||||
],
|
||||
],
|
||||
];
|
||||
@@ -0,0 +1,204 @@
|
||||
<?php
|
||||
return [
|
||||
'ctrl' => [
|
||||
'title' => 'VITEC Market',
|
||||
'label' => 'title',
|
||||
'tstamp' => 'tstamp',
|
||||
'crdate' => 'crdate',
|
||||
'cruser_id' => 'cruser_id',
|
||||
'versioningWS' => true,
|
||||
'languageField' => 'sys_language_uid',
|
||||
'transOrigPointerField' => 'l10n_parent',
|
||||
'transOrigDiffSourceField' => 'l10n_diffsource',
|
||||
'delete' => 'deleted',
|
||||
'enablecolumns' => [
|
||||
'disabled' => 'hidden',
|
||||
'starttime' => 'starttime',
|
||||
'endtime' => 'endtime',
|
||||
],
|
||||
'searchFields' => 'title,subtitle,teaser',
|
||||
'iconfile' => 'EXT:vitec/Resources/Public/Icons/tx_vitec_domain_model_market.gif',
|
||||
'security' => [
|
||||
'ignorePageTypeRestriction' => true,
|
||||
],
|
||||
],
|
||||
'types' => [
|
||||
'1' => [
|
||||
'showitem' => 'title, subtitle, teaser, description, image,
|
||||
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories, categories,
|
||||
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language, sys_language_uid, l10n_parent, l10n_diffsource,
|
||||
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access, hidden, starttime, endtime',
|
||||
],
|
||||
],
|
||||
'columns' => [
|
||||
'sys_language_uid' => [
|
||||
'exclude' => true,
|
||||
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
|
||||
'config' => [
|
||||
'type' => 'language',
|
||||
],
|
||||
],
|
||||
'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',
|
||||
'default' => 0,
|
||||
'items' => [
|
||||
['', 0],
|
||||
],
|
||||
'foreign_table' => 'tx_vitec_domain_model_market',
|
||||
'foreign_table_where' => 'AND {#tx_vitec_domain_model_market}.{#pid}=###CURRENT_PID### AND {#tx_vitec_domain_model_market}.{#sys_language_uid} IN (-1,0)',
|
||||
],
|
||||
],
|
||||
'l10n_diffsource' => [
|
||||
'config' => [
|
||||
'type' => 'passthrough',
|
||||
],
|
||||
],
|
||||
'hidden' => [
|
||||
'exclude' => true,
|
||||
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.visible',
|
||||
'config' => [
|
||||
'type' => 'check',
|
||||
'renderType' => 'checkboxToggle',
|
||||
'items' => [
|
||||
[
|
||||
0 => '',
|
||||
1 => '',
|
||||
'invertStateDisplay' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
'starttime' => [
|
||||
'exclude' => true,
|
||||
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'renderType' => 'inputDateTime',
|
||||
'eval' => 'datetime,int',
|
||||
'default' => 0,
|
||||
'behaviour' => [
|
||||
'allowLanguageSynchronization' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
'endtime' => [
|
||||
'exclude' => true,
|
||||
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'renderType' => 'inputDateTime',
|
||||
'eval' => 'datetime,int',
|
||||
'default' => 0,
|
||||
'range' => [
|
||||
'upper' => mktime(0, 0, 0, 1, 1, 2038),
|
||||
],
|
||||
'behaviour' => [
|
||||
'allowLanguageSynchronization' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
'title' => [
|
||||
'exclude' => false,
|
||||
'label' => 'Title',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'size' => 30,
|
||||
'eval' => 'trim',
|
||||
'required' => true,
|
||||
'default' => '',
|
||||
],
|
||||
],
|
||||
'subtitle' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Subtitle',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'size' => 30,
|
||||
'eval' => 'trim',
|
||||
'default' => '',
|
||||
],
|
||||
],
|
||||
'teaser' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Short Teaser (optional)',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'size' => 30,
|
||||
'eval' => 'trim',
|
||||
'default' => '',
|
||||
],
|
||||
],
|
||||
'description' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Description',
|
||||
'config' => [
|
||||
'type' => 'text',
|
||||
'enableRichtext' => true,
|
||||
'eval' => 'trim',
|
||||
'default' => '',
|
||||
],
|
||||
'defaultExtras' => 'richtext:rte_transform[mode=ts_css]',
|
||||
],
|
||||
'categories' => [
|
||||
'config' => [
|
||||
'type' => 'category',
|
||||
],
|
||||
],
|
||||
'image' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Image',
|
||||
'config' => [
|
||||
'type' => 'inline',
|
||||
'foreign_table' => 'sys_file_reference',
|
||||
'foreign_field' => 'uid_foreign',
|
||||
'foreign_sortby' => 'sorting_foreign',
|
||||
'foreign_table_field' => 'tablenames',
|
||||
'foreign_match_fields' => [
|
||||
'fieldname' => 'image',
|
||||
],
|
||||
'foreign_label' => 'uid_local',
|
||||
'foreign_selector' => 'uid_local',
|
||||
'overrideChildTca' => [
|
||||
'columns' => [
|
||||
'uid_local' => [
|
||||
'config' => [
|
||||
'appearance' => [
|
||||
'elementBrowserType' => 'file',
|
||||
'elementBrowserAllowed' => 'jpg,jpeg,png,gif,webp,svg',
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
'types' => [
|
||||
'0' => [
|
||||
'showitem' => '
|
||||
--palette--;;imageoverlayPalette,
|
||||
--palette--;;filePalette',
|
||||
],
|
||||
],
|
||||
],
|
||||
'maxitems' => 1,
|
||||
'appearance' => [
|
||||
'headerThumbnail' => [
|
||||
'field' => 'uid_local',
|
||||
'width' => '45',
|
||||
'height' => '45',
|
||||
],
|
||||
'enabledControls' => [
|
||||
'info' => true,
|
||||
'new' => false,
|
||||
'dragdrop' => true,
|
||||
'sort' => false,
|
||||
'hide' => true,
|
||||
'delete' => true,
|
||||
],
|
||||
'fileUploadAllowed' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
@@ -0,0 +1,541 @@
|
||||
<?php
|
||||
return [
|
||||
'ctrl' => [
|
||||
'title' => 'VITEC Product',
|
||||
'label' => 'title',
|
||||
'tstamp' => 'tstamp',
|
||||
'crdate' => 'crdate',
|
||||
'cruser_id' => 'cruser_id',
|
||||
'versioningWS' => true,
|
||||
'languageField' => 'sys_language_uid',
|
||||
'transOrigPointerField' => 'l10n_parent',
|
||||
'transOrigDiffSourceField' => 'l10n_diffsource',
|
||||
'delete' => 'deleted',
|
||||
'enablecolumns' => [
|
||||
'disabled' => 'hidden',
|
||||
'starttime' => 'starttime',
|
||||
'endtime' => 'endtime',
|
||||
],
|
||||
'searchFields' => 'title,slug',
|
||||
'iconfile' => 'EXT:vitec/Resources/Public/Icons/tx_vitec_domain_model_product.gif',
|
||||
'security' => [
|
||||
'ignorePageTypeRestriction' => true,
|
||||
],
|
||||
],
|
||||
'types' => [
|
||||
'1' => ['showitem' => 'title, subtitle, slug, teaser, description, applications, highlights, contentelement, contentelementcta, downloads,
|
||||
--div--;SEO, seotitle, urltitle, seometa, keywords, structureddata,
|
||||
--div--;Images and Videos, productimage, ogimage, video,
|
||||
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories, categories,
|
||||
--div--;Visibility, hideonapp, hideonwebsite, hideondatasheets, hideonproducts, shortcut, shortcutpid,
|
||||
--div--;Misc, legacy, supportproduct, subproduct, relatedprodukt,
|
||||
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access, hidden, starttime, endtime'],
|
||||
],
|
||||
'columns' => [
|
||||
'sys_language_uid' => [
|
||||
'exclude' => true,
|
||||
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
|
||||
'config' => [
|
||||
'type' => 'language',
|
||||
],
|
||||
],
|
||||
'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',
|
||||
'default' => 0,
|
||||
'items' => [
|
||||
['', 0],
|
||||
],
|
||||
'foreign_table' => 'tx_vitec_domain_model_product',
|
||||
'foreign_table_where' => 'AND {#tx_vitec_domain_model_product}.{#pid}=###CURRENT_PID### AND {#tx_vitec_domain_model_product}.{#sys_language_uid} IN (-1,0)',
|
||||
],
|
||||
],
|
||||
'l10n_diffsource' => [
|
||||
'config' => [
|
||||
'type' => 'passthrough',
|
||||
],
|
||||
],
|
||||
'hidden' => [
|
||||
'exclude' => true,
|
||||
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.visible',
|
||||
'config' => [
|
||||
'type' => 'check',
|
||||
'renderType' => 'checkboxToggle',
|
||||
'items' => [
|
||||
[
|
||||
0 => '',
|
||||
1 => '',
|
||||
'invertStateDisplay' => true
|
||||
]
|
||||
],
|
||||
],
|
||||
],
|
||||
'starttime' => [
|
||||
'exclude' => true,
|
||||
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'renderType' => 'inputDateTime',
|
||||
'eval' => 'datetime,int',
|
||||
'default' => 0,
|
||||
'behaviour' => [
|
||||
'allowLanguageSynchronization' => true
|
||||
]
|
||||
],
|
||||
],
|
||||
'endtime' => [
|
||||
'exclude' => true,
|
||||
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'renderType' => 'inputDateTime',
|
||||
'eval' => 'datetime,int',
|
||||
'default' => 0,
|
||||
'range' => [
|
||||
'upper' => mktime(0, 0, 0, 1, 1, 2038)
|
||||
],
|
||||
'behaviour' => [
|
||||
'allowLanguageSynchronization' => true
|
||||
]
|
||||
],
|
||||
],
|
||||
'categories' => [
|
||||
'config' => [
|
||||
'type' => 'category'
|
||||
]
|
||||
],
|
||||
'title' => [
|
||||
'exclude' => false,
|
||||
'label' => 'LLL:EXT:vitec/Resources/Private/Language/locallang_db.xlf:tx_vitec_domain_model_product.title',
|
||||
'description' => 'LLL:EXT:vitec/Resources/Private/Language/locallang_db.xlf:tx_vitec_domain_model_product.title.description',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'size' => 30,
|
||||
'eval' => 'trim',
|
||||
'required' => true,
|
||||
'default' => ''
|
||||
],
|
||||
],
|
||||
'slug' => [
|
||||
'exclude' => false,
|
||||
'label' => 'LLL:EXT:vitec/Resources/Private/Language/locallang_db.xlf:tx_vitec_domain_model_product.slug',
|
||||
'description' => 'LLL:EXT:vitec/Resources/Private/Language/locallang_db.xlf:tx_vitec_domain_model_product.slug.description',
|
||||
'config' => [
|
||||
'type' => 'slug',
|
||||
'size' => 50,
|
||||
'generatorOptions' => [
|
||||
'fields' => ['title'], // TODO: adjust this field to the one you want to use
|
||||
'fieldSeparator' => '-',
|
||||
'replacements' => [
|
||||
'/' => '',
|
||||
],
|
||||
],
|
||||
'fallbackCharacter' => '-',
|
||||
'eval' => 'uniqueInPid',
|
||||
],
|
||||
|
||||
],
|
||||
'seotitle' => [
|
||||
'exclude' => false,
|
||||
'label' => 'SEO-Title',
|
||||
'description' => 'SEO specific title, used for sharing options',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'size' => 30,
|
||||
'eval' => 'trim',
|
||||
'default' => ''
|
||||
],
|
||||
],
|
||||
'urltitle' => [
|
||||
'exclude' => false,
|
||||
'label' => 'URL-Title',
|
||||
'description' => 'LLL:EXT:vitec/Resources/Private/Language/locallang_db.xlf:tx_vitec_domain_model_product.urltitle.description',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'size' => 30,
|
||||
'eval' => 'trim',
|
||||
'default' => ''
|
||||
],
|
||||
],
|
||||
'video' => [
|
||||
'exclude' => false,
|
||||
'label' => 'Product Video - just the Youtube Clip ID',
|
||||
'description' => 'Product Video - just the Youtube Clip ID',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'size' => 30,
|
||||
'eval' => 'trim',
|
||||
'default' => ''
|
||||
],
|
||||
],
|
||||
'downloads' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Downloads',
|
||||
'config' => [
|
||||
'type' => 'select',
|
||||
'renderType' => 'selectMultipleSideBySide',
|
||||
'foreign_table' => 'tx_vitec_domain_model_download',
|
||||
'MM' => 'tx_vitec_product_download_mm', // Define the MM table for the relation
|
||||
'size' => 10,
|
||||
'maxitems' => 9999,
|
||||
'minitems' => 0,
|
||||
'enableMultiSelectFilterTextfield' => true, // Optional: Adds a search box for filtering
|
||||
],
|
||||
],
|
||||
'structureddata' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Structured Data in JSON Format',
|
||||
'config' => [
|
||||
'type' => 'text',
|
||||
'cols' => 40,
|
||||
'rows' => 15,
|
||||
'eval' => 'trim'
|
||||
]
|
||||
],
|
||||
'keywords' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Keywords',
|
||||
'description' => 'Keywords for SEO, separated by commas',
|
||||
'config' => [
|
||||
'type' => 'text',
|
||||
'cols' => 40,
|
||||
'rows' => 15,
|
||||
'eval' => 'trim'
|
||||
]
|
||||
],
|
||||
'seometa' => [
|
||||
'exclude' => true,
|
||||
'label' => 'SEO Meta Description',
|
||||
'description' => 'SEO specific meta description, used for sharing options',
|
||||
'config' => [
|
||||
'type' => 'text',
|
||||
'cols' => 40,
|
||||
'rows' => 15,
|
||||
'eval' => 'trim'
|
||||
]
|
||||
],
|
||||
'teaser' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Short Teaser (optional)',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'size' => 30,
|
||||
'eval' => 'trim',
|
||||
'default' => ''
|
||||
],
|
||||
],
|
||||
|
||||
'subtitle' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Subtitle',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'size' => 30,
|
||||
'eval' => 'trim',
|
||||
'default' => ''
|
||||
],
|
||||
],
|
||||
'hideonapp' => [
|
||||
'exclude' => true,
|
||||
'label' => 'If checked - Product will not be shown on App',
|
||||
'config' => [
|
||||
'type' => 'check',
|
||||
'renderType' => 'checkboxToggle',
|
||||
'items' => [
|
||||
[
|
||||
0 => '',
|
||||
1 => '',
|
||||
'invertStateDisplay' => false
|
||||
]
|
||||
],
|
||||
],
|
||||
],
|
||||
'hideonwebsite' => [
|
||||
'exclude' => true,
|
||||
'label' => 'If checked - Product will not be shown on Website',
|
||||
'config' => [
|
||||
'type' => 'check',
|
||||
'renderType' => 'checkboxToggle',
|
||||
'items' => [
|
||||
[
|
||||
0 => '',
|
||||
1 => '',
|
||||
'invertStateDisplay' => false
|
||||
]
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
'hideonproducts' => [
|
||||
'exclude' => true,
|
||||
'label' => 'If checked - Product will not be shown on Product Section',
|
||||
'config' => [
|
||||
'type' => 'check',
|
||||
'renderType' => 'checkboxToggle',
|
||||
'items' => [
|
||||
[
|
||||
0 => '',
|
||||
1 => '',
|
||||
'invertStateDisplay' => false
|
||||
]
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
'hideondatasheets' => [
|
||||
'exclude' => true,
|
||||
'label' => 'If checked - Product will not be shown on Datasheets Page',
|
||||
'config' => [
|
||||
'type' => 'check',
|
||||
'renderType' => 'checkboxToggle',
|
||||
'items' => [
|
||||
[
|
||||
0 => '',
|
||||
1 => '',
|
||||
'invertStateDisplay' => false
|
||||
]
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
'applications' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Applications',
|
||||
'config' => [
|
||||
'type' => 'text',
|
||||
'enableRichtext' => 'true',
|
||||
'eval' => 'trim',
|
||||
'default' => ''
|
||||
],
|
||||
'defaultExtras' => 'richtext:rte_transform[mode=ts_css]'
|
||||
],
|
||||
'description' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Description',
|
||||
'config' => [
|
||||
'type' => 'text',
|
||||
'enableRichtext' => 'true',
|
||||
'eval' => 'trim',
|
||||
'default' => ''
|
||||
],
|
||||
'defaultExtras' => 'richtext:rte_transform[mode=ts_css]'
|
||||
],
|
||||
|
||||
'highlights' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Highlights',
|
||||
'config' => [
|
||||
'type' => 'text',
|
||||
'enableRichtext' => 'true',
|
||||
'eval' => 'trim',
|
||||
'default' => ''
|
||||
],
|
||||
'defaultExtras' => 'richtext:rte_transform[mode=ts_css]'
|
||||
],
|
||||
|
||||
'shortcut' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Does this Product have a custom Page',
|
||||
'config' => [
|
||||
'type' => 'check',
|
||||
'renderType' => 'checkboxToggle',
|
||||
'items' => [
|
||||
[
|
||||
0 => '',
|
||||
1 => '',
|
||||
'invertStateDisplay' => false
|
||||
]
|
||||
],
|
||||
],
|
||||
],
|
||||
'shortcutpid' => [
|
||||
'exclude' => false,
|
||||
'label' => 'Page ID',
|
||||
'description' => 'PID of the custom page',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'size' => 30,
|
||||
'eval' => 'trim',
|
||||
'default' => ''
|
||||
],
|
||||
],
|
||||
|
||||
'legacy' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Is this a legacy produc?',
|
||||
'config' => [
|
||||
'type' => 'check',
|
||||
'renderType' => 'checkboxToggle',
|
||||
'items' => [
|
||||
[
|
||||
0 => '',
|
||||
1 => '',
|
||||
'invertStateDisplay' => false
|
||||
]
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
'supportproduct' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Is this a support product?',
|
||||
'config' => [
|
||||
'type' => 'check',
|
||||
'renderType' => 'checkboxToggle',
|
||||
'items' => [
|
||||
[
|
||||
0 => '',
|
||||
1 => '',
|
||||
'invertStateDisplay' => false
|
||||
]
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
'subproduct' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Product is a sub-products',
|
||||
'description' => 'This Product will not be shown as a main product',
|
||||
'config' => [
|
||||
'type' => 'check',
|
||||
'renderType' => 'checkboxToggle',
|
||||
'items' => [
|
||||
[
|
||||
0 => '',
|
||||
1 => '',
|
||||
'invertStateDisplay' => false
|
||||
]
|
||||
],
|
||||
],
|
||||
],
|
||||
'relatedprodukt' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Related Products',
|
||||
'description' => 'Select related products for this product',
|
||||
'config' => [
|
||||
'type' => 'select',
|
||||
'renderType' => 'selectMultipleSideBySide',
|
||||
'foreign_table' => 'tx_vitec_domain_model_product', // Reference the same table
|
||||
'MM' => 'tx_vitec_product_related_mm', // Define the MM table for the relation
|
||||
'size' => 10,
|
||||
'maxitems' => 9999,
|
||||
'minitems' => 0,
|
||||
'enableMultiSelectFilterTextfield' => true, // Optional: Adds a search box for filtering
|
||||
],
|
||||
],
|
||||
'productimage' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Product Image(s)',
|
||||
'config' => [
|
||||
'type' => 'inline',
|
||||
'foreign_table' => 'sys_file_reference',
|
||||
'foreign_field' => 'uid_foreign',
|
||||
'foreign_sortby' => 'sorting_foreign',
|
||||
'foreign_table_field' => 'tablenames',
|
||||
'foreign_match_fields' => [
|
||||
'fieldname' => 'productimage',
|
||||
],
|
||||
'appearance' => [
|
||||
'collapseAll' => true,
|
||||
'levelLinksPosition' => 'top',
|
||||
'showSynchronizationLink' => true,
|
||||
'showPossibleLocalizationRecords' => true,
|
||||
'showAllLocalizationLink' => true,
|
||||
],
|
||||
'behaviour' => [
|
||||
'allowLanguageSynchronization' => true,
|
||||
],
|
||||
'filter' => [
|
||||
[
|
||||
'userFunc' => \TYPO3\CMS\Core\Resource\Filter\FileExtensionFilter::class . '->filterInlineChildren',
|
||||
'parameters' => [
|
||||
'allowedFileExtensions' => 'jpg,jpeg,png,gif',
|
||||
],
|
||||
],
|
||||
],
|
||||
'maxitems' => 10,
|
||||
'minitems' => 0,
|
||||
],
|
||||
],
|
||||
|
||||
'ogimage' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Open Graph Image',
|
||||
'config' => [
|
||||
'type' => 'inline',
|
||||
'foreign_table' => 'sys_file_reference',
|
||||
'foreign_field' => 'uid_foreign',
|
||||
'foreign_sortby' => 'sorting_foreign',
|
||||
'foreign_table_field' => 'tablenames',
|
||||
'foreign_match_fields' => [
|
||||
'fieldname' => 'ogimage',
|
||||
],
|
||||
'appearance' => [
|
||||
'collapseAll' => true,
|
||||
'levelLinksPosition' => 'top',
|
||||
'showSynchronizationLink' => true,
|
||||
'showPossibleLocalizationRecords' => true,
|
||||
'showAllLocalizationLink' => true,
|
||||
],
|
||||
'behaviour' => [
|
||||
'allowLanguageSynchronization' => true,
|
||||
],
|
||||
'filter' => [
|
||||
[
|
||||
'userFunc' => \TYPO3\CMS\Core\Resource\Filter\FileExtensionFilter::class . '->filterInlineChildren',
|
||||
'parameters' => [
|
||||
'allowedFileExtensions' => 'jpg,jpeg,png,gif,webp',
|
||||
],
|
||||
],
|
||||
],
|
||||
'maxitems' => 1, // Allow only one image
|
||||
'minitems' => 0,
|
||||
],
|
||||
],
|
||||
|
||||
'contentelement' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Select Content Element for Key Features Section',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'renderType' => 'inputLink',
|
||||
'softref' => 'typolink',
|
||||
'eval' => 'trim',
|
||||
'fieldControl' => [
|
||||
'linkPopup' => [
|
||||
'options' => [
|
||||
'title' => 'Select Content Element',
|
||||
'blindLinkOptions' => 'mail,folder,url', // Disable unnecessary link types
|
||||
'blindLinkFields' => 'class,params', // Disable unnecessary fields
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
'contentelementcta' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Select Content Element for CTA Section',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'renderType' => 'inputLink',
|
||||
'softref' => 'typolink',
|
||||
'eval' => 'trim',
|
||||
'fieldControl' => [
|
||||
'linkPopup' => [
|
||||
'options' => [
|
||||
'title' => 'Select Content Element',
|
||||
'blindLinkOptions' => 'mail,folder,url', // Disable unnecessary link types
|
||||
'blindLinkFields' => 'class,params', // Disable unnecessary fields
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
/* ----------------------------------------------------- */
|
||||
],
|
||||
];
|
||||
@@ -0,0 +1,204 @@
|
||||
<?php
|
||||
return [
|
||||
'ctrl' => [
|
||||
'title' => 'VITEC Solution',
|
||||
'label' => 'title',
|
||||
'tstamp' => 'tstamp',
|
||||
'crdate' => 'crdate',
|
||||
'cruser_id' => 'cruser_id',
|
||||
'versioningWS' => true,
|
||||
'languageField' => 'sys_language_uid',
|
||||
'transOrigPointerField' => 'l10n_parent',
|
||||
'transOrigDiffSourceField' => 'l10n_diffsource',
|
||||
'delete' => 'deleted',
|
||||
'enablecolumns' => [
|
||||
'disabled' => 'hidden',
|
||||
'starttime' => 'starttime',
|
||||
'endtime' => 'endtime',
|
||||
],
|
||||
'searchFields' => 'title,subtitle,teaser',
|
||||
'iconfile' => 'EXT:vitec/Resources/Public/Icons/tx_vitec_domain_model_solution.gif',
|
||||
'security' => [
|
||||
'ignorePageTypeRestriction' => true,
|
||||
],
|
||||
],
|
||||
'types' => [
|
||||
'1' => [
|
||||
'showitem' => 'title, subtitle, teaser, description, image,
|
||||
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories, categories,
|
||||
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language, sys_language_uid, l10n_parent, l10n_diffsource,
|
||||
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access, hidden, starttime, endtime',
|
||||
],
|
||||
],
|
||||
'columns' => [
|
||||
'sys_language_uid' => [
|
||||
'exclude' => true,
|
||||
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
|
||||
'config' => [
|
||||
'type' => 'language',
|
||||
],
|
||||
],
|
||||
'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',
|
||||
'default' => 0,
|
||||
'items' => [
|
||||
['', 0],
|
||||
],
|
||||
'foreign_table' => 'tx_vitec_domain_model_solution',
|
||||
'foreign_table_where' => 'AND {#tx_vitec_domain_model_solution}.{#pid}=###CURRENT_PID### AND {#tx_vitec_domain_model_solution}.{#sys_language_uid} IN (-1,0)',
|
||||
],
|
||||
],
|
||||
'l10n_diffsource' => [
|
||||
'config' => [
|
||||
'type' => 'passthrough',
|
||||
],
|
||||
],
|
||||
'hidden' => [
|
||||
'exclude' => true,
|
||||
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.visible',
|
||||
'config' => [
|
||||
'type' => 'check',
|
||||
'renderType' => 'checkboxToggle',
|
||||
'items' => [
|
||||
[
|
||||
0 => '',
|
||||
1 => '',
|
||||
'invertStateDisplay' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
'starttime' => [
|
||||
'exclude' => true,
|
||||
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'renderType' => 'inputDateTime',
|
||||
'eval' => 'datetime,int',
|
||||
'default' => 0,
|
||||
'behaviour' => [
|
||||
'allowLanguageSynchronization' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
'endtime' => [
|
||||
'exclude' => true,
|
||||
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'renderType' => 'inputDateTime',
|
||||
'eval' => 'datetime,int',
|
||||
'default' => 0,
|
||||
'range' => [
|
||||
'upper' => mktime(0, 0, 0, 1, 1, 2038),
|
||||
],
|
||||
'behaviour' => [
|
||||
'allowLanguageSynchronization' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
'title' => [
|
||||
'exclude' => false,
|
||||
'label' => 'Title',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'size' => 30,
|
||||
'eval' => 'trim',
|
||||
'required' => true,
|
||||
'default' => '',
|
||||
],
|
||||
],
|
||||
'subtitle' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Subtitle',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'size' => 30,
|
||||
'eval' => 'trim',
|
||||
'default' => '',
|
||||
],
|
||||
],
|
||||
'teaser' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Short Teaser (optional)',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'size' => 30,
|
||||
'eval' => 'trim',
|
||||
'default' => '',
|
||||
],
|
||||
],
|
||||
'description' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Description',
|
||||
'config' => [
|
||||
'type' => 'text',
|
||||
'enableRichtext' => true,
|
||||
'eval' => 'trim',
|
||||
'default' => '',
|
||||
],
|
||||
'defaultExtras' => 'richtext:rte_transform[mode=ts_css]',
|
||||
],
|
||||
'categories' => [
|
||||
'config' => [
|
||||
'type' => 'category',
|
||||
],
|
||||
],
|
||||
'image' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Image',
|
||||
'config' => [
|
||||
'type' => 'inline',
|
||||
'foreign_table' => 'sys_file_reference',
|
||||
'foreign_field' => 'uid_foreign',
|
||||
'foreign_sortby' => 'sorting_foreign',
|
||||
'foreign_table_field' => 'tablenames',
|
||||
'foreign_match_fields' => [
|
||||
'fieldname' => 'image',
|
||||
],
|
||||
'foreign_label' => 'uid_local',
|
||||
'foreign_selector' => 'uid_local',
|
||||
'overrideChildTca' => [
|
||||
'columns' => [
|
||||
'uid_local' => [
|
||||
'config' => [
|
||||
'appearance' => [
|
||||
'elementBrowserType' => 'file',
|
||||
'elementBrowserAllowed' => 'jpg,jpeg,png,gif,webp,svg',
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
'types' => [
|
||||
'0' => [
|
||||
'showitem' => '
|
||||
--palette--;;imageoverlayPalette,
|
||||
--palette--;;filePalette',
|
||||
],
|
||||
],
|
||||
],
|
||||
'maxitems' => 1,
|
||||
'appearance' => [
|
||||
'headerThumbnail' => [
|
||||
'field' => 'uid_local',
|
||||
'width' => '45',
|
||||
'height' => '45',
|
||||
],
|
||||
'enabledControls' => [
|
||||
'info' => true,
|
||||
'new' => false,
|
||||
'dragdrop' => true,
|
||||
'sort' => false,
|
||||
'hide' => true,
|
||||
'delete' => true,
|
||||
],
|
||||
'fileUploadAllowed' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
@@ -0,0 +1,318 @@
|
||||
<?php
|
||||
return [
|
||||
'ctrl' => [
|
||||
'title' => 'VITEC Success Story',
|
||||
'label' => 'title',
|
||||
'tstamp' => 'tstamp',
|
||||
'crdate' => 'crdate',
|
||||
'cruser_id' => 'cruser_id',
|
||||
'versioningWS' => true,
|
||||
'languageField' => 'sys_language_uid',
|
||||
'transOrigPointerField' => 'l10n_parent',
|
||||
'transOrigDiffSourceField' => 'l10n_diffsource',
|
||||
'delete' => 'deleted',
|
||||
'enablecolumns' => [
|
||||
'disabled' => 'hidden',
|
||||
'starttime' => 'starttime',
|
||||
'endtime' => 'endtime',
|
||||
],
|
||||
'searchFields' => 'title,slug',
|
||||
'iconfile' => 'EXT:vitec/Resources/Public/Icons/tx_vitec_domain_model_usecase.gif',
|
||||
'security' => [
|
||||
'ignorePageTypeRestriction' => true,
|
||||
],
|
||||
],
|
||||
'types' => [
|
||||
'1' => ['showitem' => 'title, slug, subtitle, teaser, description, singlepid, caseimage, logoimage,
|
||||
--div--;Visibility, hideonapp, hideonwebsite,
|
||||
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language, sys_language_uid, l10n_parent, l10n_diffsource,
|
||||
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories, categories,
|
||||
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access, hidden, starttime, endtime', ],
|
||||
],
|
||||
'columns' => [
|
||||
'sys_language_uid' => [
|
||||
'exclude' => true,
|
||||
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
|
||||
'config' => [
|
||||
'type' => 'language',
|
||||
],
|
||||
],
|
||||
'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',
|
||||
'default' => 0,
|
||||
'items' => [
|
||||
['', 0],
|
||||
],
|
||||
'foreign_table' => 'tx_vitec_domain_model_download',
|
||||
'foreign_table_where' => 'AND {#tx_vitec_domain_model_download}.{#pid}=###CURRENT_PID### AND {#tx_vitec_domain_model_download}.{#sys_language_uid} IN (-1,0)',
|
||||
],
|
||||
],
|
||||
'l10n_diffsource' => [
|
||||
'config' => [
|
||||
'type' => 'passthrough',
|
||||
],
|
||||
],
|
||||
'hidden' => [
|
||||
'exclude' => true,
|
||||
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.visible',
|
||||
'config' => [
|
||||
'type' => 'check',
|
||||
'renderType' => 'checkboxToggle',
|
||||
'items' => [
|
||||
[
|
||||
0 => '',
|
||||
1 => '',
|
||||
'invertStateDisplay' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
'starttime' => [
|
||||
'exclude' => true,
|
||||
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'renderType' => 'inputDateTime',
|
||||
'eval' => 'datetime,int',
|
||||
'default' => 0,
|
||||
'behaviour' => [
|
||||
'allowLanguageSynchronization' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
'endtime' => [
|
||||
'exclude' => true,
|
||||
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'renderType' => 'inputDateTime',
|
||||
'eval' => 'datetime,int',
|
||||
'default' => 0,
|
||||
'range' => [
|
||||
'upper' => mktime(0, 0, 0, 1, 1, 2038),
|
||||
],
|
||||
'behaviour' => [
|
||||
'allowLanguageSynchronization' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
'title' => [
|
||||
'exclude' => false,
|
||||
'label' => 'LLL:EXT:vitec/Resources/Private/Language/locallang_db.xlf:tx_vitec_domain_model_download.title',
|
||||
'description' => 'LLL:EXT:vitec/Resources/Private/Language/locallang_db.xlf:tx_vitec_domain_model_download.title.description',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'size' => 30,
|
||||
'eval' => 'trim',
|
||||
'required' => true,
|
||||
'default' => '',
|
||||
],
|
||||
],
|
||||
'slug' => [
|
||||
'exclude' => false,
|
||||
'label' => 'LLL:EXT:vitec/Resources/Private/Language/locallang_db.xlf:tx_vitec_domain_model_download.slug',
|
||||
'description' => 'LLL:EXT:vitec/Resources/Private/Language/locallang_db.xlf:tx_vitec_domain_model_download.slug.description',
|
||||
'config' => [
|
||||
'type' => 'slug',
|
||||
'size' => 50,
|
||||
'generatorOptions' => [
|
||||
'fields' => ['title'], // TODO: adjust this field to the one you want to use
|
||||
'fieldSeparator' => '-',
|
||||
'replacements' => [
|
||||
'/' => '',
|
||||
],
|
||||
],
|
||||
'fallbackCharacter' => '-',
|
||||
'eval' => 'uniqueInPid',
|
||||
],
|
||||
|
||||
],
|
||||
'singlepid' => [
|
||||
'exclude' => false,
|
||||
'label' => 'Page ID of Success Story',
|
||||
'description' => 'LLL:EXT:vitec/Resources/Private/Language/locallang_db.xlf:tx_vitec_domain_model_download.title.description',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'size' => 30,
|
||||
'eval' => 'trim',
|
||||
'required' => false,
|
||||
'default' => '',
|
||||
],
|
||||
],
|
||||
'teaser' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Short Teaser (optional)',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'size' => 30,
|
||||
'eval' => 'trim',
|
||||
'default' => '',
|
||||
],
|
||||
],
|
||||
'subtitle' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Subtitle',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'size' => 30,
|
||||
'eval' => 'trim',
|
||||
'default' => '',
|
||||
],
|
||||
],
|
||||
'hideonapp' => [
|
||||
'exclude' => true,
|
||||
'label' => 'If checked - Product will not be shown on App',
|
||||
'config' => [
|
||||
'type' => 'check',
|
||||
'renderType' => 'checkboxToggle',
|
||||
'items' => [
|
||||
[
|
||||
0 => '',
|
||||
1 => '',
|
||||
'invertStateDisplay' => false,
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
'hideonwebsite' => [
|
||||
'exclude' => true,
|
||||
'label' => 'If checked - Product will not be shown on Website',
|
||||
'config' => [
|
||||
'type' => 'check',
|
||||
'renderType' => 'checkboxToggle',
|
||||
'items' => [
|
||||
[
|
||||
0 => '',
|
||||
1 => '',
|
||||
'invertStateDisplay' => false,
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
'description' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Description',
|
||||
'config' => [
|
||||
'type' => 'text',
|
||||
'enableRichtext' => 'true',
|
||||
'eval' => 'trim',
|
||||
'default' => '',
|
||||
],
|
||||
'defaultExtras' => 'richtext:rte_transform[mode=ts_css]',
|
||||
],
|
||||
'caseimage' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Case Image',
|
||||
'config' => [
|
||||
'type' => 'inline',
|
||||
'foreign_table' => 'sys_file_reference',
|
||||
'foreign_field' => 'uid_foreign',
|
||||
'foreign_sortby' => 'sorting_foreign',
|
||||
'foreign_table_field' => 'tablenames',
|
||||
'foreign_match_fields' => [
|
||||
'fieldname' => 'caseimage',
|
||||
],
|
||||
'foreign_label' => 'uid_local',
|
||||
'foreign_selector' => 'uid_local',
|
||||
'overrideChildTca' => [
|
||||
'columns' => [
|
||||
'uid_local' => [
|
||||
'config' => [
|
||||
'appearance' => [
|
||||
'elementBrowserType' => 'file',
|
||||
'elementBrowserAllowed' => 'jpg,jpeg,png,gif',
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
'types' => [
|
||||
'0' => [
|
||||
'showitem' => '
|
||||
--palette--;;imageoverlayPalette,
|
||||
--palette--;;filePalette',
|
||||
],
|
||||
],
|
||||
],
|
||||
'maxitems' => 1,
|
||||
'appearance' => [
|
||||
'headerThumbnail' => [
|
||||
'field' => 'uid_local',
|
||||
'width' => '45',
|
||||
'height' => '45',
|
||||
],
|
||||
'enabledControls' => [
|
||||
'info' => true,
|
||||
'new' => false,
|
||||
'dragdrop' => true,
|
||||
'sort' => false,
|
||||
'hide' => true,
|
||||
'delete' => true,
|
||||
],
|
||||
'fileUploadAllowed' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
'logoimage' => [
|
||||
'exclude' => true,
|
||||
'label' => 'Customer Logo',
|
||||
'config' => [
|
||||
'type' => 'inline',
|
||||
'foreign_table' => 'sys_file_reference',
|
||||
'foreign_field' => 'uid_foreign',
|
||||
'foreign_sortby' => 'sorting_foreign',
|
||||
'foreign_table_field' => 'tablenames',
|
||||
'foreign_match_fields' => [
|
||||
'fieldname' => 'logoimage',
|
||||
],
|
||||
'foreign_label' => 'uid_local',
|
||||
'foreign_selector' => 'uid_local',
|
||||
'overrideChildTca' => [
|
||||
'columns' => [
|
||||
'uid_local' => [
|
||||
'config' => [
|
||||
'appearance' => [
|
||||
'elementBrowserType' => 'file',
|
||||
'elementBrowserAllowed' => 'jpg,jpeg,png,gif',
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
'types' => [
|
||||
'0' => [
|
||||
'showitem' => '
|
||||
--palette--;;imageoverlayPalette,
|
||||
--palette--;;filePalette',
|
||||
],
|
||||
],
|
||||
],
|
||||
'maxitems' => 1,
|
||||
'appearance' => [
|
||||
'headerThumbnail' => [
|
||||
'field' => 'uid_local',
|
||||
'width' => '45',
|
||||
'height' => '45',
|
||||
],
|
||||
'enabledControls' => [
|
||||
'info' => true,
|
||||
'new' => false,
|
||||
'dragdrop' => true,
|
||||
'sort' => false,
|
||||
'hide' => true,
|
||||
'delete' => true,
|
||||
],
|
||||
'fileUploadAllowed' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
'categories' => [
|
||||
'config' => [
|
||||
'type' => 'category'
|
||||
]
|
||||
],
|
||||
],
|
||||
];
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
# =============================================================================
|
||||
# VITEC container content elements — self-contained JSON rendering
|
||||
# Children collected via Evomedien\Vitec\DataProcessing\ContainerChildrenProcessor
|
||||
# (exception-safe; returns [] on any error, never crashes the outer CE).
|
||||
# =============================================================================
|
||||
|
||||
tt_content.vitec_cols_50_50 = JSON
|
||||
tt_content.vitec_cols_50_50 {
|
||||
fields {
|
||||
id = INT
|
||||
id.field = uid
|
||||
type = TEXT
|
||||
type.field = CType
|
||||
colPos = INT
|
||||
colPos.field = colPos
|
||||
|
||||
categories = COA
|
||||
categories {
|
||||
10 = CONTENT
|
||||
10 {
|
||||
table = sys_category
|
||||
select {
|
||||
pidInList = root
|
||||
selectFields = sys_category.title
|
||||
join = sys_category_record_mm on sys_category_record_mm.uid_local = sys_category.uid
|
||||
where {
|
||||
field = uid
|
||||
wrap = AND sys_category_record_mm.tablenames = 'tt_content' AND sys_category_record_mm.uid_foreign=|
|
||||
}
|
||||
}
|
||||
renderObj = TEXT
|
||||
renderObj {
|
||||
field = title
|
||||
wrap = |###BREAK###
|
||||
}
|
||||
}
|
||||
stdWrap.split {
|
||||
token = ###BREAK###
|
||||
cObjNum = 1 |*|2|*| 3
|
||||
1 {
|
||||
current = 1
|
||||
stdWrap.wrap = |
|
||||
}
|
||||
2 {
|
||||
current = 1
|
||||
stdWrap.wrap = ,|
|
||||
}
|
||||
3 {
|
||||
current = 1
|
||||
stdWrap.wrap = |
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
appearance = JSON
|
||||
appearance {
|
||||
fields {
|
||||
layout = TEXT
|
||||
layout.field = layout
|
||||
frameClass = TEXT
|
||||
frameClass.field = frame_class
|
||||
spaceBefore = TEXT
|
||||
spaceBefore.field = space_before_class
|
||||
spaceAfter = TEXT
|
||||
spaceAfter.field = space_after_class
|
||||
}
|
||||
}
|
||||
|
||||
header = TEXT
|
||||
header.field = header
|
||||
subheader = TEXT
|
||||
subheader.field = subheader
|
||||
tx_vitec_bg_variant = TEXT
|
||||
tx_vitec_bg_variant.field = tx_vitec_bg_variant
|
||||
|
||||
items = JSON
|
||||
items {
|
||||
dataProcessing {
|
||||
10 = Evomedien\Vitec\DataProcessing\ContainerChildrenProcessor
|
||||
10.as = items
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tt_content.vitec_cols_33_33_33 =< tt_content.vitec_cols_50_50
|
||||
tt_content.vitec_cols_25_25_25_25 =< tt_content.vitec_cols_50_50
|
||||
tt_content.vitec_cols_66_33 =< tt_content.vitec_cols_50_50
|
||||
tt_content.vitec_cols_33_66 =< tt_content.vitec_cols_50_50
|
||||
@@ -0,0 +1,74 @@
|
||||
# =============================================================================
|
||||
# VITEC menus — Headless / JSON output
|
||||
#
|
||||
# Three menus are exposed at the page root of the JSON response:
|
||||
# - mainNavigation : full hierarchy from root, all visible pages
|
||||
# - footerMenu : curated, configured via site setting menu.footer.pageUids
|
||||
# - metaMenu : curated, configured via site setting menu.meta.pageUids
|
||||
#
|
||||
# Each menu uses friendsoftypo3/headless MenuProcessor which:
|
||||
# * resolves Shortcut pages to their target
|
||||
# * skips pages with "Show in menu = no" (nav_hide=1) by default
|
||||
# * marks active / current items
|
||||
# * exposes `children` for sub-levels
|
||||
# =============================================================================
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Main navigation — full hierarchy
|
||||
# -----------------------------------------------------------------------------
|
||||
lib.mainNavigation = JSON
|
||||
lib.mainNavigation {
|
||||
dataProcessing {
|
||||
10 = FriendsOfTYPO3\Headless\DataProcessing\MenuProcessor
|
||||
10 {
|
||||
levels = 10
|
||||
expandAll = 1
|
||||
includeSpacer = 0
|
||||
titleField = nav_title // title
|
||||
as = mainNavigation
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Footer menu — curated by site setting (UIDs)
|
||||
# -----------------------------------------------------------------------------
|
||||
lib.footerMenu = JSON
|
||||
lib.footerMenu {
|
||||
dataProcessing {
|
||||
10 = FriendsOfTYPO3\Headless\DataProcessing\MenuProcessor
|
||||
10 {
|
||||
special = list
|
||||
special.value = {$menu.footer.pageUids}
|
||||
levels = 1
|
||||
includeSpacer = 0
|
||||
titleField = nav_title // title
|
||||
as = footerMenu
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Meta menu — curated by site setting (UIDs)
|
||||
# -----------------------------------------------------------------------------
|
||||
lib.metaMenu = JSON
|
||||
lib.metaMenu {
|
||||
dataProcessing {
|
||||
10 = FriendsOfTYPO3\Headless\DataProcessing\MenuProcessor
|
||||
10 {
|
||||
special = list
|
||||
special.value = {$menu.meta.pageUids}
|
||||
levels = 1
|
||||
includeSpacer = 0
|
||||
titleField = nav_title // title
|
||||
as = metaMenu
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Wire them into the page-level JSON output
|
||||
# -----------------------------------------------------------------------------
|
||||
page.10.fields.mainNavigation =< lib.mainNavigation
|
||||
page.10.fields.footerMenu =< lib.footerMenu
|
||||
page.10.fields.metaMenu =< lib.metaMenu
|
||||
@@ -0,0 +1,3 @@
|
||||
# Test if we can add any field at all
|
||||
tt_content.list.fields.content.fields.testField = TEXT
|
||||
tt_content.list.fields.content.fields.testField.value = TEST VALUE FROM VITEC
|
||||
@@ -0,0 +1 @@
|
||||
plugin.tx_vitec.settings.layout = 0
|
||||
@@ -0,0 +1,74 @@
|
||||
plugin.tx_vitec_usecaseshow {
|
||||
view {
|
||||
templateRootPaths.0 = EXT:vitec/Resources/Private/Templates/
|
||||
partialRootPaths.0 = EXT:vitec/Resources/Private/Partials/
|
||||
layoutRootPaths.0 = EXT:vitec/Resources/Private/Layouts/
|
||||
}
|
||||
persistence {
|
||||
storagePid = 50
|
||||
}
|
||||
}
|
||||
|
||||
plugin.tx_vitec_marketshow {
|
||||
view {
|
||||
templateRootPaths.0 = EXT:vitec/Resources/Private/Templates/
|
||||
partialRootPaths.0 = EXT:vitec/Resources/Private/Partials/
|
||||
layoutRootPaths.0 = EXT:vitec/Resources/Private/Layouts/
|
||||
}
|
||||
persistence {
|
||||
storagePid = 50
|
||||
}
|
||||
}
|
||||
|
||||
plugin.tx_vitec_solutionshow {
|
||||
view {
|
||||
templateRootPaths.0 = EXT:vitec/Resources/Private/Templates/
|
||||
partialRootPaths.0 = EXT:vitec/Resources/Private/Partials/
|
||||
layoutRootPaths.0 = EXT:vitec/Resources/Private/Layouts/
|
||||
}
|
||||
persistence {
|
||||
storagePid = 50
|
||||
}
|
||||
}
|
||||
|
||||
plugin.tx_vitec_usecaselist {
|
||||
view {
|
||||
templateRootPaths.0 = EXT:vitec/Resources/Private/Templates/
|
||||
partialRootPaths.0 = EXT:vitec/Resources/Private/Partials/
|
||||
layoutRootPaths.0 = EXT:vitec/Resources/Private/Layouts/
|
||||
}
|
||||
persistence {
|
||||
storagePid = 50
|
||||
}
|
||||
}
|
||||
plugin.tx_vitec_Prodcutlist {
|
||||
settings {
|
||||
# Map FlexForm settings to the controller
|
||||
layout = {$plugin.tx_vitec.settings.layout}
|
||||
}
|
||||
}
|
||||
plugin.tx_vitec_Prodcutlist {
|
||||
settings {
|
||||
categories = 1,2,3
|
||||
}
|
||||
}
|
||||
config.tx_extbase {
|
||||
persistence {
|
||||
classes {
|
||||
TYPO3\CMS\Extbase\Domain\Model\Category {
|
||||
subclass = Evomedien\Vitec\Domain\Model\Category
|
||||
}
|
||||
Evomedien\Vitec\Domain\Model\Category {
|
||||
mapping {
|
||||
tableName = sys_category
|
||||
recordType = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Include Headless configurations
|
||||
@import 'EXT:vitec/Configuration/TypoScript/Headless/*.typoscript'
|
||||
|
||||
|
||||
@@ -0,0 +1,118 @@
|
||||
# =============================================================
|
||||
# VITEC Extension — page.tsconfig
|
||||
# =============================================================
|
||||
|
||||
mod {
|
||||
wizards.newContentElement.wizardItems.vitec {
|
||||
header = VITEC
|
||||
show = *
|
||||
elements {
|
||||
# -------- Extbase Plugins --------
|
||||
productlist {
|
||||
iconIdentifier = vitec-plugin-productlist
|
||||
title = List of VITEC Products
|
||||
description = LLL:EXT:vitec/Resources/Private/Language/locallang_db.xlf:tx_vitec_productlist.description
|
||||
tt_content_defValues {
|
||||
CType = list
|
||||
list_type = vitec_productlist
|
||||
}
|
||||
}
|
||||
productshow {
|
||||
iconIdentifier = vitec-plugin-productshow
|
||||
title = Show single VITEC Product
|
||||
description = Either show a single product coming from a list, OR select a specific product in flexform
|
||||
tt_content_defValues {
|
||||
CType = list
|
||||
list_type = vitec_productshow
|
||||
}
|
||||
}
|
||||
usecaseshow {
|
||||
iconIdentifier = vitec-plugin-usecaseshow
|
||||
title = Show single VITEC Success Story
|
||||
description = Shows a selected Success Story in a Card with different layouts
|
||||
tt_content_defValues {
|
||||
CType = list
|
||||
list_type = vitec_usecaseshow
|
||||
}
|
||||
}
|
||||
marketshow {
|
||||
iconIdentifier = vitec-plugin-marketshow
|
||||
title = Show single VITEC Market
|
||||
description = Shows a selected Market in a Card with different layouts
|
||||
tt_content_defValues {
|
||||
CType = list
|
||||
list_type = vitec_marketshow
|
||||
}
|
||||
}
|
||||
solutionshow {
|
||||
iconIdentifier = vitec-plugin-solutionshow
|
||||
title = Show single VITEC Solution
|
||||
description = Shows a selected Solution in a Card with different layouts
|
||||
tt_content_defValues {
|
||||
CType = list
|
||||
list_type = vitec_solutionshow
|
||||
}
|
||||
}
|
||||
usecaselist {
|
||||
iconIdentifier = vitec-plugin-usecaselist
|
||||
title = Show all VITEC Success Stories
|
||||
description = LLL:EXT:vitec/Resources/Private/Language/locallang_db.xlf:tx_vitec_usecaselist.description
|
||||
tt_content_defValues {
|
||||
CType = list
|
||||
list_type = vitec_usecaselist
|
||||
}
|
||||
}
|
||||
downloadcard {
|
||||
iconIdentifier = vitec-plugin-downloadcard
|
||||
title = Downloadcard for single Download
|
||||
description = LLL:EXT:vitec/Resources/Private/Language/locallang_db.xlf:tx_vitec_usecaselist.description
|
||||
tt_content_defValues {
|
||||
CType = list
|
||||
list_type = vitec_downloadcard
|
||||
}
|
||||
}
|
||||
downloadcardcollection {
|
||||
iconIdentifier = vitec-plugin-downloadcardcollection
|
||||
title = Downloadcard Collection
|
||||
description = Multiple Downloads in one Card
|
||||
tt_content_defValues {
|
||||
CType = list
|
||||
list_type = vitec_downloadcardcollection
|
||||
}
|
||||
}
|
||||
datasheets {
|
||||
iconIdentifier = vitec-plugin-datasheets
|
||||
title = VITEC Datasheets
|
||||
description = Interactive datasheets with filtering and download functionality
|
||||
tt_content_defValues {
|
||||
CType = list
|
||||
list_type = vitec_datasheets
|
||||
}
|
||||
}
|
||||
simplecard {
|
||||
iconIdentifier = vitec-plugin-simplecard
|
||||
title = Simple Card
|
||||
description = Simple Card (Image, Title, Text, Link)
|
||||
tt_content_defValues {
|
||||
CType = list
|
||||
list_type = vitec_simplecard
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
############################################################
|
||||
# Backend Previews für klassische Plugins (list_type)
|
||||
############################################################
|
||||
|
||||
mod.web_layout.tt_content.preview {
|
||||
simplecard = EXT:vitec/Resources/Private/Templates/Simplecard/Backendpreview.html
|
||||
# vitec_usecaseshow = EXT:vitec/Resources/Private/Templates/Usecaseshow/Backendpreview.html
|
||||
# ^ Pfad anpassen wenn das Template existiert, dann Kommentar entfernen
|
||||
}
|
||||
|
||||
# Hinweis: Content-Blocks-Previews werden automatisch aus
|
||||
# packages/vitec/ContentBlocks/ContentElements/<n>/templates/backend-preview.html geladen.
|
||||
# Keine separate Registrierung nötig.
|
||||
Reference in new issue
Block a user