Initial Commit

This commit is contained in:
khaccount committed 2026-05-18 14:46:25 +02:00
1 parent 4f495177e4
commit b6d2142214
166 files changed
+13952 -178

No files matched your search

@@ -0,0 +1,11 @@
# Apache < 2.3
<IfModule !mod_authz_core.c>
Order allow,deny
Deny from all
Satisfy All
</IfModule>
# Apache >= 2.3
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
@@ -0,0 +1,5 @@
<f:argument name="variant" type="string" optional="{true}" default="primary" />
<button class="myButton myButton--{variant}">
<f:slot />
</button>
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<xliff version="1.0">
<file source-language="en" datatype="plaintext" original="EXT:vitec/Resources/Private/Language/locallang.xlf" date="2025-01-13T15:54:51Z" product-name="vitec">
<header/>
<body>
<trans-unit id="tx_vitec_domain_model_" resname="tx_vitec_domain_model_">
<source></source>
</trans-unit>
<trans-unit id="tx_vitec_domain_model_.description" resname="tx_vitec_domain_model_.description">
<source></source>
</trans-unit>
<trans-unit id="tx_vitec_domain_model_product" resname="tx_vitec_domain_model_product">
<source>Product</source>
</trans-unit>
<trans-unit id="tx_vitec_domain_model_product.description" resname="tx_vitec_domain_model_product.description">
<source>Product</source>
</trans-unit>
<trans-unit id="tx_vitec_domain_model_product.title" resname="tx_vitec_domain_model_product.title">
<source>Title</source>
</trans-unit>
<trans-unit id="tx_vitec_domain_model_product.title.description" resname="tx_vitec_domain_model_product.title.description">
<source>Title</source>
</trans-unit>
<trans-unit id="tx_vitec_domain_model_product.slug" resname="tx_vitec_domain_model_product.slug">
<source>Slug</source>
</trans-unit>
<trans-unit id="tx_vitec_domain_model_product.slug.description" resname="tx_vitec_domain_model_product.slug.description">
<source>Slug</source>
</trans-unit>
</body>
</file>
</xliff>
@@ -0,0 +1,91 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<xliff version="1.0">
<file source-language="en" datatype="plaintext" original="EXT:vitec/Resources/Private/Language/locallang_containers.xlf" product-name="vitec">
<header/>
<body>
<trans-unit id="group.header" resname="group.header">
<source>VITEC</source>
</trans-unit>
<trans-unit id="section.heading" resname="section.heading">
<source>Section Heading</source>
</trans-unit>
<trans-unit id="section.subline" resname="section.subline">
<source>Section Subline</source>
</trans-unit>
<trans-unit id="bg_variant.label" resname="bg_variant.label">
<source>Background Variant</source>
</trans-unit>
<trans-unit id="bg_variant.option.none" resname="bg_variant.option.none">
<source>None</source>
</trans-unit>
<trans-unit id="bg_variant.option.orange" resname="bg_variant.option.orange">
<source>Orange</source>
</trans-unit>
<trans-unit id="bg_variant.option.blue" resname="bg_variant.option.blue">
<source>Blue</source>
</trans-unit>
<trans-unit id="bg_variant.option.graphite" resname="bg_variant.option.graphite">
<source>Graphite</source>
</trans-unit>
<trans-unit id="bg_variant.option.midnight" resname="bg_variant.option.midnight">
<source>Midnight</source>
</trans-unit>
<trans-unit id="cols_50_50.title" resname="cols_50_50.title">
<source>VITEC · Two Columns (50 / 50)</source>
</trans-unit>
<trans-unit id="cols_50_50.description" resname="cols_50_50.description">
<source>Two equal columns</source>
</trans-unit>
<trans-unit id="cols_33_33_33.title" resname="cols_33_33_33.title">
<source>VITEC · Three Columns (33 / 33 / 33)</source>
</trans-unit>
<trans-unit id="cols_33_33_33.description" resname="cols_33_33_33.description">
<source>Three equal columns</source>
</trans-unit>
<trans-unit id="cols_25_25_25_25.title" resname="cols_25_25_25_25.title">
<source>VITEC · Four Columns (25 / 25 / 25 / 25)</source>
</trans-unit>
<trans-unit id="cols_25_25_25_25.description" resname="cols_25_25_25_25.description">
<source>Four equal columns</source>
</trans-unit>
<trans-unit id="cols_66_33.title" resname="cols_66_33.title">
<source>VITEC · Two Columns (66 / 33)</source>
</trans-unit>
<trans-unit id="cols_66_33.description" resname="cols_66_33.description">
<source>Wide main column + narrow sidebar</source>
</trans-unit>
<trans-unit id="cols_33_66.title" resname="cols_33_66.title">
<source>VITEC · Two Columns (33 / 66)</source>
</trans-unit>
<trans-unit id="cols_33_66.description" resname="cols_33_66.description">
<source>Narrow sidebar + wide main column</source>
</trans-unit>
<trans-unit id="column.1" resname="column.1">
<source>Column 1</source>
</trans-unit>
<trans-unit id="column.2" resname="column.2">
<source>Column 2</source>
</trans-unit>
<trans-unit id="column.3" resname="column.3">
<source>Column 3</source>
</trans-unit>
<trans-unit id="column.4" resname="column.4">
<source>Column 4</source>
</trans-unit>
<trans-unit id="column.main_66" resname="column.main_66">
<source>Main (66%)</source>
</trans-unit>
<trans-unit id="column.sidebar_33" resname="column.sidebar_33">
<source>Sidebar (33%)</source>
</trans-unit>
</body>
</file>
</xliff>
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<xliff version="1.0">
<file source-language="en" datatype="plaintext" original="EXT:vitec/Resources/Private/Language/locallang_csh_tx_vitec_domain_model_product.xlf" date="2025-01-13T15:54:51Z" product-name="vitec">
<header/>
<body>
<trans-unit id="title.description" resname="title.description">
<source>title</source>
</trans-unit>
<trans-unit id="slug.description" resname="slug.description">
<source>slug</source>
</trans-unit>
</body>
</file>
</xliff>
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<xliff version="1.0">
<file source-language="en" datatype="plaintext" original="EXT:vitec/Resources/Private/Language/locallang_db.xlf" date="2025-01-13T15:54:51Z" product-name="vitec">
<header/>
<body>
<trans-unit id="tx_vitec_domain_model_" resname="tx_vitec_domain_model_">
<source></source>
</trans-unit>
<trans-unit id="tx_vitec_domain_model_.description" resname="tx_vitec_domain_model_.description">
<source></source>
</trans-unit>
<trans-unit id="tx_vitec_domain_model_product" resname="tx_vitec_domain_model_product">
<source>Product</source>
</trans-unit>
<trans-unit id="tx_vitec_domain_model_product.description" resname="tx_vitec_domain_model_product.description">
<source>Product</source>
</trans-unit>
<trans-unit id="tx_vitec_domain_model_product.title" resname="tx_vitec_domain_model_product.title">
<source>Title</source>
</trans-unit>
<trans-unit id="tx_vitec_domain_model_product.title.description" resname="tx_vitec_domain_model_product.title.description">
<source>Title</source>
</trans-unit>
<trans-unit id="tx_vitec_domain_model_product.slug" resname="tx_vitec_domain_model_product.slug">
<source>Slug</source>
</trans-unit>
<trans-unit id="tx_vitec_domain_model_product.slug.description" resname="tx_vitec_domain_model_product.slug.description">
<source>Slug</source>
</trans-unit>
</body>
</file>
</xliff>
@@ -0,0 +1,71 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<xliff version="1.0">
<file source-language="en" datatype="plaintext" original="EXT:vitec/Resources/Private/Language/locallang_pages.xlf" product-name="vitec">
<header/>
<body>
<trans-unit id="layout.0" resname="layout.0">
<source>Default</source>
</trans-unit>
<trans-unit id="layout.1" resname="layout.1">
<source>Index Page</source>
</trans-unit>
<trans-unit id="layout.2" resname="layout.2">
<source>Markets Overview</source>
</trans-unit>
<trans-unit id="layout.3" resname="layout.3">
<source>Market Detail</source>
</trans-unit>
<trans-unit id="layout.4" resname="layout.4">
<source>Solutions Overview</source>
</trans-unit>
<trans-unit id="layout.5" resname="layout.5">
<source>Solution Detail</source>
</trans-unit>
<trans-unit id="layout.6" resname="layout.6">
<source>Use Cases Overview</source>
</trans-unit>
<trans-unit id="layout.7" resname="layout.7">
<source>Use Case Detail</source>
</trans-unit>
<trans-unit id="layout.8" resname="layout.8">
<source>Products Overview</source>
</trans-unit>
<trans-unit id="layout.9" resname="layout.9">
<source>Product Main Category</source>
</trans-unit>
<trans-unit id="layout.10" resname="layout.10">
<source>Product Detail</source>
</trans-unit>
<trans-unit id="layout.11" resname="layout.11">
<source>Support Overview</source>
</trans-unit>
<trans-unit id="layout.12" resname="layout.12">
<source>News Overview</source>
</trans-unit>
<trans-unit id="layout.13" resname="layout.13">
<source>News Detail V1</source>
</trans-unit>
<trans-unit id="layout.14" resname="layout.14">
<source>News Detail V2</source>
</trans-unit>
<trans-unit id="layout.15" resname="layout.15">
<source>News Detail V3</source>
</trans-unit>
<trans-unit id="layout.16" resname="layout.16">
<source>Content Page V1</source>
</trans-unit>
<trans-unit id="layout.17" resname="layout.17">
<source>Content Page V2</source>
</trans-unit>
<trans-unit id="layout.18" resname="layout.18">
<source>Content Page V3</source>
</trans-unit>
<trans-unit id="layout.19" resname="layout.19">
<source>Events Overview</source>
</trans-unit>
<trans-unit id="layout.20" resname="layout.20">
<source>Contact Page</source>
</trans-unit>
</body>
</file>
</xliff>
@@ -0,0 +1,8 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers">
<div class="vitec-administration">
<f:flashMessages/>
<h2>Hi</h2>
<f:render section="main"/>
</div>
</html>
@@ -0,0 +1,4 @@
<div class="vitec">
<f:render section="main" />
</div>
@@ -0,0 +1,12 @@
<div class="product-downloads">
<h3>Downloads</h3>
<ul>
<f:for each="{product.downloads}" as="download">
<li>
<a href="{download.file.originalResource.publicUrl}" target="_blank">
{download.title}
</a>
</li>
</f:for>
</ul>
</div>
@@ -0,0 +1,16 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<div class="">
<h2>Productlist0</h2>
<div class="card">
<div class="card-header">
<h3>Product LIST by Category</h3>
</div>
<f:for each="{products}" as="p">
<f:link.action pluginName="Productshow" action="show" arguments="{product : p}" pageUid="58" ><h4>{p.title}</h4></f:link.action>
<f:for each="{p.categories}" as="c">
<f:link.action pluginName="Productlist" action="list" arguments="{category : c}" pageUid="58" ><span class="badge badge-secondary">{c.title}, {c.uid}</span></f:link.action>
</f:for>
</f:for>
</div>
</div>
@@ -0,0 +1,12 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<div class="">
<h2>Productlist1</h2>
<div class="card">
<div class="card-header">
<h3>Product LIST by Category</h3>
</div>
<f:for each="{products}" as="p">
<f:link.action pluginName="Productshow" action="show" arguments="{product : p}" pageUid="58" ><h4>{p.title}</h4></f:link.action>
</f:for>
</div>
</div>
@@ -0,0 +1,4 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<div class="">
<h2>Productlist2</h2>
</div>
@@ -0,0 +1,4 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<div class="">
<h2>Productlist3</h2>
</div>
@@ -0,0 +1,4 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<div class="">
<h2>Productlist3</h2>
</div>
@@ -0,0 +1,25 @@
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "Executive Anvil",
"description": "Sleeker than ACME's Classic Anvil, the Executive Anvil is perfect for the business traveler looking for something to drop from a height.",
"review": {
"@type": "Review",
"reviewRating": {
"@type": "Rating",
"ratingValue": 4,
"bestRating": 5
},
"author": {
"@type": "Person",
"name": "Fred Benson"
}
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": 4.4,
"reviewCount": 89
}
}
</script>
@@ -0,0 +1,42 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:layout name="Default" />
<f:section name="main">
<f:flashMessages />
<h1>Download List</h1>
<f:be.security.ifAuthenticated>
<f:then>
<f:debug>{_all}</f:debug>
DownloadCard Plugin
vitec/Resources/Private/Templates/Download/Downloadcard.html
</f:then>
</f:be.security.ifAuthenticated>
<!-- Check if a product is selected -->
<f:if condition="{product}">
<f:then>
<h2>Selected Product</h2>
<p><strong>Title:</strong> {product.title}</p>
<p><strong>Description:</strong> {product.description}</p>
</f:then>
<!-- Show a message if no product is selected -->
<f:else>
<p>No product selected.</p>
</f:else>
</f:if>
<hr />
<f:if condition="{download}">
<f:then>
<h2>Selected download</h2>
<p><strong>Title:</strong> {download.title}</p>
<p><strong>Description:</strong> {download.description}</p>
</f:then>
<f:else>
<p>No download selected.</p>
</f:else>
</f:if>
</f:section>
</html>
@@ -0,0 +1,23 @@
<!-- filepath: /usr/home/vitecxxx/public_html/live/extensions/vitec/Resources/Private/Templates/Download/DownloadCardCollection.html -->
<f:layout name="Default" />
<f:section name="main">
<f:be.security.ifAuthenticated>
<f:then>
<f:debug>{_all}</f:debug>
DownloadCard Plugin
vitec/Resources/Private/Templates/Download/DownloadCardCollection.html
</f:then>
</f:be.security.ifAuthenticated>
<h1>Download Card Collection</h1>
<f:if condition="{product}">
<h2>Product: {product.name}</h2>
<ul>
<f:for each="{downloads}" as="download">
<li>{download.title}</li>
</f:for>
</ul>
</f:if>
<f:else>
<p>No product or downloads found.</p>
</f:else>
</f:section>
@@ -0,0 +1,42 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:layout name="Default" />
<f:section name="main">
<f:flashMessages />
<h1>Download List</h1>
<f:be.security.ifAuthenticated>
<f:then>
<f:debug>{_all}</f:debug>
DownloadCard Plugin
vitec/Resources/Private/Templates/Download/List.html
</f:then>
</f:be.security.ifAuthenticated>
<!-- Check if a product is selected -->
<f:if condition="{product}">
<f:then>
<h2>Selected Product</h2>
<p><strong>Title:</strong> {product.title}</p>
<p><strong>Description:</strong> {product.description}</p>
</f:then>
<!-- Show a message if no product is selected -->
<f:else>
<p>No product selected.</p>
</f:else>
</f:if>
<hr />
<f:if condition="{download}">
<f:then>
<h2>Selected download</h2>
<p><strong>Title:</strong> {download.title}</p>
<p><strong>Description:</strong> {download.description}</p>
</f:then>
<f:else>
<p>No download selected.</p>
</f:else>
</f:if>
</f:section>
</html>
@@ -0,0 +1,165 @@
<f:comment>
### This template renders a single market with different layouts
<f:debug>{_all}</f:debug>
File path: EXT:vitec/Resources/Private/Templates/Market/Show.html
</f:comment>
<f:layout name="Default" />
<f:section name="main">
<!-- Layout Selection -->
<f:switch expression="{settings.layout}">
<f:case value="card">
<f:render section="cardLayout" arguments="{market: market, settings: settings}" />
</f:case>
<f:case value="hero">
<f:render section="heroLayout" arguments="{market: market, settings: settings}" />
</f:case>
<f:case value="compact">
<f:render section="compactLayout" arguments="{market: market, settings: settings}" />
</f:case>
<f:defaultCase>
<f:render section="defaultLayout" arguments="{market: market, settings: settings}" />
</f:defaultCase>
</f:switch>
</f:section>
<!-- Default Layout -->
<f:section name="defaultLayout">
<f:if condition="{settings.debug}">
<f:debug>{_all}</f:debug>
<code>
File path: vscode://file/vitec/Resources/Private/Templates/Market/Show.html
</code>
</f:if>
<div class="container py-5">
<div class="row justify-content-center">
<div class="col-md-6 col-lg-4">
<div class="card shadow-sm border-0 rounded-4">
<f:if condition="{market.image}">
<f:then>
<f:image src="{market.image.originalResource.originalFile.uid}" title="{market.title} {market.subtitle}" alt="{market.title} - {market.subtitle}" class="img-fluid card-img-top rounded-top-4" />
</f:then>
<f:else>
No image available
</f:else>
</f:if>
<div class="card-body">
<p class="card-text">
<h5 class="card-title mb-0">{market.title}</h5>
<small class="text-muted">{market.subtitle}</small><br />
<f:format.html>{market.description}</f:format.html>
</p>
</div>
</div>
</div>
</div>
</div>
</f:section>
<!-- Card Layout -->
<f:section name="cardLayout">
<f:if condition="{settings.debug}">
<f:debug>{_all}</f:debug>
<code>
File path: vscode://file/vitec/Resources/Private/Templates/Market/Show.html
</code>
</f:if>
<div class="container py-5">
<div class="row">
<div class="col-md-8 col-lg-6 mx-auto">
<div class="card shadow-lg border-0 rounded-5">
<div class="row g-0">
<div class="col-md-4">
<f:if condition="{market.image}">
<f:image src="{market.image.originalResource.originalFile.uid}" title="{market.title}" alt="{market.title}" class="img-fluid rounded-start h-100 object-cover" />
</f:if>
</div>
<div class="col-md-8">
<div class="card-body h-100 d-flex flex-column">
<div class="mb-3">
<h4 class="card-title mb-0">{market.title}</h4>
<small class="text-primary fw-bold">{market.subtitle}</small>
</div>
<p class="card-text flex-grow-1">
<f:format.html>{market.description}</f:format.html>
</p>
<f:if condition="{market.categories}">
<div class="mb-3">
<f:for each="{market.categories}" as="category">
<f:if condition="{category.parent.uid} == 18">
<span class="badge bg-danger me-1">{category.title}</span>
</f:if>
</f:for>
</div>
</f:if>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</f:section>
<!-- Hero Layout -->
<f:section name="heroLayout">
<f:if condition="{settings.debug}">
<f:debug>{_all}</f:debug>
<code>
File path: vscode://file/vitec/Resources/Private/Templates/Market/Show.html
</code>
</f:if>
<div class="hero-section position-relative" style="min-height: 60vh;">
<f:if condition="{market.image}">
<div class="hero-bg position-absolute w-100 h-100" style="background-image: url('{f:uri.image(src: market.image.originalResource.originalFile.uid)}'); background-size: cover; background-position: center; opacity: 0.3;"></div>
</f:if>
<div class="container position-relative h-100 d-flex align-items-center">
<div class="row w-100">
<div class="col-lg-8 col-xl-6">
<div class="mb-4">
<h1 class="display-4 fw-bold mb-2">{market.title}</h1>
<h2 class="h4 text-primary">{market.subtitle}</h2>
</div>
<div class="lead mb-4">
<f:format.html>{market.description}</f:format.html>
</div>
</div>
</div>
</div>
</div>
</f:section>
<!-- Compact Layout -->
<f:section name="compactLayout">
<f:if condition="{settings.debug}">
<f:debug>{_all}</f:debug>
<code>
File path: vscode://file/vitec/Resources/Private/Templates/Market/Show.html
</code>
</f:if>
<div class="container py-3">
<div class="row">
<div class="col-12">
<div class="d-flex align-items-center p-3 border rounded-3 bg-light">
<f:if condition="{market.image}">
<f:image src="{market.image.originalResource.originalFile.uid}" title="{market.title}" alt="{market.title}" class="me-3 rounded" style="width: 60px; height: 60px; object-fit: contain;"/>
</f:if>
<div class="flex-grow-1">
<h5 class="mb-1">{market.title}</h5>
<p class="mb-1 text-muted">{market.subtitle}</p>
<small class="text-truncate d-block">
<f:format.stripTags><f:format.crop maxCharacters="100">{market.description}</f:format.crop></f:format.stripTags>
</small>
</div>
</div>
</div>
</div>
</div>
</f:section>
@@ -0,0 +1,135 @@
<div class="t3-page-ce-preview">
<div class="t3-page-ce-header">
<strong>🎯 Usecase Show Plugin</strong>
<f:if condition="{layout}">
<span class="badge badge-info">Layout: {layout}</span>
</f:if>
</div>
<div class="t3-page-ce-body">
<f:if condition="{usecase}">
<f:then>
<!-- Show selected usecase data -->
<div class="preview-content">
<div class="preview-item">
<strong>Selected Usecase:</strong>
<div class="preview-usecase">
<h4>{usecase.title}</h4>
<f:if condition="{usecase.subtitle}">
<p class="text-muted"><em>{usecase.subtitle}</em></p>
</f:if>
<f:if condition="{usecase.description}">
<p class="preview-description">
<f:format.crop maxCharacters="150">{usecase.description}</f:format.crop>
</p>
</f:if>
<small class="text-muted">UID: {usecase.uid}</small>
</div>
</div>
</div>
</f:then>
<f:else>
<!-- No usecase selected -->
<div class="preview-warning">
<span class="text-warning">⚠️ No usecase selected</span>
<p class="text-muted">Please configure the plugin to select a usecase.</p>
</div>
</f:else>
</f:if>
<!-- Show plugin settings -->
<f:if condition="{flexFormData.settings}">
<div class="preview-settings">
<details>
<summary><strong>Plugin Settings</strong></summary>
<table class="table table-sm">
<f:for each="{flexFormData.settings}" as="value" key="key">
<f:if condition="{value}">
<tr>
<td><strong>{key}</strong></td>
<td>{value}</td>
</tr>
</f:if>
</f:for>
</table>
</details>
</div>
</f:if>
</div>
</div>
<style>
.t3-page-ce-preview {
border: 1px solid #ddd;
border-radius: 4px;
padding: 10px;
margin: 5px 0;
background: #f9f9f9;
}
.t3-page-ce-header {
margin-bottom: 10px;
padding-bottom: 5px;
border-bottom: 1px solid #eee;
}
.badge {
display: inline-block;
padding: 2px 6px;
font-size: 10px;
background: #007cba;
color: white;
border-radius: 3px;
margin-left: 10px;
}
.preview-usecase {
background: white;
padding: 10px;
border-radius: 4px;
border-left: 4px solid #007cba;
margin: 5px 0;
}
.preview-usecase h4 {
margin: 0 0 5px 0;
color: #333;
}
.preview-description {
color: #666;
margin: 5px 0;
}
.preview-warning {
background: #fff3cd;
border: 1px solid #ffeaa7;
border-radius: 4px;
padding: 10px;
color: #856404;
}
.text-muted {
color: #6c757d;
}
.text-warning {
color: #856404;
}
.preview-settings {
margin-top: 10px;
padding-top: 10px;
border-top: 1px solid #eee;
}
.preview-settings table {
width: 100%;
font-size: 12px;
}
.preview-settings td {
padding: 2px 5px;
border-bottom: 1px solid #eee;
}
</style>
@@ -0,0 +1,20 @@
<f:layout name="Default" />
<f:section name="main">
<f:if condition="{settings.debug}">
<f:debug>{_all}</f:debug>
</f:if>
<h2>-- {settings.layout} -- </h2>
<h1>Product LIST by Category</h1>
<p>{settings.categories}</p>
<f:switch expression="{settings.layout}">
<f:case value="0"><f:render partial="product/Productlist0" arguments="{products: products}" /></f:case>
<f:case value="1"><f:render partial="product/Productlist1" arguments="{products: products}" /></f:case>
<f:case value="2"><f:render partial="product/Productlist2" arguments="{products: products}" /></f:case>
<f:case value="3"><f:render partial="product/Productlist3" arguments="{products: products}" /></f:case>
</f:switch>
</f:section>
@@ -0,0 +1,191 @@
<f:layout name="Default" />
<f:section name="main">
<f:security.ifAuthenticated>
<!-- ------------------ -->
<f:debug>{_all}</f:debug>
<!-- ------------------ -->
</f:security.ifAuthenticated>
<section class="product-hero">
<div class="container">
<div class="row">
<h1>{product.title}</h1>
<h2>{product.subtitle}</h2>
</div>
</div>
</section>
<f:if condition="product.structureddata">
<f:then>
<f:format.raw>{product.structureddata}</f:format.raw>
</f:then>
</f:if>
<section class="product-intro" class="fullwidth-section">
<div class="container">
<div class="row">
<div class="col-md-6">
<p>{product.title}</p>
<p>{product.teaser}</p>
<div class="">
<h4>Categories</h4>
<f:for each="{product.categories}" as="c">
<f:if condition="{c.title}">
<span class="badge badge-secondary">{c.title} - {c.uid}</span><br />
</f:if>
</f:for>
</div>
</div>
<f:if condition="{product.productimage}">
<div class="col-md-6">
<div class="product-images">
<section id="productCarousel" class="carousel slide" data-bs-ride="carousel">
<div class="carousel-inner">
<f:for each="{product.productimage}" as="image">
<div class="carousel-item">
<f:image image="{image}" alt="{product.title}" class=" d-block w-100 img-fluid" title="{product.title}" />
</div>
</f:for>
</div>
<button class="carousel-control-prev" type="button" data-bs-target="#productCarousel" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Zurück</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#productCarousel" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Weiter</span>
</button>
</div>
</div>
</f:if>
</div>
</div>
</section>
<section class="product-highlights">
<div class="container">
<div class="row">
<f:if condition="{product.video}">
<f:then>
<div class="col-md-6">
<p>{product.video}</p>
</div>
<div class="col-md-6">
<f:format.html>{product.highlights}</f:format.html>
</div>
</f:then>
<f:else>
<div class="col-md-12">
<f:format.html>{product.highlights}</f:format.html>
</div>
</f:else>
</f:if>
</div>
</div>
</section>
<f:if condition="{product.relatedprodukt}">
<section class="product-related">
<div class="container">
<div class="row">
<div class="col-md-12">
<h3>Related Products</h3>
<ul>
<f:for each="{product.relatedprodukt}" as="relatedProduct">
<li>{relatedProduct.title}</li>
</f:for>
</ul>
</div>
</div>
</div>
</section>
</f:if>
<hr />
<section class="product-features">
<div class="container">
<div class="row">
<div class="col-md-12">
<h3>The Key Features of {product.title}</h3>
<p>Bunch of Icons</p>
</div>
</div>
</div>
</section>
<hr />
<section class="product-overview">
<div class="container">
<div class="row">
<div class="col-md-8">
<f:format.html>{product.description}</f:format.html>
</div>
<div class="col-md-4">
<f:format.html>{product.applications}</f:format.html>
</div>
</div>
</div>
<section class="product-downloads">
<div class="container">
<div class="row">
<div class="col-md-12">
<f:render partial="product/Downloads" arguments="{product: product}" />
</div>
</div>
</div>
</section>
<section class="product-why-vitec">
<div class="container">
<div class="row">
<div class="col-md-12">
<p>WHY VITEC</p>
<f:if condition="{product.contentelement}">
<f:cObject typoscriptObjectPath="tt_content" data="{uid: product.contentelement}" />
</f:if>
</div>
</div>
</div>
</section>
<section class="product-cta">
<div class="container">
<div class="row">
<div class="col-md-12">
<p>CTA</p>
<f:if condition="{contentelementCtaUid}">
<f:cObject typoscriptObjectPath="lib.contentElement" data="{uid: contentelementCtaUid}" />
</f:if>
</div>
</div>
</div>
</section>
<section class="product-blog">
<div class="container">
<div class="row">
<div class="col-md-12">
<p>Blog</p>
</div>
</div>
</div>
<hr /><hr /><hr />
<h2>Ab hier nix wichtiges mehr</h2>
<hr /><hr /><hr />
<div class="row">
<h1>{product.title}</h1>
<h2>{product.subtitle}</h2>
<p>{product.applications}</p>
<p>{product.highlights}</p>
</div>
</f:section>
<f:comment>
<div class="product-images">
<f:for each="{product.productimage}" as="image">
<f:image image="{image}" alt="{product.title}" class="img-fluid" />
</f:for>
<f:image image="{product.ogimage}" alt="{product.title}" class="img-fluid" />
</div>
<f:render partial="product/Downloads" arguments="{product: product}" />
</f:comment>
@@ -0,0 +1,2 @@
uhgbzughbz
@@ -0,0 +1,31 @@
<f:layout name="Default" />
<f:section name="main">
<div class="card">
<div class="card-header">
<div class="card-icon">
<core:icon identifier="module-styleguide" size="large" />
</div>
<div class="card-header-body">
<h2 class="card-title">{settings.header}</h2>
</div>
</div>
<div class="card-body">
<p class="card-text"><f:format.html>{settings.bodytext}</f:format.html></p>
</div>
<div class="card-footer">
<a href="{settings.buttonlink}" class="btn btn-default">{settings.buttontext}<</a>
</div>
</div>
<h1>{settings.header}</h1>
<f:format.html>{settings.bodytext}</f:format.html>
<f:comment>
<f:if condition="{settings.image}">
<f:image src="{settings.image.0}" alt="{settings.header}" />
</f:if>
</f:comment>
<f:if condition="{settings.buttontext}">
<a href="{settings.buttonlink}" class="btn btn-primary">{settings.buttontext}</a>
</f:if>
</f:section>
@@ -0,0 +1,165 @@
<f:comment>
### This template renders a single solution with different layouts
<f:debug>{_all}</f:debug>
File path: EXT:vitec/Resources/Private/Templates/Solution/Show.html
</f:comment>
<f:layout name="Default" />
<f:section name="main">
<!-- Layout Selection -->
<f:switch expression="{settings.layout}">
<f:case value="card">
<f:render section="cardLayout" arguments="{solution: solution, settings: settings}" />
</f:case>
<f:case value="hero">
<f:render section="heroLayout" arguments="{solution: solution, settings: settings}" />
</f:case>
<f:case value="compact">
<f:render section="compactLayout" arguments="{solution: solution, settings: settings}" />
</f:case>
<f:defaultCase>
<f:render section="defaultLayout" arguments="{solution: solution, settings: settings}" />
</f:defaultCase>
</f:switch>
</f:section>
<!-- Default Layout -->
<f:section name="defaultLayout">
<f:if condition="{settings.debug}">
<f:debug>{_all}</f:debug>
<code>
File path: vscode://file/vitec/Resources/Private/Templates/Solution/Show.html
</code>
</f:if>
<div class="container py-5">
<div class="row justify-content-center">
<div class="col-md-6 col-lg-4">
<div class="card shadow-sm border-0 rounded-4">
<f:if condition="{solution.image}">
<f:then>
<f:image src="{solution.image.originalResource.originalFile.uid}" title="{solution.title} {solution.subtitle}" alt="{solution.title} - {solution.subtitle}" class="img-fluid card-img-top rounded-top-4" />
</f:then>
<f:else>
No image available
</f:else>
</f:if>
<div class="card-body">
<p class="card-text">
<h5 class="card-title mb-0">{solution.title}</h5>
<small class="text-muted">{solution.subtitle}</small><br />
<f:format.html>{solution.description}</f:format.html>
</p>
</div>
</div>
</div>
</div>
</div>
</f:section>
<!-- Card Layout -->
<f:section name="cardLayout">
<f:if condition="{settings.debug}">
<f:debug>{_all}</f:debug>
<code>
File path: vscode://file/vitec/Resources/Private/Templates/Solution/Show.html
</code>
</f:if>
<div class="container py-5">
<div class="row">
<div class="col-md-8 col-lg-6 mx-auto">
<div class="card shadow-lg border-0 rounded-5">
<div class="row g-0">
<div class="col-md-4">
<f:if condition="{solution.image}">
<f:image src="{solution.image.originalResource.originalFile.uid}" title="{solution.title}" alt="{solution.title}" class="img-fluid rounded-start h-100 object-cover" />
</f:if>
</div>
<div class="col-md-8">
<div class="card-body h-100 d-flex flex-column">
<div class="mb-3">
<h4 class="card-title mb-0">{solution.title}</h4>
<small class="text-primary fw-bold">{solution.subtitle}</small>
</div>
<p class="card-text flex-grow-1">
<f:format.html>{solution.description}</f:format.html>
</p>
<f:if condition="{solution.categories}">
<div class="mb-3">
<f:for each="{solution.categories}" as="category">
<f:if condition="{category.parent.uid} == 18">
<span class="badge bg-danger me-1">{category.title}</span>
</f:if>
</f:for>
</div>
</f:if>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</f:section>
<!-- Hero Layout -->
<f:section name="heroLayout">
<f:if condition="{settings.debug}">
<f:debug>{_all}</f:debug>
<code>
File path: vscode://file/vitec/Resources/Private/Templates/Solution/Show.html
</code>
</f:if>
<div class="hero-section position-relative" style="min-height: 60vh;">
<f:if condition="{solution.image}">
<div class="hero-bg position-absolute w-100 h-100" style="background-image: url('{f:uri.image(src: solution.image.originalResource.originalFile.uid)}'); background-size: cover; background-position: center; opacity: 0.3;"></div>
</f:if>
<div class="container position-relative h-100 d-flex align-items-center">
<div class="row w-100">
<div class="col-lg-8 col-xl-6">
<div class="mb-4">
<h1 class="display-4 fw-bold mb-2">{solution.title}</h1>
<h2 class="h4 text-primary">{solution.subtitle}</h2>
</div>
<div class="lead mb-4">
<f:format.html>{solution.description}</f:format.html>
</div>
</div>
</div>
</div>
</div>
</f:section>
<!-- Compact Layout -->
<f:section name="compactLayout">
<f:if condition="{settings.debug}">
<f:debug>{_all}</f:debug>
<code>
File path: vscode://file/vitec/Resources/Private/Templates/Solution/Show.html
</code>
</f:if>
<div class="container py-3">
<div class="row">
<div class="col-12">
<div class="d-flex align-items-center p-3 border rounded-3 bg-light">
<f:if condition="{solution.image}">
<f:image src="{solution.image.originalResource.originalFile.uid}" title="{solution.title}" alt="{solution.title}" class="me-3 rounded" style="width: 60px; height: 60px; object-fit: contain;"/>
</f:if>
<div class="flex-grow-1">
<h5 class="mb-1">{solution.title}</h5>
<p class="mb-1 text-muted">{solution.subtitle}</p>
<small class="text-truncate d-block">
<f:format.stripTags><f:format.crop maxCharacters="100">{solution.description}</f:format.crop></f:format.stripTags>
</small>
</div>
</div>
</div>
</div>
</div>
</f:section>
@@ -0,0 +1,79 @@
<f:layout name="Default" />
<f:debug>{_all}</f:debug>
<f:section name="main">
<f:for each="{usecases}" as="u">
<f:link.action pageUid="{u.singlepid}" >
<h4>{u.title}</h4>-
</f:link.action>
<f:for each="{u.categories}" as="category">
<span class="badge badge-primary ">{category.class}</span>
</f:for>
<f:if condition="{u.caseimage}">
<img src="{u.caseimage.originalResource.publicUrl}" alt="{u.title}" class="img-fluid" />
</f:if>
</f:for>
<hr /><hr /><hr /><hr />
<section>USECASE Selector here</section>
<f:for each="{usecases}" as="u">
<f:variable name="categories" value="{u.categories}" />
<div class="categories">
<h6>Categories:</h6>
<f:for each="{categories}" as="category">
<span class="badge badge-primary ">{category.title}</span>
</f:for>
</div>
<div class="tx-vitec-card card success-card">
<div class="row card-header">
<div class="col col-11">
<h5 class="card-title">{u.title}</h5>
</div>
<div class="col col-1 col-btn">
<a class="btn btn-circle"><i class="fas fa-ellipsis-v"></i></a>
</div>
</div>
<!-- ------------------------------------------------------ Card Front -->
<div class="card-front">
<div class="card-image" style="background-image: url('/fileadmin/_processed_/c/5/csm_IMG_2466_0f9c160cb8.jpg') ; "></div>
<div class="w-50 img-thumbnail customer-logo ml-auto mr-auto p-3">
<div class="content">
<f:if condition="{u.caseimage}">
{u.caseimage}
</f:if>
</div>
</div>
<div class="card-body">
<div class="card-text">
<f:format.html>{u.teaser}</f:format.html>
</div>
<div class="card-text full-text d-none">
<p>VITEC’s IPTV and digital signage solution transformed the CO'Met Arena in Orléans, enhancing visitor engagement with dynamic content across 200 screens. The innovative system ensures efficient content management, live event streaming, and an exceptional visual experience in multiple event spaces.</p>
</div>
<a href="/success-stories/comet-arena" target="_self" class="w-100 btn btn-secondary">
Learn More
</a>
</div>
</div>
<!-- ------------------------------------------------------ Card Back -->
<div class="card-back">
<div class="card-back-image" style="background-image: url('/fileadmin/_processed_/e/5/csm_IMG_2469_e757124696.jpg') ; "></div>
<div class="card-back-body">
<div class="card-back-text">
<h6><strong>Atlanta Hawks</strong></h6
><p>“VITEC has enabled us to create a dynamic and customised visual experience for visitors to the various event spaces while also creating an efficient and simple content management and delivery operation."</p><p><strong>Fabrice Leguay</strong><br> Manganelli Technology</p>
</div>
<a href="/success-stories/comet-arena" target="_self" class="btn btn-white w-100">
Learn More
</a>
</div>
</div>
</div>
</f:for>
</f:section>
@@ -0,0 +1,203 @@
<f:comment>
### This template renders a single usecase with different layouts
<f:debug>{_all}</f:debug>
File path: EXT:vitec/Resources/Private/Templates/Usecase/Show.html
</f:comment>
<f:layout name="Default" />
<f:section name="main">
<!-- Layout Selection -->
<f:switch expression="{settings.layout}">
<f:case value="card">
<f:render section="cardLayout" arguments="{usecase: usecase, settings: settings}" />
</f:case>
<f:case value="hero">
<f:render section="heroLayout" arguments="{usecase: usecase, settings: settings}" />
</f:case>
<f:case value="compact">
<f:render section="compactLayout" arguments="{usecase: usecase, settings: settings}" />
</f:case>
<f:defaultCase>
<f:render section="defaultLayout" arguments="{usecase: usecase, settings: settings}" />
</f:defaultCase>
</f:switch>
</f:section>
<!-- Default Layout (your current design) -->
<f:section name="defaultLayout">
<f:if condition="{settings.debug}">
<f:debug>{_all}</f:debug>
<code>
File path: vscode://file/vitec/Resources/Private/Templates/Usecase/Show.html
</code>
</f:if>
<div class="container py-5">
<div class="row justify-content-center">
<div class="col-md-6 col-lg-4">
<div class="card shadow-sm border-0 rounded-4">
<f:if condition="{usecase.caseimage}">
<f:then>
<f:image src="{usecase.caseimage.originalResource.originalFile.uid}" title="{usecase.title} {usecase.subtitle}" alt="{usecase.title} - {usecase.subtitle}" class="img-fluid card-img-top rounded-top-4" />
</f:then>
<f:else>
No case image available
</f:else>
</f:if>
<div class="card-body">
<div class="d-flex align-items-center mb-3">
<f:if condition="{usecase.logoimage}">
<f:then>
<f:image src="{usecase.logoimage.originalResource.originalFile.uid}" title="{usecase.title} {usecase.subtitle}" alt="{usecase.title} - {usecase.subtitle}" class="img-fluid gsap-logo-image"/>
</f:then>
<f:else>
No logo image available
</f:else>
</f:if>
</div>
<p class="card-text">
<h5 class="card-title mb-0">{usecase.title}</h5>
<small class="text-muted">{usecase.subtitle}</small><br />
<f:format.html>{usecase.description}</f:format.html>
</p>
<f:link.typolink parameter="{usecase.singlepid}"
target="_top"
class="ico-class btn btn-primary w-100" title="usecase.title}"
additionalAttributes="{type:'button'}"
>
View Success Story
</f:link.typolink>
</div>
</div>
</div>
</div>
</div>
</f:section>
<!-- Card Layout -->
<f:section name="cardLayout">
<f:if condition="{settings.debug}">
<f:debug>{_all}</f:debug>
<code>
File path: vscode://file/vitec/Resources/Private/Templates/Usecase/Show.html
</code>
</f:if>
<div class="container py-5">
<div class="row">
<div class="col-md-8 col-lg-6 mx-auto">
<div class="card shadow-lg border-0 rounded-5">
<div class="row g-0">
<div class="col-md-4">
<f:if condition="{usecase.caseimage}">
<f:image src="{usecase.caseimage.originalResource.originalFile.uid}" title="{usecase.title}" alt="{usecase.title}" class="img-fluid rounded-start h-100 object-cover" />
</f:if>
</div>
<div class="col-md-8">
<div class="card-body h-100 d-flex flex-column">
<div class="d-flex align-items-center mb-3">
<f:if condition="{usecase.logoimage}">
<f:image src="{usecase.logoimage.originalResource.originalFile.uid}" title="{usecase.title}" alt="{usecase.title}" class="me-3" style="width: 40px; height: 40px; object-fit: contain;"/>
</f:if>
<div>
<h4 class="card-title mb-0">{usecase.title}</h4>
<small class="text-primary fw-bold">{usecase.subtitle}</small>
</div>
</div>
<p class="card-text flex-grow-1">
<f:format.html>{usecase.description}</f:format.html>
</p>
<f:if condition="{usecase.categories}">
<div class="mb-3">
<f:for each="{usecase.categories}" as="category">
<f:if condition="{category.parent.uid} == 18">
<span class="badge bg-danger me-1">{category.title}</span>
</f:if>
</f:for>
</div>
</f:if>
<f:link.typolink parameter="{usecase.singlepid}" class="btn btn-outline-primary">
Read More →
</f:link.typolink>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</f:section>
<!-- Hero Layout -->
<f:section name="heroLayout">
<f:if condition="{settings.debug}">
<f:debug>{_all}</f:debug>
<code>
File path: vscode://file/vitec/Resources/Private/Templates/Usecase/Show.html
</code>
</f:if>
<div class="hero-section position-relative" style="min-height: 60vh;">
<f:if condition="{usecase.caseimage}">
<div class="hero-bg position-absolute w-100 h-100" style="background-image: url('{f:uri.image(src: usecase.caseimage.originalResource.originalFile.uid)}'); background-size: cover; background-position: center; opacity: 0.3;"></div>
</f:if>
<div class="container position-relative h-100 d-flex align-items-center">
<div class="row w-100">
<div class="col-lg-8 col-xl-6">
<div class="d-flex align-items-center mb-4">
<f:if condition="{usecase.logoimage}">
<f:image src="{usecase.logoimage.originalResource.originalFile.uid}" title="{usecase.title}" alt="{usecase.title}" class="me-4" style="width: 80px; height: 80px; object-fit: contain;"/>
</f:if>
<div>
<h1 class="display-4 fw-bold mb-2">{usecase.title}</h1>
<h2 class="h4 text-primary">{usecase.subtitle}</h2>
</div>
</div>
<div class="lead mb-4">
<f:format.html>{usecase.description}</f:format.html>
</div>
<f:link.typolink parameter="{usecase.singlepid}" class="btn btn-primary btn-lg">
Discover the Success Story
</f:link.typolink>
</div>
</div>
</div>
</div>
</f:section>
<!-- Compact Layout -->
<f:section name="compactLayout">
<f:if condition="{settings.debug}">
<f:debug>{_all}</f:debug>
<code>
File path: vscode://file/vitec/Resources/Private/Templates/Usecase/Show.html
</code>
</f:if>
<div class="container py-3">
<div class="row">
<div class="col-12">
<div class="d-flex align-items-center p-3 border rounded-3 bg-light">
<f:if condition="{usecase.logoimage}">
<f:image src="{usecase.logoimage.originalResource.originalFile.uid}" title="{usecase.title}" alt="{usecase.title}" class="me-3 rounded" style="width: 60px; height: 60px; object-fit: contain;"/>
</f:if>
<div class="flex-grow-1">
<h5 class="mb-1">{usecase.title}</h5>
<p class="mb-1 text-muted">{usecase.subtitle}</p>
<small class="text-truncate d-block">
<f:format.stripTags><f:format.crop maxCharacters="100">{usecase.description}</f:format.crop></f:format.stripTags>
</small>
</div>
<f:link.typolink parameter="{usecase.singlepid}" class="btn btn-sm btn-outline-primary ms-3">
View
</f:link.typolink>
</div>
</div>
</div>
</div>
</f:section>