Files
VITEC-website/packages/vitec/Configuration/Backend/Modules.php
T
orasche 8e67f5db23 Sub-solution workbook pipeline on layout 5, fix element order in both importers
- New, deliberately separate pipeline for sub-solutions (markets and
  solutions must never break each other): generator
  vitec:generate-subsolution-workbooks (list from the page tree below
  /solutions, 39 workbooks, every sub-solution matched to its record),
  SubsolutionWorkbookImporter + CLI vitec:import-subsolution-workbooks,
  and a "Sub-Solutions" tab in the VITEC Import module with its own
  inbox migrations/subsolutions_xlsx_in/
- Targets the existing template 5 "Solution Detail" without changing
  it: hero element in colPos 1, the remaining sections in fixed order in
  colPos 0, found again by CType on re-import; existing empty sub-solution
  pages are switched to layout 5, missing ones created hidden;
  detail_page set on the solution record
- Workbook per the Figma "07 Solution Detail page": hero without video
  teaser, intro with headline and without learn-more/portfolio, extended
  icon list, own page-layout reference image
- Shared content elements: market hero/intro/insights relabelled
  "Market/Solution", market intro gains the optional intro_headline
  field (new column, requires extension:setup)
- Fix: DataHandler puts every NEW record with a positive pid at the top
  of its column, so pages built in one run came out reversed. Both
  importers now track the page order per colPos and write
  tt_content.sorting explicitly after the DataHandler run; re-applying
  repairs pages imported earlier (verified on the control-room
  sub-solution and sub-market page 443)
- migrations/fill_test_subsolution.php: realistic test content from
  vitec.com copy and images for the control-room sub-solution
- Docs section 5z
2026-10-07 15:39:18 +02:00

131 lines
5.0 KiB
PHP

<?php
declare(strict_types=1);
use Evomedien\Vitec\Controller\Backend\ImportController;
use Evomedien\Vitec\Controller\Backend\ProductTextImportController;
use Evomedien\Vitec\Controller\Backend\SubmarketImportController;
use Evomedien\Vitec\Controller\Backend\SubsolutionImportController;
use Evomedien\Vitec\Controller\Backend\WordPressImportController;
use Evomedien\Vitec\Controller\OgImageController;
return [
'web_vitecimport' => [
'parent' => 'web',
'position' => ['after' => 'web_info'],
'access' => 'user',
'workspaces' => 'live',
'path' => '/module/web/vitec-import',
'labels' => [
'title' => 'VITEC Import',
'shortDescription' => 'CSV import for the VITEC domain models',
],
'extensionName' => 'Vitec',
'iconIdentifier' => 'vitec-import',
'routes' => [
'_default' => [
'target' => ImportController::class . '::indexAction',
],
'process' => [
'target' => ImportController::class . '::processAction',
'methods' => ['POST'],
],
'seo' => [
'target' => ImportController::class . '::seoAction',
],
'seo_upload' => [
'target' => ImportController::class . '::seoUploadAction',
'methods' => ['POST'],
],
'seo_aliases' => [
'target' => ImportController::class . '::seoAliasesAction',
'methods' => ['POST'],
],
'products' => [
'target' => ProductTextImportController::class . '::productsAction',
],
'product_edit' => [
'target' => ProductTextImportController::class . '::productEditAction',
],
'product_preview' => [
'target' => ProductTextImportController::class . '::productPreviewAction',
'methods' => ['POST'],
],
'product_apply' => [
'target' => ProductTextImportController::class . '::productApplyAction',
'methods' => ['POST'],
],
'submarkets' => [
'target' => SubmarketImportController::class . '::submarketsAction',
],
'submarket_upload' => [
'target' => SubmarketImportController::class . '::submarketUploadAction',
'methods' => ['POST'],
],
'submarket_process' => [
'target' => SubmarketImportController::class . '::submarketProcessAction',
'methods' => ['POST'],
],
'subsolutions' => [
'target' => SubsolutionImportController::class . '::subsolutionsAction',
],
'subsolution_upload' => [
'target' => SubsolutionImportController::class . '::subsolutionUploadAction',
'methods' => ['POST'],
],
'subsolution_process' => [
'target' => SubsolutionImportController::class . '::subsolutionProcessAction',
'methods' => ['POST'],
],
],
],
'web_vitecwpimport' => [
'parent' => 'web',
'position' => ['after' => 'web_vitecimport'],
'access' => 'user',
'workspaces' => 'live',
'path' => '/module/web/vitec-wp-import',
'labels' => [
'title' => 'WordPress Import',
'shortDescription' => 'Imports WordPress blog posts as news records',
],
'extensionName' => 'Vitec',
'iconIdentifier' => 'vitec-wpimport',
'routes' => [
'_default' => [
'target' => WordPressImportController::class . '::indexAction',
],
'import' => [
'target' => WordPressImportController::class . '::importAction',
'methods' => ['POST'],
],
],
],
'web_vitecogimage' => [
'parent' => 'web',
'position' => ['after' => 'web_info'],
'access' => 'user',
'workspaces' => 'live',
'path' => '/module/web/vitec-ogimage',
'labels' => [
'title' => 'LLL:EXT:vitec/Resources/Private/Language/locallang_ogimage.xlf:mlang_tabs_tab',
'shortDescription' => 'LLL:EXT:vitec/Resources/Private/Language/locallang_ogimage.xlf:mlang_labels_tabdescr',
],
'extensionName' => 'Vitec',
'iconIdentifier' => 'vitec-ogimage',
'routes' => [
'_default' => [
'target' => OgImageController::class . '::indexAction',
],
'generate' => [
'target' => OgImageController::class . '::generateAction',
'methods' => ['POST'],
],
'preview' => [
'target' => OgImageController::class . '::previewAction',
'methods' => ['POST'],
],
],
],
];