Restore point before Stufe 3 (central resolver-service refactoring). Includes this session's work: - Success Story (usecase) rebuild: new fields/tabs, UsecaseSerializer, thin List/Show renderers, MM relations, inline content elements. - vitec_columns content block (two-column layout with per-item content) incl. unified header section; special-cased JSON resolution. - Container per-column flex (items[].config align/justify) + gap on parent. - Unified header section across CEs/plugins/containers; header fields in JSON. - ISO-style architecture spec: Documentation/Headless-JSON-Architecture.md. - Cleanup: removed local scratch + verified .bak backups. - Fixes: B-6 (undefined thumbnail variable in Downloadcardcollection image resolver), B-7 (unsatisfiable legacy CType OR branch in Downloadcard/Datasheets). Rollback: git reset --hard snapshot-2026-07-09-pre-stufe3 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
291 lines
10 KiB
PHP
291 lines
10 KiB
PHP
<?php
|
|
return [
|
|
'ctrl' => [
|
|
'title' => 'VITEC Event',
|
|
'label' => 'title',
|
|
'label_alt' => 'city,eventstart',
|
|
'tstamp' => 'tstamp',
|
|
'crdate' => 'crdate',
|
|
'versioningWS' => true,
|
|
'languageField' => 'sys_language_uid',
|
|
'transOrigPointerField' => 'l10n_parent',
|
|
'transOrigDiffSourceField' => 'l10n_diffsource',
|
|
'delete' => 'deleted',
|
|
'default_sortby' => 'eventstart ASC',
|
|
'enablecolumns' => [
|
|
'disabled' => 'hidden',
|
|
'starttime' => 'starttime',
|
|
'endtime' => 'endtime',
|
|
],
|
|
'searchFields' => 'title,teaser,venue,booth,city,country',
|
|
'iconfile' => 'EXT:vitec/Resources/Public/Icons/tx_vitec_domain_model_event.svg',
|
|
'security' => [
|
|
'ignorePageTypeRestriction' => true,
|
|
],
|
|
],
|
|
'types' => [
|
|
'1' => [
|
|
'showitem' => 'title, slug, teaser, description,
|
|
--div--;Event Details, eventstart, eventend, venue, booth, city, country, attendancemode, eventstatus,
|
|
--div--;Links and Media, eventurl, meetinglink, image,
|
|
--div--;Visibility, hideonwebsite, hideonapp,
|
|
--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' => [
|
|
['label' => '', 'value' => 0],
|
|
],
|
|
'foreign_table' => 'tx_vitec_domain_model_event',
|
|
'foreign_table_where' => 'AND {#tx_vitec_domain_model_event}.{#pid}=###CURRENT_PID### AND {#tx_vitec_domain_model_event}.{#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' => [
|
|
[
|
|
'label' => '',
|
|
'invertStateDisplay' => true,
|
|
],
|
|
],
|
|
],
|
|
],
|
|
'starttime' => [
|
|
'exclude' => true,
|
|
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
|
|
'config' => [
|
|
'type' => 'datetime',
|
|
'default' => 0,
|
|
],
|
|
],
|
|
'endtime' => [
|
|
'exclude' => true,
|
|
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
|
|
'config' => [
|
|
'type' => 'datetime',
|
|
'default' => 0,
|
|
],
|
|
],
|
|
|
|
'title' => [
|
|
'exclude' => false,
|
|
'label' => 'Event Name',
|
|
'config' => [
|
|
'type' => 'input',
|
|
'size' => 40,
|
|
'max' => 255,
|
|
'eval' => 'trim',
|
|
'required' => true,
|
|
],
|
|
],
|
|
'slug' => [
|
|
'exclude' => true,
|
|
'label' => 'Slug',
|
|
'config' => [
|
|
'type' => 'slug',
|
|
'size' => 50,
|
|
'generatorOptions' => [
|
|
'fields' => ['title'],
|
|
'replacements' => ['/' => '-'],
|
|
],
|
|
'fallbackCharacter' => '-',
|
|
'eval' => 'uniqueInSite',
|
|
'default' => '',
|
|
],
|
|
],
|
|
'teaser' => [
|
|
'exclude' => true,
|
|
'label' => 'Teaser',
|
|
'config' => [
|
|
'type' => 'input',
|
|
'size' => 40,
|
|
'max' => 255,
|
|
'eval' => 'trim',
|
|
],
|
|
],
|
|
'description' => [
|
|
'exclude' => true,
|
|
'label' => 'Description',
|
|
'config' => [
|
|
'type' => 'text',
|
|
'cols' => 40,
|
|
'rows' => 8,
|
|
'enableRichtext' => true,
|
|
],
|
|
],
|
|
|
|
'eventstart' => [
|
|
'exclude' => false,
|
|
'label' => 'Event Start Date',
|
|
'config' => [
|
|
'type' => 'datetime',
|
|
'format' => 'date',
|
|
'default' => 0,
|
|
'required' => true,
|
|
],
|
|
],
|
|
'eventend' => [
|
|
'exclude' => true,
|
|
'label' => 'Event End Date',
|
|
'config' => [
|
|
'type' => 'datetime',
|
|
'format' => 'date',
|
|
'default' => 0,
|
|
],
|
|
],
|
|
'venue' => [
|
|
'exclude' => true,
|
|
'label' => 'Venue',
|
|
'description' => 'e.g. "Queen Sirikit National Convention Center (QSNCC)"',
|
|
'config' => [
|
|
'type' => 'input',
|
|
'size' => 40,
|
|
'max' => 255,
|
|
'eval' => 'trim',
|
|
],
|
|
],
|
|
'booth' => [
|
|
'exclude' => true,
|
|
'label' => 'Booth / Stand',
|
|
'description' => 'e.g. "Stand H10"',
|
|
'config' => [
|
|
'type' => 'input',
|
|
'size' => 20,
|
|
'max' => 255,
|
|
'eval' => 'trim',
|
|
],
|
|
],
|
|
'city' => [
|
|
'exclude' => true,
|
|
'label' => 'City',
|
|
'config' => [
|
|
'type' => 'input',
|
|
'size' => 30,
|
|
'max' => 255,
|
|
'eval' => 'trim',
|
|
],
|
|
],
|
|
'country' => [
|
|
'exclude' => true,
|
|
'label' => 'Country',
|
|
'config' => [
|
|
'type' => 'input',
|
|
'size' => 30,
|
|
'max' => 255,
|
|
'eval' => 'trim',
|
|
],
|
|
],
|
|
'attendancemode' => [
|
|
'exclude' => true,
|
|
'label' => 'Attendance Mode',
|
|
'description' => 'Used for schema.org structured data (eventAttendanceMode).',
|
|
'config' => [
|
|
'type' => 'select',
|
|
'renderType' => 'selectSingle',
|
|
'default' => 'offline',
|
|
'items' => [
|
|
['label' => 'On-site (offline)', 'value' => 'offline'],
|
|
['label' => 'Online', 'value' => 'online'],
|
|
['label' => 'Hybrid (mixed)', 'value' => 'mixed'],
|
|
],
|
|
],
|
|
],
|
|
'eventstatus' => [
|
|
'exclude' => true,
|
|
'label' => 'Event Status',
|
|
'description' => 'Used for schema.org structured data (eventStatus).',
|
|
'config' => [
|
|
'type' => 'select',
|
|
'renderType' => 'selectSingle',
|
|
'default' => 'scheduled',
|
|
'items' => [
|
|
['label' => 'Scheduled', 'value' => 'scheduled'],
|
|
['label' => 'Cancelled', 'value' => 'cancelled'],
|
|
['label' => 'Postponed', 'value' => 'postponed'],
|
|
['label' => 'Rescheduled', 'value' => 'rescheduled'],
|
|
['label' => 'Moved Online', 'value' => 'movedonline'],
|
|
],
|
|
],
|
|
],
|
|
|
|
'eventurl' => [
|
|
'exclude' => true,
|
|
'label' => 'Event Website',
|
|
'config' => [
|
|
'type' => 'link',
|
|
'allowedTypes' => ['url', 'page'],
|
|
],
|
|
],
|
|
'meetinglink' => [
|
|
'exclude' => true,
|
|
'label' => 'Book-a-Meeting Link',
|
|
'description' => 'Link or email for the "Book a Meeting" call-to-action.',
|
|
'config' => [
|
|
'type' => 'link',
|
|
'allowedTypes' => ['url', 'email', 'page'],
|
|
],
|
|
],
|
|
'image' => [
|
|
'exclude' => true,
|
|
'label' => 'Event Logo / Image',
|
|
'config' => [
|
|
'type' => 'file',
|
|
'maxitems' => 1,
|
|
'allowed' => 'common-image-types',
|
|
],
|
|
],
|
|
|
|
'hideonwebsite' => [
|
|
'exclude' => true,
|
|
'label' => 'Hide on Website',
|
|
'config' => [
|
|
'type' => 'check',
|
|
'renderType' => 'checkboxToggle',
|
|
'default' => 0,
|
|
],
|
|
],
|
|
'hideonapp' => [
|
|
'exclude' => true,
|
|
'label' => 'Hide in App',
|
|
'config' => [
|
|
'type' => 'check',
|
|
'renderType' => 'checkboxToggle',
|
|
'default' => 0,
|
|
],
|
|
],
|
|
|
|
'categories' => [
|
|
'exclude' => true,
|
|
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.categories',
|
|
'config' => [
|
|
'type' => 'category',
|
|
],
|
|
],
|
|
],
|
|
];
|