Formular-Infrastruktur: Contact/Demo/Helpdesk mit E-Mail- und Salesforce-Delivery, JSON-Renderer-Erweiterungen, Crop-Variants

Build-Artefakte in public/_frontend/assets nicht enthalten.
This commit is contained in:
orasche committed 2026-07-30 13:12:45 +02:00
1 parent eae40f4286
commit a739dd8fe3
51 files changed
+1598 -303

No files matched your search

+65
View File
@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8"?>
<T3DataStructure>
<meta>
<langDisable>1</langDisable>
</meta>
<sheets>
<sDEF>
<ROOT>
<sheetTitle>Contact Form Settings</sheetTitle>
<type>array</type>
<el>
<settings.delivery>
<label>Delivery</label>
<onChange>reload</onChange>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items>
<numIndex index="0">
<label>E-Mail</label>
<value>email</value>
</numIndex>
<numIndex index="1">
<label>Salesforce (prepared — not active yet)</label>
<value>salesforce</value>
</numIndex>
</items>
<default>email</default>
</config>
</settings.delivery>
<settings.recipient>
<label>Recipient(s)</label>
<description>Comma-separated email addresses.</description>
<displayCond>FIELD:settings.delivery:=:email</displayCond>
<config>
<type>input</type>
<size>50</size>
<eval>trim</eval>
</config>
</settings.recipient>
<settings.subject>
<label>Mail Subject</label>
<displayCond>FIELD:settings.delivery:=:email</displayCond>
<config>
<type>input</type>
<size>50</size>
<eval>trim</eval>
<default>VITEC website: contact request</default>
</config>
</settings.subject>
<settings.debug>
<label>Allow Debug Output</label>
<config>
<type>check</type>
<default>0</default>
</config>
</settings.debug>
</el>
</ROOT>
</sDEF>
</sheets>
</T3DataStructure>
+65
View File
@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8"?>
<T3DataStructure>
<meta>
<langDisable>1</langDisable>
</meta>
<sheets>
<sDEF>
<ROOT>
<sheetTitle>Request Demo Settings</sheetTitle>
<type>array</type>
<el>
<settings.delivery>
<label>Delivery</label>
<onChange>reload</onChange>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items>
<numIndex index="0">
<label>E-Mail</label>
<value>email</value>
</numIndex>
<numIndex index="1">
<label>Salesforce (prepared — not active yet)</label>
<value>salesforce</value>
</numIndex>
</items>
<default>email</default>
</config>
</settings.delivery>
<settings.recipient>
<label>Recipient(s)</label>
<description>Comma-separated email addresses.</description>
<displayCond>FIELD:settings.delivery:=:email</displayCond>
<config>
<type>input</type>
<size>50</size>
<eval>trim</eval>
</config>
</settings.recipient>
<settings.subject>
<label>Mail Subject</label>
<displayCond>FIELD:settings.delivery:=:email</displayCond>
<config>
<type>input</type>
<size>50</size>
<eval>trim</eval>
<default>VITEC website: demo request</default>
</config>
</settings.subject>
<settings.debug>
<label>Allow Debug Output</label>
<config>
<type>check</type>
<default>0</default>
</config>
</settings.debug>
</el>
</ROOT>
</sDEF>
</sheets>
</T3DataStructure>
+65
View File
@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8"?>
<T3DataStructure>
<meta>
<langDisable>1</langDisable>
</meta>
<sheets>
<sDEF>
<ROOT>
<sheetTitle>HelpDesk Access Settings</sheetTitle>
<type>array</type>
<el>
<settings.delivery>
<label>Delivery</label>
<onChange>reload</onChange>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items>
<numIndex index="0">
<label>E-Mail</label>
<value>email</value>
</numIndex>
<numIndex index="1">
<label>Salesforce (prepared — not active yet)</label>
<value>salesforce</value>
</numIndex>
</items>
<default>email</default>
</config>
</settings.delivery>
<settings.recipient>
<label>Recipient(s)</label>
<description>Comma-separated email addresses.</description>
<displayCond>FIELD:settings.delivery:=:email</displayCond>
<config>
<type>input</type>
<size>50</size>
<eval>trim</eval>
</config>
</settings.recipient>
<settings.subject>
<label>Mail Subject</label>
<displayCond>FIELD:settings.delivery:=:email</displayCond>
<config>
<type>input</type>
<size>50</size>
<eval>trim</eval>
<default>VITEC website: helpdesk access request</default>
</config>
</settings.subject>
<settings.debug>
<label>Allow Debug Output</label>
<config>
<type>check</type>
<default>0</default>
</config>
</settings.debug>
</el>
</ROOT>
</sDEF>
</sheets>
</T3DataStructure>
+12
View File
@@ -88,4 +88,16 @@ return [
'provider' => SvgIconProvider::class,
'source' => 'EXT:vitec/Resources/Public/Icons/vitec-plugin-modelcard.svg',
],
'vitec-plugin-contactform' => [
'provider' => SvgIconProvider::class,
'source' => 'EXT:vitec/Resources/Public/Icons/vitec-plugin-contactform.svg',
],
'vitec-plugin-demoform' => [
'provider' => SvgIconProvider::class,
'source' => 'EXT:vitec/Resources/Public/Icons/vitec-plugin-demoform.svg',
],
'vitec-plugin-helpdeskform' => [
'provider' => SvgIconProvider::class,
'source' => 'EXT:vitec/Resources/Public/Icons/vitec-plugin-helpdeskform.svg',
],
];
@@ -7,6 +7,15 @@ declare(strict_types=1);
*/
return [
'frontend' => [
'vitec/form-submission' => [
'target' => \Evomedien\Vitec\Middleware\FormSubmissionMiddleware::class,
'after' => [
'typo3/cms-core/normalized-params-attribute',
],
'before' => [
'typo3/cms-frontend/site',
],
],
'vitec/success-story-path-rewrite' => [
'target' => \Evomedien\Vitec\Middleware\SuccessStoryPathRewrite::class,
'after' => [
@@ -161,6 +161,21 @@ tt_content {
}
}
vitec_contactform < lib.contentElementWithHeader
vitec_contactform {
fields {
content {
fields {
form = USER
form.userFunc = Evomedien\Vitec\UserFunc\FormsJsonRenderer->render
}
}
}
}
vitec_demoform < tt_content.vitec_contactform
vitec_helpdeskform < tt_content.vitec_contactform
vitec_modelcard < lib.contentElementWithHeader
vitec_modelcard {
fields {
@@ -38,6 +38,37 @@ use TYPO3\CMS\Extbase\Utility\ExtensionUtility;
// Locations: lives in the "VITEC" wizard group, titled "VITEC Locations".
$GLOBALS['TCA']['tt_content']['columns']['CType']['config']['itemGroups']['vitec']
= 'LLL:EXT:vitec/Resources/Private/Language/locallang_containers.xlf:group.header';
// VITEC Forms — own wizard tab for the three form plugins.
$GLOBALS['TCA']['tt_content']['columns']['CType']['config']['itemGroups']['vitec_forms']
= 'VITEC Forms';
ExtensionUtility::registerPlugin(
'Vitec',
'Contactform',
'VITEC Contact Form',
'vitec-plugin-contactform',
'vitec_forms',
'Contact form — email or Salesforce delivery.',
'FILE:EXT:vitec/Configuration/FlexForms/Contactform.xml'
);
ExtensionUtility::registerPlugin(
'Vitec',
'Demoform',
'VITEC Request Demo',
'vitec-plugin-demoform',
'vitec_forms',
'Demo request form — email or Salesforce delivery.',
'FILE:EXT:vitec/Configuration/FlexForms/Demoform.xml'
);
ExtensionUtility::registerPlugin(
'Vitec',
'Helpdeskform',
'VITEC HelpDesk Access',
'vitec-plugin-helpdeskform',
'vitec_forms',
'Request access to the online helpdesk — email or Salesforce delivery.',
'FILE:EXT:vitec/Configuration/FlexForms/Helpdeskform.xml'
);
ExtensionUtility::registerPlugin(
'Vitec',
'Modelcard',
@@ -164,6 +164,11 @@ return [
'foreign_selector' => 'uid_local',
'overrideChildTca' => [
'columns' => [
'crop' => [
'config' => [
'cropVariants' => \Evomedien\Vitec\Tca\CropVariants::firstImage(),
],
],
'uid_local' => [
'config' => [
'appearance' => [
@@ -443,6 +443,15 @@ return [
'foreign_match_fields' => [
'fieldname' => 'productimage',
],
'overrideChildTca' => [
'columns' => [
'crop' => [
'config' => [
'cropVariants' => \Evomedien\Vitec\Tca\CropVariants::firstImage(),
],
],
],
],
'appearance' => [
'collapseAll' => true,
'levelLinksPosition' => 'top',
@@ -164,6 +164,11 @@ return [
'foreign_selector' => 'uid_local',
'overrideChildTca' => [
'columns' => [
'crop' => [
'config' => [
'cropVariants' => \Evomedien\Vitec\Tca\CropVariants::firstImage(),
],
],
'uid_local' => [
'config' => [
'appearance' => [
@@ -117,7 +117,21 @@ return [
// --------------------------------------------------------- List view
'card_image' => [
'label' => 'Card Image',
'config' => ['type' => 'file', 'maxitems' => 1, 'allowed' => 'common-image-types'],
'config' => [
'type' => 'file',
'maxitems' => 1,
'allowed' => 'common-image-types',
// Zusatz-Zuschnitte fuer Card-/Large-Card-Darstellung (freier Crop bleibt moeglich).
'overrideChildTca' => [
'columns' => [
'crop' => [
'config' => [
'cropVariants' => \Evomedien\Vitec\Tca\CropVariants::firstImage(),
],
],
],
],
],
],
'customer_logo' => [
'label' => 'Customer Logo',
@@ -0,0 +1,41 @@
<?php
return [
'ctrl' => [
'title' => 'VITEC Form Submission',
'label' => 'form_key',
'label_alt' => 'delivery_status',
'label_alt_force' => true,
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'default_sortby' => 'crdate DESC',
'rootLevel' => 1,
'readOnly' => true,
'iconfile' => 'EXT:vitec/Resources/Public/Icons/vitec-plugin-contactform.svg',
'security' => ['ignorePageTypeRestriction' => true],
],
'types' => [
'1' => ['showitem' => 'form_key, delivery_method, delivery_status, delivery_error, payload'],
],
'columns' => [
'form_key' => [
'label' => 'Form',
'config' => ['type' => 'input', 'readOnly' => true],
],
'payload' => [
'label' => 'Data (JSON)',
'config' => ['type' => 'text', 'rows' => 12, 'readOnly' => true],
],
'delivery_method' => [
'label' => 'Delivery',
'config' => ['type' => 'input', 'readOnly' => true],
],
'delivery_status' => [
'label' => 'Status',
'config' => ['type' => 'input', 'readOnly' => true],
],
'delivery_error' => [
'label' => 'Delivery Error',
'config' => ['type' => 'text', 'rows' => 3, 'readOnly' => true],
],
],
];
@@ -72,3 +72,10 @@ lib.metaMenu {
page.10.fields.mainNavigation =< lib.mainNavigation
page.10.fields.footerMenu =< lib.footerMenu
page.10.fields.metaMenu =< lib.metaMenu
# -----------------------------------------------------------------------------
# Favicon / app-icon set (site-wide) — see FaviconsJsonRenderer
# Icon files: public/fileadmin/icons/
# -----------------------------------------------------------------------------
page.10.fields.favicons = USER
page.10.fields.favicons.userFunc = Evomedien\Vitec\UserFunc\FaviconsJsonRenderer->render