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>
This commit is contained in:
khaccount
2026-07-24 09:53:33 +02:00
parent aafcb5dcb6
commit eae40f4286
110 changed files with 8502 additions and 279 deletions

View File

@@ -0,0 +1,146 @@
<?xml version="1.0" encoding="UTF-8"?>
<T3DataStructure>
<meta>
<langDisable>1</langDisable>
</meta>
<sheets>
<sDEF>
<ROOT>
<sheetTitle>Card Settings</sheetTitle>
<type>array</type>
<el>
<settings.modelType>
<label>Card Type</label>
<onChange>reload</onChange>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items>
<numIndex index="0">
<label>Product</label>
<value>product</value>
</numIndex>
<numIndex index="1">
<label>Success Story</label>
<value>story</value>
</numIndex>
<numIndex index="2">
<label>Market</label>
<value>market</value>
</numIndex>
<numIndex index="3">
<label>Solution</label>
<value>solution</value>
</numIndex>
</items>
<default>product</default>
</config>
</settings.modelType>
<settings.product>
<label>Product</label>
<displayCond>FIELD:settings.modelType:=:product</displayCond>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items>
<numIndex index="0">
<label>— please choose —</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>
</config>
</settings.product>
<settings.story>
<label>Success Story</label>
<displayCond>FIELD:settings.modelType:=:story</displayCond>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items>
<numIndex index="0">
<label>— please choose —</label>
<value>0</value>
</numIndex>
</items>
<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>
</config>
</settings.story>
<settings.market>
<label>Market</label>
<displayCond>FIELD:settings.modelType:=:market</displayCond>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items>
<numIndex index="0">
<label>— please choose —</label>
<value>0</value>
</numIndex>
</items>
<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>
</config>
</settings.market>
<settings.solution>
<label>Solution</label>
<displayCond>FIELD:settings.modelType:=:solution</displayCond>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items>
<numIndex index="0">
<label>— please choose —</label>
<value>0</value>
</numIndex>
</items>
<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>
</config>
</settings.solution>
<settings.layout>
<label>Layout</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items>
<numIndex index="0">
<label>Vertical (image top)</label>
<value>vertical</value>
</numIndex>
<numIndex index="1">
<label>Horizontal (image left)</label>
<value>horizontal</value>
</numIndex>
<numIndex index="2">
<label>Image Overlay</label>
<value>overlay</value>
</numIndex>
<numIndex index="3">
<label>Compact</label>
<value>compact</value>
</numIndex>
</items>
<default>vertical</default>
</config>
</settings.layout>
<settings.debug>
<label>Allow Debug Output</label>
<config>
<type>check</type>
<default>0</default>
</config>
</settings.debug>
</el>
</ROOT>
</sDEF>
</sheets>
</T3DataStructure>