Files
VITEC-website/packages/vitec/Configuration/TCA/tx_vitec_domain_model_usecase.php
khaccount eae40f4286 Success-story migration + new plugins + JSON/UX polish
- Success Stories: full migration from old site (48/48, audited),
  markets n:n, quotation content block, columns content block,
  pretty SEO detail URLs via SuccessStoryPathRewrite middleware,
  list/detail split (list page 4 / story page), detailUrl/backUrl
- New plugins: VITEC Locations (grid/list/map + RTE map text),
  VITEC Customer Logos (color/bw logic, only-show-selected),
  VITEC Card (one plugin for product/story/market/solution
  with reloading FlexForm + custom backend preview renderer)
- Eventlist: layout dropdown (list/grid/teaserbar) in settings
- Hero section CB: Images/Video tabs, background video + overlay
- Product JSON: full category rootline (parents), fixed missing
  ConnectionPool import (all-products crash), category tree map
- Backend preview CSS: container-query responsive (narrow columns)
- Docs: ISO architecture spec, root + extension READMEs

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 09:53:33 +02:00

342 lines
15 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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,subtitle,teaser,seo_title,seo_description',
'iconfile' => 'EXT:vitec/Resources/Public/Icons/tx_vitec_domain_model_usecase.gif',
'security' => [
'ignorePageTypeRestriction' => true,
],
],
'types' => [
'1' => [
'showitem' =>
'--div--;General,
title, slug, subtitle,
--div--;List view,
card_image, customer_logo, teaser,
--div--;Detail · Hero,
hero_bgimage, hero_small_image, hero_video, hero_overlay_color, hero_overlay_opacity,
--div--;Detail · Content,
content_elements,
--div--;Detail · Related,
markets, solutions, products, categories,
--div--;SEO,
seo_title, seo_description, no_index, no_follow, canonical_link,
--palette--;Open Graph;ogPalette,
--palette--;Twitter;twitterPalette,
--div--;Appearance,
layout_variant, background_variant, accent_color,
featured, show_related, hero_layout, text_theme,
--palette--;Visibility;visibilityPalette,
--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',
],
],
'palettes' => [
'ogPalette' => ['showitem' => 'og_title, og_description, --linebreak--, og_image'],
'twitterPalette' => ['showitem' => 'twitter_title, twitter_description, --linebreak--, twitter_image'],
'visibilityPalette' => ['showitem' => 'hideonwebsite, hideonapp'],
],
'columns' => [
// ------------------------------------------------------------ system
'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' => [['label' => '', 'value' => 0]],
'foreign_table' => 'tx_vitec_domain_model_usecase',
'foreign_table_where' => 'AND {#tx_vitec_domain_model_usecase}.{#pid}=###CURRENT_PID### AND {#tx_vitec_domain_model_usecase}.{#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' => [['value' => '', 'label' => '', 'invertStateDisplay' => true]],
],
],
'starttime' => [
'exclude' => true,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => ['type' => 'datetime', 'default' => 0, 'behaviour' => ['allowLanguageSynchronization' => true]],
],
'endtime' => [
'exclude' => true,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => ['type' => 'datetime', 'default' => 0, 'range' => ['upper' => mktime(0, 0, 0, 1, 1, 2038)], 'behaviour' => ['allowLanguageSynchronization' => true]],
],
// ----------------------------------------------------------- General
'title' => [
'label' => 'Title',
'config' => ['type' => 'input', 'size' => 40, 'eval' => 'trim', 'required' => true, 'default' => ''],
],
'slug' => [
'label' => 'Slug',
'config' => [
'type' => 'slug',
'size' => 50,
'generatorOptions' => ['fields' => ['title'], 'fieldSeparator' => '-', 'replacements' => ['/' => '']],
'fallbackCharacter' => '-',
'eval' => 'uniqueInPid',
],
],
'subtitle' => [
'label' => 'Subtitle',
'config' => ['type' => 'input', 'size' => 40, 'eval' => 'trim', 'default' => ''],
],
// --------------------------------------------------------- List view
'card_image' => [
'label' => 'Card Image',
'config' => ['type' => 'file', 'maxitems' => 1, 'allowed' => 'common-image-types'],
],
'customer_logo' => [
'label' => 'Customer Logo',
'config' => ['type' => 'file', 'maxitems' => 1, 'allowed' => 'common-image-types'],
],
'teaser' => [
'label' => 'Teaser',
'config' => ['type' => 'text', 'cols' => 40, 'rows' => 4, 'eval' => 'trim'],
],
// ------------------------------------------------------ Detail · Hero
'hero_bgimage' => [
'label' => 'Background Image',
'config' => ['type' => 'file', 'maxitems' => 1, 'allowed' => 'common-image-types'],
],
'hero_small_image' => [
'label' => 'Small Image',
'config' => ['type' => 'file', 'maxitems' => 1, 'allowed' => 'common-image-types'],
],
'hero_video' => [
'label' => 'Video',
'config' => ['type' => 'file', 'maxitems' => 1, 'allowed' => 'mp4,webm,ogv,mov,m4v'],
],
'hero_overlay_color' => [
'label' => 'Overlay Color',
'config' => ['type' => 'color'],
],
'hero_overlay_opacity' => [
'label' => 'Overlay Opacity (01)',
'config' => [
'type' => 'number',
'format' => 'decimal',
'default' => 0,
'range' => ['lower' => 0, 'upper' => 1],
'slider' => ['step' => 0.05, 'width' => 200],
],
],
// --------------------------------------------------- Detail · Content
'content_elements' => [
'label' => 'Content Elements',
'config' => [
'type' => 'inline',
'foreign_table' => 'tt_content',
'foreign_field' => 'tx_vitec_usecase_content',
'foreign_sortby' => 'sorting',
'appearance' => [
'collapseAll' => true,
'expandSingle' => true,
'levelLinksPosition' => 'top',
'showSynchronizationLink' => false,
'showAllLocalizationLink' => false,
'showPossibleLocalizationRecords' => false,
'useSortable' => true,
],
'overrideChildTca' => [
'columns' => [
'colPos' => ['config' => ['default' => 999]],
],
],
],
],
// --------------------------------------------------- Detail · Related
'markets' => [
'label' => 'Markets',
'config' => [
'type' => 'select',
'renderType' => 'selectMultipleSideBySide',
'foreign_table' => 'tx_vitec_domain_model_market',
'MM' => 'tx_vitec_usecase_market_mm',
'size' => 6,
'autoSizeMax' => 20,
'maxitems' => 9999,
],
],
'solutions' => [
'label' => 'Solutions',
'config' => [
'type' => 'select',
'renderType' => 'selectMultipleSideBySide',
'foreign_table' => 'tx_vitec_domain_model_solution',
'MM' => 'tx_vitec_usecase_solution_mm',
'size' => 6,
'autoSizeMax' => 20,
'maxitems' => 9999,
],
],
'products' => [
'label' => 'Products',
'config' => [
'type' => 'select',
'renderType' => 'selectMultipleSideBySide',
'foreign_table' => 'tx_vitec_domain_model_product',
'MM' => 'tx_vitec_usecase_product_mm',
'size' => 6,
'autoSizeMax' => 20,
'maxitems' => 9999,
],
],
'categories' => ['config' => ['type' => 'category']],
// --------------------------------------------------------------- SEO
'seo_title' => [
'label' => 'SEO Title',
'config' => ['type' => 'input', 'size' => 40, 'eval' => 'trim'],
],
'seo_description' => [
'label' => 'Meta Description',
'config' => ['type' => 'text', 'cols' => 40, 'rows' => 3, 'eval' => 'trim'],
],
'no_index' => [
'label' => 'No Index',
'config' => ['type' => 'check', 'renderType' => 'checkboxToggle', 'items' => [['value' => '', 'label' => '']]],
],
'no_follow' => [
'label' => 'No Follow',
'config' => ['type' => 'check', 'renderType' => 'checkboxToggle', 'items' => [['value' => '', 'label' => '']]],
],
'canonical_link' => [
'label' => 'Canonical URL',
'config' => ['type' => 'link'],
],
'og_title' => [
'label' => 'og:title',
'config' => ['type' => 'input', 'size' => 40, 'eval' => 'trim'],
],
'og_description' => [
'label' => 'og:description',
'config' => ['type' => 'text', 'cols' => 40, 'rows' => 3, 'eval' => 'trim'],
],
'og_image' => [
'label' => 'og:image',
'config' => ['type' => 'file', 'maxitems' => 1, 'allowed' => 'common-image-types'],
],
'twitter_title' => [
'label' => 'twitter:title',
'config' => ['type' => 'input', 'size' => 40, 'eval' => 'trim'],
],
'twitter_description' => [
'label' => 'twitter:description',
'config' => ['type' => 'text', 'cols' => 40, 'rows' => 3, 'eval' => 'trim'],
],
'twitter_image' => [
'label' => 'twitter:image',
'config' => ['type' => 'file', 'maxitems' => 1, 'allowed' => 'common-image-types'],
],
// -------------------------------------------------------- Appearance
'layout_variant' => [
'label' => 'Detail Layout',
'config' => [
'type' => 'select', 'renderType' => 'selectSingle', 'default' => 'standard',
'items' => [
['label' => 'Standard', 'value' => 'standard'],
['label' => 'Wide', 'value' => 'wide'],
['label' => 'Centered', 'value' => 'centered'],
['label' => 'Media-first', 'value' => 'media_first'],
],
],
],
'background_variant' => [
'label' => 'Background',
'config' => [
'type' => 'select', 'renderType' => 'selectSingle', 'default' => 'none',
'items' => [
['label' => 'None', 'value' => 'none'],
['label' => 'Orange', 'value' => 'orange'],
['label' => 'Blue', 'value' => 'blue'],
['label' => 'Graphite', 'value' => 'graphite'],
['label' => 'Midnight', 'value' => 'midnight'],
['label' => 'Light', 'value' => 'light'],
['label' => 'Dark', 'value' => 'dark'],
],
],
],
'accent_color' => [
'label' => 'Accent Color',
'config' => ['type' => 'color'],
],
'hideonwebsite' => [
'exclude' => true,
'label' => 'Hide on Website',
'config' => ['type' => 'check', 'renderType' => 'checkboxToggle', 'items' => [['value' => '', 'label' => '']]],
],
'hideonapp' => [
'exclude' => true,
'label' => 'Hide on App',
'config' => ['type' => 'check', 'renderType' => 'checkboxToggle', 'items' => [['value' => '', 'label' => '']]],
],
'featured' => [
'label' => 'Featured',
'config' => ['type' => 'check', 'renderType' => 'checkboxToggle', 'items' => [['value' => '', 'label' => '']]],
],
'show_related' => [
'label' => 'Show Related section',
'config' => ['type' => 'check', 'renderType' => 'checkboxToggle', 'default' => 1, 'items' => [['value' => '', 'label' => '']]],
],
'hero_layout' => [
'label' => 'Hero Layout',
'config' => [
'type' => 'select', 'renderType' => 'selectSingle', 'default' => 'fullscreen',
'items' => [
['label' => 'Fullscreen', 'value' => 'fullscreen'],
['label' => 'Medium', 'value' => 'md'],
['label' => 'Small', 'value' => 'sm'],
],
],
],
'text_theme' => [
'label' => 'Text Theme',
'config' => [
'type' => 'select', 'renderType' => 'selectSingle', 'default' => 'light',
'items' => [
['label' => 'Light', 'value' => 'light'],
['label' => 'Dark', 'value' => 'dark'],
],
],
],
],
];