Unify list plugins, add solution list and per-story detail page

- vitec_usecaselist: layout + record selection like marketlist
- new plugin vitec_solutionlist (spec 7.13.3, key "solutions")
- tx_vitec_domain_model_usecase: detail_page -> resolved detailUrl
  (also gives story cards in vitec_modelcard a link for the first time)
- "Show Toolbar" checkbox on product/market/solution/usecase lists
- spec bumped to v1.9

BREAKING: vitec_productlist and vitec_usecaselist now emit an object
instead of a bare array. Consumers must read products.products and
usecases.usecases. Also found: productlist had a configurable layout
that was never serialised; it is emitted now, but keeps its own 0-3
vocabulary instead of grid/list/carousel.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
orascheandClaude Opus 5 committed 2026-08-17 16:29:06 +02:00
1 parent 4ef3ad0026
commit 12eb40614b
23 files changed
+559 -28

No files matched your search

@@ -6,6 +6,57 @@
<sheetTitle>Usecase List</sheetTitle>
<type>array</type>
<el>
<settings.layout>
<label>Layout</label>
<description>Display variant for the success story cards.</description>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items>
<numIndex index="0">
<label>Grid</label>
<value>grid</value>
</numIndex>
<numIndex index="1">
<label>List</label>
<value>list</value>
</numIndex>
<numIndex index="2">
<label>Carousel</label>
<value>carousel</value>
</numIndex>
<numIndex index="3">
<label>50 / 50</label>
<value>50-50</value>
</numIndex>
</items>
<default>grid</default>
</config>
</settings.layout>
<settings.showtoolbar>
<label>Show Toolbar</label>
<description>Show the toolbar above the list.</description>
<config>
<type>check</type>
<default>0</default>
</config>
</settings.showtoolbar>
<settings.usecases>
<label>Success Stories</label>
<description>Leave empty to show all stories (featured first, then alphabetically). If you select stories, exactly those are shown — in the order you arrange them here (use the arrows to sort).</description>
<config>
<type>select</type>
<renderType>selectMultipleSideBySide</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 AND tx_vitec_domain_model_usecase.hideonwebsite = 0 ORDER BY tx_vitec_domain_model_usecase.title</foreign_table_where>
<size>8</size>
<minitems>0</minitems>
<maxitems>999</maxitems>
</config>
</settings.usecases>
<settings.singlePid>
<label>Single PID (detail page)</label>
<description>Page that holds the "Show single VITEC Success Story" plugin. Used to build the detail links in the JSON output.</description>