feat: change to other sitepakage
All checks were successful
Build / build (push) Successful in 2m27s
Build / deploy-stage (push) Successful in 2m33s
Build / switch-stage (push) Successful in 1m58s

This commit is contained in:
2024-12-12 12:31:41 +01:00
parent 948513cc41
commit 2bac342a5e
147 changed files with 1060 additions and 28057 deletions

View File

@@ -23,47 +23,45 @@
}
],
"require": {
"typo3/minimal": "^12.4",
"typo3/cms-adminpanel": "^12.4",
"typo3/cms-backend": "^12.4",
"typo3/cms-belog": "^12.4",
"typo3/cms-beuser": "^12.4",
"typo3/cms-core": "^12.4",
"typo3/cms-dashboard": "^12.4",
"typo3/cms-extbase": "^12.4",
"typo3/cms-extensionmanager": "^12.4",
"typo3/cms-felogin": "^12.4",
"typo3/cms-filelist": "^12.4",
"typo3/cms-filemetadata": "^12.4",
"typo3/cms-fluid": "^12.4",
"typo3/cms-fluid-styled-content": "^12.4",
"typo3/cms-form": "^12.4",
"typo3/cms-frontend": "^12.4",
"typo3/cms-indexed-search": "^12.4",
"typo3/cms-info": "^12.4",
"typo3/cms-install": "^12.4",
"typo3/cms-lowlevel": "^12.4",
"typo3/cms-opendocs": "^12.4",
"typo3/cms-recordlist": "^12.4",
"typo3/cms-recycler": "^12.4",
"typo3/cms-redirects": "^12.4",
"typo3/cms-reports": "^12.4",
"typo3/cms-rte-ckeditor": "^12.4",
"typo3/cms-scheduler": "^12.4",
"typo3/cms-seo": "^12.4",
"typo3/cms-setup": "^12.4",
"typo3/cms-sys-note": "^12.4",
"typo3/cms-tstemplate": "^12.4",
"typo3/cms-viewpage": "^12.4",
"ichhabrecht/filefill": "^4.3",
"helhum/dotenv-connector": "^3.1",
"helhum/typo3-console": "^8.2",
"bk2k/bootstrap-package": "^15.0",
"cloonar-typo3/base": "@dev",
"friendsoftypo3/content-blocks": "^1.1",
"georgringer/news": "^12.2",
"georgringer/numbered-pagination": "^2.1",
"tpwd/ke_search": "^6.1",
"cloonar-typo3/base-design": "@dev"
"helhum/dotenv-connector": "^3.1",
"helhum/typo3-console": "^8.2",
"typo3/cms-adminpanel": "^13.4",
"typo3/cms-backend": "^13.4",
"typo3/cms-belog": "^13.4",
"typo3/cms-beuser": "^13.4",
"typo3/cms-core": "^13.4",
"typo3/cms-dashboard": "^13.4",
"typo3/cms-extbase": "^13.4",
"typo3/cms-extensionmanager": "^13.4",
"typo3/cms-felogin": "^13.4",
"typo3/cms-filelist": "^13.4",
"typo3/cms-filemetadata": "^13.4",
"typo3/cms-fluid": "^13.4",
"typo3/cms-fluid-styled-content": "^13.4",
"typo3/cms-form": "^13.4",
"typo3/cms-frontend": "^13.4",
"typo3/cms-indexed-search": "^13.4",
"typo3/cms-info": "^13.4",
"typo3/cms-install": "^13.4",
"typo3/cms-lowlevel": "^13.4",
"typo3/cms-opendocs": "^13.4",
"typo3/cms-recordlist": "^13.4",
"typo3/cms-recycler": "^13.4",
"typo3/cms-redirects": "^13.4",
"typo3/cms-reports": "^13.4",
"typo3/cms-rte-ckeditor": "^13.4",
"typo3/cms-scheduler": "^13.4",
"typo3/cms-seo": "^13.4",
"typo3/cms-setup": "^13.4",
"typo3/cms-sys-note": "^13.4",
"typo3/cms-tstemplate": "^13.4",
"typo3/cms-viewpage": "^13.4",
"typo3/minimal": "^13.4",
"wapplersystems/ws-scss": "^13.0"
},
"require-dev": {
"deployer/deployer": "^7.4",
@@ -71,8 +69,7 @@
"phpmd/phpmd": "^2.10",
"phpstan/phpstan": "^1.8",
"rector/rector": "0.13.4",
"squizlabs/php_codesniffer": "^3.6",
"vimeo/psalm": "^4.7"
"squizlabs/php_codesniffer": "^3.6"
},
"scripts":{
"pre-autoload-dump": [

View File

@@ -1,4 +1,8 @@
base: /
dependencies:
- georgringer/news
- cloonar-typo3/base
- typo3/redirects
languages:
-
title: German

View File

@@ -4,12 +4,10 @@ return [
'HTTP' => [
'Response' => [
'Headers' => [
'csp' => 'Content-Security-Policy: default-src \'self\' *.gstatic.com cdnjs.cloudflare.com piwik.wohnservice-wien.at *.ytimg.com *.googlevideo.com *.youtube-nocookie.com *.googleapis.com *.wien.gv.at *.google.com \'unsafe-eval\' \'unsafe-inline\'',
],
],
],
'debug' => false,
'explicitADmode' => 'explicitAllow',
'installToolPassword' => '$pbkdf2-sha256$25000$J4PZzLyS4haJCD.ajwNIDw$kj//RtM.xTPuXDa2/qwr/CiLIUO6MMbuI367AHEs6hU',
'passwordHashing' => [
'className' => 'TYPO3\\CMS\\Core\\Crypto\\PasswordHashing\\BcryptPasswordHash',
@@ -47,24 +45,12 @@ return [
'loginLogo' => '',
'loginLogoAlt' => '',
],
'bootstrap_package' => [
'disableCssProcessing' => '0',
'disableFontLoader' => '1',
'disableGoogleFontCaching' => '0',
'disablePageTsBackendLayouts' => '0',
'disablePageTsContentElements' => '0',
'disablePageTsRTE' => '0',
'disablePageTsTCADefaults' => '0',
'disablePageTsTCEFORM' => '0',
'disablePageTsTCEMAIN' => '0',
],
'extensionmanager' => [
'automaticInstallation' => '1',
'offlineMode' => '0',
],
'indexed_search' => [
'catdoc' => '/usr/bin/',
'debugMode' => '0',
'deleteFromIndexAfterEditing' => '1',
'disableFrontendIndexing' => '0',
'enableMetaphoneSearch' => '1',
@@ -84,21 +70,6 @@ return [
'useMysqlFulltext' => '0',
'xlhtml' => '/usr/bin/',
],
'ke_search' => [
'allowEmptySearch' => '1',
'enableExplicitAnd' => '0',
'enablePartSearch' => '1',
'finishNotification' => '0',
'loglevel' => 'ERROR',
'multiplyValueToTitle' => '1',
'notificationRecipient' => '',
'notificationSender' => 'no_reply@domain.com',
'notificationSubject' => '[KE_SEARCH INDEXER NOTIFICATION]',
'pathCatdoc' => '/usr/bin/',
'pathPdfinfo' => '/usr/bin/',
'pathPdftotext' => '/usr/bin/',
'searchWordLength' => '4',
],
'news' => [
'advancedMediaPreview' => '1',
'archiveDate' => 'date',
@@ -110,6 +81,7 @@ return [
'hidePageTreeForAdministrationModule' => '0',
'manualSorting' => '0',
'mediaPreview' => 'false',
'pageTreePluginPreview' => '1',
'prependAtCopy' => '1',
'resourceFolderImporter' => '/news_import',
'rteForTeaser' => '0',
@@ -119,6 +91,10 @@ return [
'storageUidImporter' => '1',
'tagPid' => '1',
],
'redirects' => [
'showCheckIntegrityInfoInReports' => '1',
'showCheckIntegrityInfoInReportsSeconds' => '86400',
],
'scheduler' => [
'maxLifetime' => '1440',
'showSampleTasks' => '1',
@@ -160,6 +136,10 @@ return [
'displayErrors' => 0,
'encryptionKey' => 'ef791a3dc7a18e20d575d6ebe666bcfadc3be7744f66ef14e863fcb76a8baffb5f7dea3e1d11134d5ed745bf84aa65f8',
'exceptionalErrors' => 4096,
'features' => [
'security.frontend.enforceContentSecurityPolicy' => true,
'security.frontend.reportContentSecurityPolicy' => true,
],
'phpTimeZone' => 'Europe/Vienna',
'sitename' => 'Managed Typo3',
'systemMaintainers' => [

View File

@@ -1,121 +0,0 @@
<?php
declare(strict_types=1);
namespace Cloonar\BaseDesign\Domain\Finishers;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Http\RequestFactory;
use TYPO3\CMS\Form\Domain\Finishers\Exception\FinisherException;
use Symfony\Component\Mime\Address;
class GetResponseFinisher extends \TYPO3\CMS\Form\Domain\Finishers\AbstractFinisher
{
const GET_RESPONSE_REQUEST_URL = 'https://api.getresponse.com/v3';
/**
* @var \TYPO3\CMS\Core\Http\RequestFactory
*/
protected $request;
/**
* @var array
*/
protected $defaultOptions = [
'notifyEmail' => '',
'apiKey' => '',
'campaignId' => '',
'email' => '',
'firstname' => '',
'lastname' => '',
'company' => '',
'register' => false,
];
/**
* Executes this finisher
* @see AbstractFinisher::execute()
*
* @throws FinisherException
*/
protected function executeInternal()
{
$notifyEmail = $this->parseOption('notifyEmail');
$apiKey = $this->parseOption('apiKey');
$campaignId = $this->parseOption('campaignId');
$email = $this->parseOption('email');
$firstname = $this->parseOption('firstname');
$lastname = $this->parseOption('lastname');
$company = $this->parseOption('compandy');
$register = $this->parseOption('register');
if ($register != "1") {
return;
}
if (empty($notifyEmail)) {
throw new FinisherException('The option "notifyEmail" must be set for the GetResponseFinisher.', 1681331285);
}
if (empty($apiKey)) {
throw new FinisherException('The option "apiKey" must be set for the GetResponseFinisher.', 1681331286);
}
if (empty($campaignId)) {
throw new FinisherException('The option "campaignId" must be set for the GetResponseFinisher.', 1681331287);
}
if (empty($email)) {
throw new FinisherException('The option "email" must be set for the GetResponseFinisher.', 1681331288);
}
if (empty($firstname)) {
throw new FinisherException('The option "firstname" must be set for the GetResponseFinisher.', 1681331289);
}
if (empty($lastname)) {
throw new FinisherException('The option "lastname" must be set for the GetResponseFinisher.', 1681331290);
}
$data = [
"name" => $firstname.' '.$lastname,
"email" => $email,
"campaign" => [
"campaignId" => $campaignId
]
];
$request = GeneralUtility::makeInstance(RequestFactory::class);
$response = $request->request(
self::GET_RESPONSE_REQUEST_URL.'/contacts',
'POST',
[
'headers' => [
'X-Auth-Token' => 'api-key '.$apiKey,
'Content-Type' => 'application/json'
],
'body' => json_encode($data)
]
);
if ($response->getStatusCode() == 200) {
$mail = GeneralUtility::makeInstance(MailMessage::class);
$mail
->from(new Address('noreply@cloonar.dev'))
->to(
new Address($notifyEmail)
)
->subject('Newsletter Anmeldung')
->text('Vorname: '.$firstname.'\r\nNachname: '.$lastname.'\r\nFirma: '.$company.'\r\nEmail: '.$email)
->send();
}
}
/**
* @param $string
* @return string
*/
protected static function escapeString($string)
{
$string = htmlspecialchars($string);
return (string)$string;
}
}

View File

@@ -1,7 +0,0 @@
TYPO3:
CMS:
Form:
persistenceManager:
allowSaveToExtensionPaths: true
allowedExtensionPaths:
1727355960: EXT:base_design/Resources/Private/Forms/

View File

@@ -1,98 +0,0 @@
imports:
- { resource: "EXT:rte_ckeditor/Configuration/RTE/Processing.yaml" }
- { resource: "EXT:rte_ckeditor/Configuration/RTE/Editor/Base.yaml" }
- { resource: "EXT:rte_ckeditor/Configuration/RTE/Editor/Plugins.yaml" }
editor:
externalPlugins:
bootstrappackage_address:
resource: "EXT:bootstrap_package/Resources/Public/CKEditor/Plugins/Address/plugin.min.js"
bootstrappackage_box:
resource: "EXT:bootstrap_package/Resources/Public/CKEditor/Plugins/Box/plugin.min.js"
bootstrappackage_columns:
resource: "EXT:bootstrap_package/Resources/Public/CKEditor/Plugins/Columns/plugin.min.js"
bootstrappackage_indent:
resource: "EXT:bootstrap_package/Resources/Public/CKEditor/Plugins/Indent/plugin.min.js"
bootstrappackage_table:
resource: "EXT:bootstrap_package/Resources/Public/CKEditor/Plugins/Table/plugin.min.js"
config:
contentsCss: "EXT:bootstrap_package/Resources/Public/Css/bootstrap5-rte.min.css"
stylesSet:
- { name: "Small", element: "small" }
- { name: "Table", element: "table", attributes: { 'class': 'table' } }
- { name: "Button Default", element: "a", attributes: { 'class': 'btn btn-default' } }
- { name: "Button Outline Default", element: "a", attributes: { 'class': 'btn btn-outline-default' } }
- { name: "Link Address", element: "a", attributes: { 'class': 'link-address' } }
- { name: "List Unstyled", element: "ul", attributes: { 'class': 'list-unstyled' } }
- { name: "Lowercased text", element: "span", attributes: { 'class': 'text-lowercase' } }
- { name: "Uppercased text", element: "span", attributes: { 'class': 'text-uppercase' } }
- { name: "Capitalized text", element: "span", attributes: { 'class': 'text-capitalize' } }
- { name: "H1", element: "span", attributes: { 'class': 'h1' } }
toolbarGroups:
- { name: styles, groups: [ format, styles ] }
- { name: basicstyles, groups: [ basicstyles ] }
- { name: paragraph, groups: [ list, indent, blocks, align ] }
- "/"
- { name: links, groups: [ links ] }
- { name: clipboard, groups: [ clipboard, cleanup, undo ] }
- { name: editing, groups: [ spellchecker ] }
- { name: insert, groups: [ insert ] }
- { name: tools, groups: [ table, specialchar ] }
- { name: document, groups: [ mode ] }
format_tags: "p;h1;h2;h3;h4;h5;pre"
justifyClasses:
- text-left
- text-center
- text-right
- text-justify
extraPlugins:
- justify
- autolink
- bootstrappackage_address
- bootstrappackage_box
- bootstrappackage_columns
- bootstrappackage_indent
- bootstrappackage_table
removePlugins:
- image
removeButtons:
- Anchor
- Underline
- Strike
classesAnchor:
page:
class: 'link-page'
type: 'page'
folder:
class: 'link-folder'
type: 'folder'
file:
class: 'link-file'
type: 'file'
external:
class: 'link-external'
type: 'url'
mail:
class: 'link-mail'
type: 'mail'
buttons:
link:
properties:
class:
allowedClasses: 'link-address, link-arrow, link-page, link-folder, link-file, link-external, link-mail'

View File

@@ -1,20 +0,0 @@
<?php
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
defined('TYPO3') || die();
/***************
* TypoScript: Full Package
* This includes the full setup including all configurations
*/
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile(
'base_design',
'Configuration/TypoScript',
'Cloonar Base Design'
);

View File

@@ -1,19 +0,0 @@
<?php
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
defined('TYPO3') or die('Access denied.');
$GLOBALS['TCA']['tt_content']['columns']['space_after_class']['config']['items'][6] = [
'LLL:EXT:base_design/Resources/Private/Language/locallang_ttc.xlf:space_class_zero',
'zero'
];
$GLOBALS['TCA']['tt_content']['columns']['space_before_class']['config']['items'][6] = [
'LLL:EXT:base_design/Resources/Private/Language/locallang_ttc.xlf:space_class_zero',
'zero'
];

View File

@@ -1,59 +0,0 @@
<?php
defined('TYPO3') or die('Access denied.');
// Add Content Element
if (!is_array($GLOBALS['TCA']['tt_content']['types']['hero'] ?? false)) {
$GLOBALS['TCA']['tt_content']['types']['hero'] = [];
}
// Add content element to selector list
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTcaSelectItem(
'tt_content',
'CType',
[
'label' => 'Hero',
'value' => 'hero',
'icon' => 'favicon',
'group' => 'general',
],
'hero',
'after'
);
// Assign Icon
$GLOBALS['TCA']['tt_content']['ctrl']['typeicon_classes']['hero'] = 'favicon';
// Configure element type
$GLOBALS['TCA']['tt_content']['types']['hero'] = array_replace_recursive(
$GLOBALS['TCA']['tt_content']['types']['hero'],
[
'previewRenderer' => \TYPO3\CMS\Frontend\Preview\TextpicPreviewRenderer::class,
'showitem' => '
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
--palette--;;general,
--palette--;;headers,
bodytext;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:bodytext_formlabel,
--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.images,
image,
--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
--palette--;;language,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
--palette--;;hidden,
--palette--;;access,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
categories,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
rowDescription,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
',
'columnsOverrides' => [
'bodytext' => [
'config' => [
'enableRichtext' => true,
],
],
],
]
);

View File

@@ -1,148 +0,0 @@
<?php
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
defined('TYPO3') or die('Access denied.');
// Add crop variants
$defaultCropSettings = [
'title' => 'LLL:EXT:bootstrap_package/Resources/Private/Language/Backend.xlf:option.default',
'allowedAspectRatios' => [
'16:9' => [
'title' => 'LLL:EXT:bootstrap_package/Resources/Private/Language/Backend.xlf:ratio.16_9',
'value' => 16 / 9
],
'4:3' => [
'title' => 'LLL:EXT:bootstrap_package/Resources/Private/Language/Backend.xlf:ratio.4_3',
'value' => 4 / 3
],
'1:1' => [
'title' => 'LLL:EXT:bootstrap_package/Resources/Private/Language/Backend.xlf:ratio.1_1',
'value' => 1.0
],
'NaN' => [
'title' => 'LLL:EXT:bootstrap_package/Resources/Private/Language/Backend.xlf:ratio.free',
'value' => 0.0
],
],
'selectedRatio' => 'NaN',
'cropArea' => [
'x' => 0.0,
'y' => 0.0,
'width' => 1.0,
'height' => 1.0,
]
];
$xlargeCropSettings = $defaultCropSettings;
$xlargeCropSettings['title'] = 'LLL:EXT:bootstrap_package/Resources/Private/Language/Backend.xlf:option.xlarge';
$largeCropSettings = $defaultCropSettings;
$largeCropSettings['title'] = 'LLL:EXT:bootstrap_package/Resources/Private/Language/Backend.xlf:option.large';
$mediumCropSettings = $defaultCropSettings;
$mediumCropSettings['title'] = 'LLL:EXT:bootstrap_package/Resources/Private/Language/Backend.xlf:option.medium';
$smallCropSettings = $defaultCropSettings;
$smallCropSettings['title'] = 'LLL:EXT:bootstrap_package/Resources/Private/Language/Backend.xlf:option.small';
$extrasmallCropSettings = $defaultCropSettings;
$extrasmallCropSettings['title'] = 'LLL:EXT:bootstrap_package/Resources/Private/Language/Backend.xlf:option.extrasmall';
// Content Element Background Image
$GLOBALS['TCA']['tt_content']['columns']['background_image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['default'] = $defaultCropSettings;
$GLOBALS['TCA']['tt_content']['columns']['background_image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['xlarge'] = $xlargeCropSettings;
$GLOBALS['TCA']['tt_content']['columns']['background_image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['large'] = $largeCropSettings;
$GLOBALS['TCA']['tt_content']['columns']['background_image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['medium'] = $mediumCropSettings;
$GLOBALS['TCA']['tt_content']['columns']['background_image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['small'] = $smallCropSettings;
$GLOBALS['TCA']['tt_content']['columns']['background_image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['extrasmall'] = $extrasmallCropSettings;
// Image content element
$GLOBALS['TCA']['tt_content']['types']['image']['columnsOverrides']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['default'] = $defaultCropSettings;
$GLOBALS['TCA']['tt_content']['types']['image']['columnsOverrides']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['xlarge'] = $xlargeCropSettings;
$GLOBALS['TCA']['tt_content']['types']['image']['columnsOverrides']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['large'] = $largeCropSettings;
$GLOBALS['TCA']['tt_content']['types']['image']['columnsOverrides']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['medium'] = $mediumCropSettings;
$GLOBALS['TCA']['tt_content']['types']['image']['columnsOverrides']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['small'] = $smallCropSettings;
$GLOBALS['TCA']['tt_content']['types']['image']['columnsOverrides']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['extrasmall'] = $extrasmallCropSettings;
// Textpic content element
$GLOBALS['TCA']['tt_content']['types']['textpic']['columnsOverrides']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['default'] = $defaultCropSettings;
$GLOBALS['TCA']['tt_content']['types']['textpic']['columnsOverrides']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['xlarge'] = $xlargeCropSettings;
$GLOBALS['TCA']['tt_content']['types']['textpic']['columnsOverrides']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['large'] = $largeCropSettings;
$GLOBALS['TCA']['tt_content']['types']['textpic']['columnsOverrides']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['medium'] = $mediumCropSettings;
$GLOBALS['TCA']['tt_content']['types']['textpic']['columnsOverrides']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['small'] = $smallCropSettings;
$GLOBALS['TCA']['tt_content']['types']['textpic']['columnsOverrides']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['extrasmall'] = $extrasmallCropSettings;
// Media content element
$GLOBALS['TCA']['tt_content']['types']['media']['columnsOverrides']['assets']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['default'] = $defaultCropSettings;
$GLOBALS['TCA']['tt_content']['types']['media']['columnsOverrides']['assets']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['xlarge'] = $xlargeCropSettings;
$GLOBALS['TCA']['tt_content']['types']['media']['columnsOverrides']['assets']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['large'] = $largeCropSettings;
$GLOBALS['TCA']['tt_content']['types']['media']['columnsOverrides']['assets']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['medium'] = $mediumCropSettings;
$GLOBALS['TCA']['tt_content']['types']['media']['columnsOverrides']['assets']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['small'] = $smallCropSettings;
$GLOBALS['TCA']['tt_content']['types']['media']['columnsOverrides']['assets']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['extrasmall'] = $extrasmallCropSettings;
// Textmedia content element
$GLOBALS['TCA']['tt_content']['types']['textmedia']['columnsOverrides']['assets']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['default'] = $defaultCropSettings;
$GLOBALS['TCA']['tt_content']['types']['textmedia']['columnsOverrides']['assets']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['xlarge'] = $xlargeCropSettings;
$GLOBALS['TCA']['tt_content']['types']['textmedia']['columnsOverrides']['assets']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['large'] = $largeCropSettings;
$GLOBALS['TCA']['tt_content']['types']['textmedia']['columnsOverrides']['assets']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['medium'] = $mediumCropSettings;
$GLOBALS['TCA']['tt_content']['types']['textmedia']['columnsOverrides']['assets']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['small'] = $smallCropSettings;
$GLOBALS['TCA']['tt_content']['types']['textmedia']['columnsOverrides']['assets']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['extrasmall'] = $extrasmallCropSettings;
// Card Group
$GLOBALS['TCA']['tx_bootstrappackage_card_group_item']['types']['1']['columnsOverrides']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['default'] = $defaultCropSettings;
$GLOBALS['TCA']['tx_bootstrappackage_card_group_item']['types']['1']['columnsOverrides']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['xlarge'] = $xlargeCropSettings;
$GLOBALS['TCA']['tx_bootstrappackage_card_group_item']['types']['1']['columnsOverrides']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['large'] = $largeCropSettings;
$GLOBALS['TCA']['tx_bootstrappackage_card_group_item']['types']['1']['columnsOverrides']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['medium'] = $mediumCropSettings;
$GLOBALS['TCA']['tx_bootstrappackage_card_group_item']['types']['1']['columnsOverrides']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['small'] = $smallCropSettings;
$GLOBALS['TCA']['tx_bootstrappackage_card_group_item']['types']['1']['columnsOverrides']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['extrasmall'] = $extrasmallCropSettings;
// Accordion
$GLOBALS['TCA']['tx_bootstrappackage_accordion_item']['types']['1']['columnsOverrides']['media']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['default'] = $defaultCropSettings;
$GLOBALS['TCA']['tx_bootstrappackage_accordion_item']['types']['1']['columnsOverrides']['media']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['xlarge'] = $xlargeCropSettings;
$GLOBALS['TCA']['tx_bootstrappackage_accordion_item']['types']['1']['columnsOverrides']['media']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['large'] = $largeCropSettings;
$GLOBALS['TCA']['tx_bootstrappackage_accordion_item']['types']['1']['columnsOverrides']['media']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['medium'] = $mediumCropSettings;
$GLOBALS['TCA']['tx_bootstrappackage_accordion_item']['types']['1']['columnsOverrides']['media']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['small'] = $smallCropSettings;
$GLOBALS['TCA']['tx_bootstrappackage_accordion_item']['types']['1']['columnsOverrides']['media']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['extrasmall'] = $extrasmallCropSettings;
// Carousel Background Image
$GLOBALS['TCA']['tx_bootstrappackage_carousel_item']['columns']['background_image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['default'] = $defaultCropSettings;
$GLOBALS['TCA']['tx_bootstrappackage_carousel_item']['columns']['background_image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['xlarge'] = $xlargeCropSettings;
$GLOBALS['TCA']['tx_bootstrappackage_carousel_item']['columns']['background_image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['large'] = $largeCropSettings;
$GLOBALS['TCA']['tx_bootstrappackage_carousel_item']['columns']['background_image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['medium'] = $mediumCropSettings;
$GLOBALS['TCA']['tx_bootstrappackage_carousel_item']['columns']['background_image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['small'] = $smallCropSettings;
$GLOBALS['TCA']['tx_bootstrappackage_carousel_item']['columns']['background_image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['extrasmall'] = $extrasmallCropSettings;
// Carousel Image
$GLOBALS['TCA']['tx_bootstrappackage_carousel_item']['columns']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['default'] = $defaultCropSettings;
$GLOBALS['TCA']['tx_bootstrappackage_carousel_item']['columns']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['xlarge'] = $xlargeCropSettings;
$GLOBALS['TCA']['tx_bootstrappackage_carousel_item']['columns']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['large'] = $largeCropSettings;
$GLOBALS['TCA']['tx_bootstrappackage_carousel_item']['columns']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['medium'] = $mediumCropSettings;
$GLOBALS['TCA']['tx_bootstrappackage_carousel_item']['columns']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['small'] = $smallCropSettings;
$GLOBALS['TCA']['tx_bootstrappackage_carousel_item']['columns']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['extrasmall'] = $extrasmallCropSettings;
// Tab
$GLOBALS['TCA']['tx_bootstrappackage_tab_item']['types']['1']['columnsOverrides']['media']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['default'] = $defaultCropSettings;
$GLOBALS['TCA']['tx_bootstrappackage_tab_item']['types']['1']['columnsOverrides']['media']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['xlarge'] = $xlargeCropSettings;
$GLOBALS['TCA']['tx_bootstrappackage_tab_item']['types']['1']['columnsOverrides']['media']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['large'] = $largeCropSettings;
$GLOBALS['TCA']['tx_bootstrappackage_tab_item']['types']['1']['columnsOverrides']['media']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['medium'] = $mediumCropSettings;
$GLOBALS['TCA']['tx_bootstrappackage_tab_item']['types']['1']['columnsOverrides']['media']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['small'] = $smallCropSettings;
$GLOBALS['TCA']['tx_bootstrappackage_tab_item']['types']['1']['columnsOverrides']['media']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['extrasmall'] = $extrasmallCropSettings;
// Timeline
$GLOBALS['TCA']['tx_bootstrappackage_timeline_item']['types']['1']['columnsOverrides']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['default'] = $defaultCropSettings;
$GLOBALS['TCA']['tx_bootstrappackage_timeline_item']['types']['1']['columnsOverrides']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['xlarge'] = $xlargeCropSettings;
$GLOBALS['TCA']['tx_bootstrappackage_timeline_item']['types']['1']['columnsOverrides']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['large'] = $largeCropSettings;
$GLOBALS['TCA']['tx_bootstrappackage_timeline_item']['types']['1']['columnsOverrides']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['medium'] = $mediumCropSettings;
$GLOBALS['TCA']['tx_bootstrappackage_timeline_item']['types']['1']['columnsOverrides']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['small'] = $smallCropSettings;
$GLOBALS['TCA']['tx_bootstrappackage_timeline_item']['types']['1']['columnsOverrides']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['extrasmall'] = $extrasmallCropSettings;
// Pages
foreach ([1, 3, 4] as $type) {
$GLOBALS['TCA']['pages']['types'][$type]['columnsOverrides']['thumbnail']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['default'] = $defaultCropSettings;
$GLOBALS['TCA']['pages']['types'][$type]['columnsOverrides']['thumbnail']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['xlarge'] = $xlargeCropSettings;
$GLOBALS['TCA']['pages']['types'][$type]['columnsOverrides']['thumbnail']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['large'] = $largeCropSettings;
$GLOBALS['TCA']['pages']['types'][$type]['columnsOverrides']['thumbnail']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['medium'] = $mediumCropSettings;
$GLOBALS['TCA']['pages']['types'][$type]['columnsOverrides']['thumbnail']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['small'] = $smallCropSettings;
$GLOBALS['TCA']['pages']['types'][$type]['columnsOverrides']['thumbnail']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants']['extrasmall'] = $extrasmallCropSettings;
}

View File

@@ -1,9 +0,0 @@
<?php
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
ExtensionManagementUtility::registerPageTSConfigFile(
'base_design',
'Configuration/TsConfig/Page/All.tsconfig',
'Base Design TsConfig'
);

View File

@@ -1,4 +0,0 @@
@import 'EXT:base_design/Configuration/TsConfig/Page/Mod/WebLayout/BackendLayouts.tsconfig'
@import 'EXT:base_design/Configuration/TsConfig/Page/AllowedContentElements.tsconfig'
@import 'EXT:base_design/Configuration/TsConfig/Page/News.tsconfig'
@import 'EXT:base_design/Configuration/TsConfig/Page/RTE.tsconfig'

View File

@@ -1,4 +0,0 @@
# tx_news.templateLayouts {
# 1 = Zahl des Monats Layout
# 2 = Startseite
#}

View File

@@ -1,8 +0,0 @@
TCEFORM.tt_content.CType {
# TYPO3 Core:
keepItems = text, image, textpic, form_formframework
# Sitepackage:
# Third-party extensions:
keepItems := addToList(news_newsliststicky, news_newsdetail)
keepItems := addToList(textcolumn)
}

View File

@@ -1,18 +0,0 @@
@import 'EXT:base_design/Configuration/TsConfig/Page/Mod/WebLayout/BackendLayouts/*.tsconfig'
mod.web_layout.BackendLayouts {
2_columns >
2_columns_25_75 >
2_columns_50_50 >
2_columns_offset_right >
3_columns >
# default >
# simple >
special_feature >
special_start >
subnavigation_left >
subnavigation_left_2_columns >
subnavigation_right >
subnavigation_right_2_columns >
}

View File

@@ -1,5 +0,0 @@
RTE {
default {
preset = base
}
}

View File

@@ -1,73 +0,0 @@
config {
concatenateJs = 1
compressJs = 1
compressCss = 1
concatenateCss = 1
}
page {
logo {
file = EXT:base_design/Resources/Public/Images/logo.png
fileInverted = EXT:base_design/Resources/Public/Images/logo.png
}
theme {
cookieconsent {
enable = 0
}
navigation {
type = top
}
breadcrumb {
enable = 0
}
language {
enable = 0
}
meta {
enable = 0
}
copyright {
# cat=bootstrap package: copyright/169/120; type=boolean; label=Copyright: Enable to display the copyright
enable = 1
# cat=bootstrap package: copyright/169/121; type=string; label=Copyright Text
text = © Copyright 2024 <b>Cloonar Technologies GmbH</b>
}
googleFont {
enable = 0
}
}
fluidtemplate {
templateRootPath = EXT:base_design/Resources/Private/Templates/Page/
partialRootPath = EXT:base_design/Resources/Private/Partials/Page/
layoutRootPath = EXT:base_design/Resources/Private/Layouts/Page/
}
}
plugin.tx_news {
settings {
list.media.image {
maxWidth = 200c
maxHeight = 200c
}
detail.media.image.lightbox {
enabled = 0
class = lightbox
width = 800m
height = 600m
}
}
}
plugin.tx_indexedsearch.settings.targetPid = 10
plugin.bootstrap_package {
settings {
scss {
primary = #233600
secondary = #F4F6EC
primary-yellow = #F5AE07
}
}
}

View File

@@ -1,136 +0,0 @@
page {
shortcutIcon = EXT:base_design/Resources/Public/Images/favicon.png
includeCSS {
zTheme = EXT:base_design/Resources/Public/Scss/main.scss
}
includeJSFooterlibs {
ajaxnews = EXT:base_design/Resources/Public/JavaScript/newsAjaxPagination.js
# search = EXT:base_design/Resources/Public/JavaScript/search.js
# matomo = EXT:base_design/Resources/Public/JavaScript/matomo.js
}
10 {
settings {
pageIds {
search = {$plugin.tx_indexedsearch.settings.targetPid}
}
}
}
}
config {
spamProtectEmailAddresses = 2
spamProtectEmailAddresses_atSubst = @
}
plugin {
tx_news {
view {
templateRootPaths {
0 = EXT:news/Resources/Private/Templates/
1 = EXT:base_design/Resources/Private/Templates/News
}
partialRootPaths {
0 = EXT:news/Resources/Private/Partials/
1 = EXT:base_design/Resources/Private/Partials/News
}
}
settings {
displayDummyIfNoMedia = 0
cropMaxCharacters = 500
responsiveimages {
news {
multiplier {
default = 0.5
large = 0.5
medium = 0.5
}
gutters {
default = 40
large = 40
medium = 40
}
}
variants {
default {
breakpoint = 1400
width = 1280
}
xlarge {
breakpoint = 1200
width = 1100
}
large {
breakpoint = 992
width = 920
}
medium {
breakpoint = 768
width = 680
}
small {
breakpoint = 576
width = 500
}
extrasmall {
breakpoint = unset
width = 374
}
}
}
list {
media.image {
maxWidth = 150c
maxHeight = 150c
}
paginate.templatePath = EXT:news/Resources/Private/Templates/Styles/Twb/Templates/ViewHelpers/Widget/Paginate/IndexAjax.html
}
detail.media.image.lightbox {
enabled = 1
class = lightbox
rel = lightbox-group-news
width = 800
height = 600
}
search {
paginate {
class = GeorgRinger\NumberedPagination\NumberedPagination
itemsPerPage = 10
insertAbove = 1
insertBelow = 1
maximumNumberOfLinks = 3
}
}
}
}
tx_form.settings.yamlConfigurations {
1681331285 = EXT:base_design/Configuration/Yaml/Finishers/GetResponse.yaml
}
tx_kesearch_pi1 {
view {
templateRootPaths {
9 = EXT:base_design/Resources/Private/Templates/Search/
}
partialRootPaths {
9 = EXT:base_design/Resources/Private/Partials/Search/
}
}
}
tx_kesearch_pi2.view < plugin.tx_kesearch_pi1.view
tx_kesearch_pi3.view < plugin.tx_kesearch_pi1.view
}
############################
#### CONTENT ELEMENTS ######
############################
lib.contentElement {
layoutRootPaths {
15 = EXT:base_design/Resources/Private/Layouts/ContentElements/
}
templateRootPaths {
15 = EXT:base_design/Resources/Private/Templates/ContentElements/
}
partialRootPaths {
15 = EXT:base_design/Resources/Private/Partials/ContentElements/
}
}

View File

@@ -1,141 +0,0 @@
TYPO3:
CMS:
Form:
prototypes:
standard:
formElementsDefinition:
Form:
formEditor:
editors:
900:
selectOptions:
1681331285:
value: GetResponse
label: GetResponse Finisher
propertyCollections:
finishers:
1681331285:
identifier: GetResponse
editors:
100:
identifier: header
label: GetResponse
templateName: Inspector-CollectionElementHeaderEditor
105:
identifier: 'notifyEmail'
templateName: 'Inspector-TextEditor'
label: 'Notify email'
propertyPath: 'options.notifyEmail'
propertyValidators:
10: 'NotEmpty'
110:
identifier: 'apiKey'
templateName: 'Inspector-TextEditor'
label: 'API Key'
propertyPath: 'options.apiKey'
propertyValidators:
10: 'NotEmpty'
120:
identifier: 'campaignId'
templateName: 'Inspector-TextEditor'
label: 'Campaign ID'
propertyPath: 'options.campaignId'
propertyValidators:
10: 'NotEmpty'
130:
identifier: 'email'
templateName: 'Inspector-TextEditor'
label: 'Subscribers email'
propertyPath: 'options.email'
enableFormelementSelectionButton: true
propertyValidators:
10: 'NotEmpty'
20: 'FormElementIdentifierWithinCurlyBracesInclusive'
150:
identifier: 'firstname'
templateName: 'Inspector-TextEditor'
label: 'Subscribers firstname'
propertyPath: 'options.firstname'
enableFormelementSelectionButton: true
propertyValidators:
10: 'NotEmpty'
20: 'FormElementIdentifierWithinCurlyBracesInclusive'
160:
identifier: 'lastname'
templateName: 'Inspector-TextEditor'
label: 'Subscribers lastname'
propertyPath: 'options.lastname'
enableFormelementSelectionButton: true
propertyValidators:
10: 'NotEmpty'
20: 'FormElementIdentifierWithinCurlyBracesInclusive'
170:
identifier: 'company'
templateName: 'Inspector-TextEditor'
label: 'Subscribers company'
propertyPath: 'options.company'
enableFormelementSelectionButton: true
propertyValidators:
10: 'FormElementIdentifierWithinCurlyBracesInclusive'
180:
identifier: 'register'
templateName: 'Inspector-TextEditor'
label: 'Register boolean'
propertyPath: 'options.register'
enableFormelementSelectionButton: true
propertyValidators:
10: 'FormElementIdentifierWithinCurlyBracesInclusive'
9999:
indentifier: removeButton
templateName: Inspector-RemoveElementEditor
finishersDefinition:
GetResponse:
implementationClassName: 'Cloonar\BaseDesign\Domain\Finishers\GetResponseFinisher'
formEditor:
iconIdentifier: 'form-finisher'
label: 'GetResponse Finisher'
predefinedDefaults:
options:
notifyEmail: ''
apiKey: ''
campaignId: ''
email: {}
firstname: {}
lastname: {}
company: {}
register: {}
FormEngine:
label: 'GetResponse Finisher'
elements:
notifyEmail:
label: 'Notify email'
config:
type: 'text'
apiKey:
label: 'API key'
config:
type: 'text'
campaignId:
label: 'Campaign ID'
config:
type: 'text'
email:
label: 'Subscribers email'
config:
type: 'text'
firstname:
label: 'Subscribers firstname'
config:
type: 'text'
lastname:
label: 'Subscribers lastname'
config:
type: 'text'
company:
label: 'Subscribers company'
config:
type: 'text'
register:
label: 'Register Subscriber'
config:
type: 'text'

View File

@@ -1,121 +0,0 @@
renderingOptions:
submitButtonLabel: Anmelden
type: Form
identifier: newsletter
label: Newsletter
prototypeName: standard
finishers:
-
options:
notifyEmail: dominik.polakovics@cloonar.com
apiKey: 28a7270df8f61a296a11d3e63d5b2aaf
campaignId: 4Etb5
email: '{email-1}'
firstname: '{text-1}'
lastname: '{text-2}'
company: '{text-3}'
register: '{checkbox-1}'
identifier: GetResponse
-
options:
message: 'Vielen Dank für Ihre Anmeldung !'
contentElementUid: ''
identifier: Confirmation
renderables:
-
renderingOptions:
previousButtonLabel: 'Previous step'
nextButtonLabel: 'Next step'
type: Page
identifier: page-1
label: 'Newsletter Anmeldung'
renderables:
-
properties:
text: 'Melden Sie sich zu unserem Newsletter an, um top News zu erhalten!'
type: StaticText
identifier: statictext-1
label: ''
-
type: GridRow
identifier: gridrow-1
label: 'Grid: Row'
renderables:
-
defaultValue: ''
type: Text
identifier: text-1
label: Vorname
properties:
fluidAdditionalAttributes:
placeholder: Vorname
required: required
gridColumnClassAutoConfiguration:
viewPorts:
xs:
numbersOfColumnsToUse: '12'
validators:
-
identifier: NotEmpty
-
defaultValue: ''
type: Text
identifier: text-2
label: Nachname
properties:
fluidAdditionalAttributes:
placeholder: Nachname
required: required
gridColumnClassAutoConfiguration:
viewPorts:
xs:
numbersOfColumnsToUse: '12'
validators:
-
identifier: NotEmpty
-
type: GridRow
identifier: gridrow-2
label: 'Grid: Row'
renderables:
-
defaultValue: ''
type: Email
identifier: email-1
label: E-mail
properties:
fluidAdditionalAttributes:
placeholder: vorname.nachname@domain.com
required: required
gridColumnClassAutoConfiguration:
viewPorts:
xs:
numbersOfColumnsToUse: '12'
validators:
-
identifier: EmailAddress
-
identifier: NotEmpty
-
defaultValue: ''
type: Text
identifier: text-3
label: Firma
properties:
fluidAdditionalAttributes:
placeholder: Firma
gridColumnClassAutoConfiguration:
viewPorts:
xs:
numbersOfColumnsToUse: '12'
-
type: Checkbox
identifier: checkbox-1
label: 'Ich möchte den Newsletter per E-Mail erhalten. Meine Daten werden keinesfalls an Dritte weitergegeben. Meine Einwilligung kann ich jederzeit durch eine E-Mail an newsletter@cloonar.dev widerrufen. Selbstverständlich können Sie über die gespeicherten Daten Auskunft verlangen.'
properties:
fluidAdditionalAttributes:
required: required
validators:
-
identifier: NotEmpty

View File

@@ -1,11 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
<file source-language="en" datatype="plaintext" original="EXT:base_design/Resources/Private/Language/locallang_ttc.xlf" date="2011-10-17T20:22:32Z" product-name="cms">
<header/>
<body>
<trans-unit id="space_class_zero" resname="space_class_zero">
<source>None</source>
</trans-unit>
</body>
</file>
</xliff>

View File

@@ -1,20 +0,0 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
xmlns:bk2k="http://typo3.org/ns/BK2K/BootstrapPackage/ViewHelpers" data-namespace-typo3-fluid="true">
<f:if condition="{files}">
<f:variable name="imagecols">{data.imagecols as integer}</f:variable>
<f:variable name="columnConfig">{settings.gallery.columns.{imagecols}}</f:variable>
<bk2k:data.imageVariants as="variants" variants="{variants}" multiplier="{columnConfig.multiplier}"
gutters="{columnConfig.gutters}" corrections="{columnConfig.corrections}" />
<div class="gallery-row">
<f:for each="{files}" as="file" iteration="fileIteration">
<div class="gallery-item {columnConfig.class}">
<f:render partial="Media/Type" arguments="{file: file, data: data, settings: settings, variants: variants}" />
</div>
</f:for>
</div>
</f:if>
</html>

View File

@@ -1,39 +0,0 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
xmlns:bk2k="http://typo3.org/ns/BK2K/BootstrapPackage/ViewHelpers" data-namespace-typo3-fluid="true">
<figure class="image">
<f:if condition="{file.properties.link}">
<f:then>
<f:link.typolink parameter="{file.properties.link}" title="{file.properties.title}">
<f:render partial="Media/Rendering/Image"
arguments="{file: file, data: data, settings: settings, variants: variants}" />
<f:if condition="{file.properties.title}">
<h4><f:format.nl2br>{file.properties.title}</f:format.nl2br></h4>
</f:if>
</f:link.typolink>
</f:then>
<f:else>
<f:if condition="{data.image_zoom}">
<f:then>
<bk2k:link.lightbox image="{file}" maxHeight="{settings.lightbox.image.maxHeight}"
maxWidth="{settings.lightbox.image.maxWidth}" class="{settings.lightbox.cssClass}"
rel="{settings.lightbox.prefix}-{data.uid}" title="{file.properties.title}"
caption="{file.properties.description}">
<f:render partial="Media/Rendering/Image"
arguments="{file: file, data: data, settings: settings, variants: variants}" />
</bk2k:link.lightbox>
</f:then>
<f:else>
<f:render partial="Media/Rendering/Image"
arguments="{file: file, data: data, settings: settings, variants: variants}" />
</f:else>
</f:if>
</f:else>
</f:if>
<f:if condition="{file.properties.description} && !{data.image_zoom}">
<figcaption class="caption">
<f:format.nl2br>{file.properties.description}</f:format.nl2br>
</figcaption>
</f:if>
</figure>
</html>

View File

@@ -1,31 +0,0 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers"
data-namespace-typo3-fluid="true">
<div class="mediaelement mediaelement-image">
<f:if condition="{mediaElement.link}">
<f:then>
<f:link.typolink parameter="{mediaElement.link}" target="{n:targetLink(link:mediaElement.link)}">
<f:image image="{mediaElement}" title="{mediaElement.title}" alt="{mediaElement.alternative}" loading="{settings.detail.media.image.lazyLoading}" maxWidth="{f:if(condition: settings.media.maxWidth, then: settings.media.maxWidth, else: settings.detail.media.image.maxWidth)}" maxHeight="{f:if(condition: settings.media.maxHeight, then: settings.media.maxHeight, else: settings.detail.media.image.maxHeight)}" additionalAttributes="{itemprop:'image'}" />
</f:link.typolink>
</f:then>
<f:else>
<f:if condition="{settings.detail.media.image.lightbox.enabled}">
<f:then>
<a href="{f:uri.image(image:mediaElement, width:'{settings.detail.media.image.lightbox.width}m', height:'{settings.detail.media.image.lightbox.height}m')}" title="{mediaElement.title}" class="{settings.detail.media.image.lightbox.class}" rel="{settings.detail.media.image.lightbox.rel}" data-lightbox-width="{settings.detail.media.image.lightbox.width}" data-lightbox-height="{settings.detail.media.image.lightbox.height}" data-lightbox-caption="">
<f:image image="{mediaElement}" title="{mediaElement.title}" alt="{mediaElement.alternative}" loading="{settings.detail.media.image.lazyLoading}" maxWidth="{f:if(condition: settings.media.maxWidth, then: settings.media.maxWidth, else: settings.detail.media.image.maxWidth)}" maxHeight="{f:if(condition: settings.media.maxHeight, then: settings.media.maxHeight, else: settings.detail.media.image.maxHeight)}" additionalAttributes="{itemprop:'image'}" />
</a>
</f:then>
<f:else>
<f:image image="{mediaElement}" title="{mediaElement.title}" alt="{mediaElement.alternative}" loading="{settings.detail.media.image.lazyLoading}" maxWidth="{f:if(condition: settings.media.maxWidth, then: settings.media.maxWidth, else: settings.detail.media.image.maxWidth)}" maxHeight="{f:if(condition: settings.media.maxHeight, then: settings.media.maxHeight, else: settings.detail.media.image.maxHeight)}" additionalAttributes="{itemprop:'image'}" />
</f:else>
</f:if>
</f:else>
</f:if>
</div>
<f:if condition="{mediaElement.description}">
<p class="news-img-caption">
{mediaElement.description}
</p>
</f:if>
</html>

View File

@@ -1,40 +0,0 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers"
data-namespace-typo3-fluid="true">
<f:if condition="{newsItem.alternativeTitle}">
<f:then><n:metaTag property="og:title" content="{newsItem.alternativeTitle}" /></f:then>
<f:else><n:metaTag property="og:title" content="{newsItem.title}" /></f:else>
</f:if>
<n:metaTag property="og:type" content="{settings.opengraph.type}" />
<n:metaTag property="og:url" content="" useCurrentDomain="1" />
<n:metaTag property="og:site_name" content="{settings.opengraph.site_name}" />
<f:if condition="{newsItem.media.0}">
<f:variable name="ogImagePath" value="{f:uri.image(src:'{newsItem.media.0.uid}', treatIdAsReference:1, maxWidth:'1200')}" />
<n:metaTag
property="og:image"
content="{ogImagePath}"
forceAbsoluteUrl="1" />
<n:metaTag property="og:image:width" content="{n:imageSize(property:'width', image:'{ogImagePath}')}" />
<n:metaTag property="og:image:height" content="{n:imageSize(property:'height', image:'{ogImagePath}')}" />
</f:if>
<f:if condition="{newsItem.description}">
<f:then>
<n:metaTag name="description" content="{newsItem.description}" />
<n:metaTag property="og:description" content="{newsItem.description}" />
</f:then>
<f:else>
<n:metaTag name="description" content="{newsItem.teaser -> f:format.stripTags()}" />
<n:metaTag property="og:description" content="{newsItem.teaser -> f:format.stripTags()}" />
</f:else>
</f:if>
<n:metaTag name="keywords" content="{newsItem.keywords}" />
<n:metaTag property="fb:admins" content="{settings.opengraph.admins}" />
<n:metaTag property="og:locale" content="{settings.opengraph.locale}" />
<f:if condition="{settings.opengraph.twitter.site}">
<n:metaTag name="twitter:card" content="{settings.opengraph.twitter.card}" />
<n:metaTag name="twitter:site" content="{settings.opengraph.twitter.site}" />
<n:metaTag name="twitter:creator" content="{settings.opengraph.twitter.creator}" />
</f:if>
</html>

View File

@@ -1,103 +0,0 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers"
data-namespace-typo3-fluid="true">
<!--
=====================
Partials/List/Item.html
-->
<div class="article articletype-{newsItem.type}{f:if(condition: newsItem.istopnews, then: ' topnews')}" itemscope="itemscope" itemtype="https://schema.org/Article">
<n:excludeDisplayedNews newsItem="{newsItem}"/>
<!-- header -->
<div class="header">
<h3>
<n:link newsItem="{newsItem}" settings="{settings}" title="{newsItem.title}" additionalAttributes="{itemprop:'url'}">
<span itemprop="headline">{newsItem.title}</span>
</n:link>
</h3>
</div>
<f:if condition="{newsItem.media}">
<!-- media preview element -->
<f:then>
<div class="news-img-wrap">
<n:link newsItem="{newsItem}" settings="{settings}" title="{newsItem.title}">
<f:alias map="{mediaElement: newsItem.media.0}">
<f:if condition="{mediaElement.originalResource.type} == 2">
<f:image image="{mediaElement}" title="{mediaElement.originalResource.title}" alt="{mediaElement.originalResource.alternative}" loading="{settings.list.media.image.lazyLoading}" width="{f:if(condition: settings.media.maxWidth, then: settings.media.maxWidth, else: settings.list.media.image.maxWidth)}" height="{f:if(condition: settings.media.maxHeight, then: settings.media.maxHeight, else: settings.list.media.image.maxHeight)}"/>
</f:if>
<f:if condition="{mediaElement.originalResource.type} == 4">
<f:render partial="Detail/MediaVideo" arguments="{mediaElement: mediaElement}"/>
</f:if>
<f:if condition="{mediaElement.originalResource.type} == 5">
<f:image image="{mediaElement}" title="{mediaElement.originalResource.title}" alt="{mediaElement.originalResource.alternative}" loading="{settings.list.media.image.lazyLoading}" width="{f:if(condition: settings.media.maxWidth, then: settings.media.maxWidth, else: settings.list.media.image.maxWidth)}" height="{f:if(condition: settings.media.maxHeight, then: settings.media.maxHeight, else: settings.list.media.image.maxHeight)}"/>
</f:if>
</f:alias>
</n:link>
</div>
</f:then>
<f:else>
<f:if condition="{settings.displayDummyIfNoMedia}">
<div class="news-img-wrap">
<span class="no-media-element">
<n:link newsItem="{newsItem}" settings="{settings}" title="{newsItem.title}">
<f:image src="{settings.list.media.dummyImage}" title="" alt="" loading="{settings.list.media.image.lazyLoading}" maxWidth="{f:if(condition: settings.media.maxWidth, then: settings.media.maxWidth, else: settings.list.media.image.maxWidth)}" maxHeight="{f:if(condition: settings.media.maxHeight, then: settings.media.maxHeight, else: settings.list.media.image.maxHeight)}"/>
</n:link>
</span>
</div>
</f:if>
</f:else>
</f:if>
<!-- teaser -->
<div class="teaser-text">
<n:removeMediaTags>
<f:if condition="{newsItem.teaser}">
<f:then>
<div itemprop="description">{newsItem.teaser -> f:format.crop(maxCharacters: '{settings.cropMaxCharacters}', respectWordBoundaries:'1') -> f:format.raw()}</div>
</f:then>
<f:else>
<div itemprop="description">{newsItem.bodytext -> f:format.crop(maxCharacters: '{settings.cropMaxCharacters}', respectWordBoundaries:'1') -> f:format.raw()}</div>
</f:else>
</f:if>
</n:removeMediaTags>
<n:link newsItem="{newsItem}" settings="{settings}" class="more" title="{newsItem.title}">
<f:translate key="more-link"/>
</n:link>
</div>
<!-- footer information -->
<div class="footer">
<p>
<!-- date -->
<span class="news-list-date">
<time itemprop="datePublished" datetime="{f:format.date(date:newsItem.datetime, format:'Y-m-d')}">
<f:format.date format="{f:translate(key:'dateFormat')}">{newsItem.datetime}</f:format.date>
</time>
</span>
<f:if condition="{newsItem.firstCategory}">
<!-- first category -->
<span class="news-list-category">{newsItem.firstCategory.title}</span>
</f:if>
<f:if condition="{newsItem.tags}">
<!-- Tags -->
<span class="news-list-tags" itemprop="keywords">
<f:for each="{newsItem.tags}" as="tag">
{tag.title}
</f:for>
</span>
</f:if>
<!-- author -->
<f:if condition="{newsItem.author}">
<span class="news-list-author">
<f:translate key="author" arguments="{0:newsItem.author}"/>
</span>
</f:if>
</p>
</div>
</div>
</html>

View File

@@ -1,57 +0,0 @@
<ul class="f3-widget-paginator">
<f:if condition="{pagination.previousPageNumber} && {pagination.previousPageNumber} >= {pagination.firstPageNumber}">
<f:then>
<f:comment>
<li class="first">
<a href="{f:uri.action(action:actionName, arguments:{currentPage: 1},addQueryString:1)}" title="{f:translate(key:'pagination.first')}">
<i class="material-icons">first_page</i>
</a>
</li>
</f:comment>
<li class="previous">
<a href="{f:uri.action(action:actionName, arguments:{currentPage: pagination.previousPageNumber},addQueryString:1)}" title="{f:translate(key:'pagination.previous')}">
{f:translate(key:'widget.pagination.previous', extensionName: 'fluid')}
</a>
</li>
</f:then>
<f:else>
<f:comment>
<li class="disabled"><span><i class="material-icons">first_page</i></span></li>
<li class="disabled"><span>{f:translate(key:'widget.pagination.previous', extensionName: 'fluid')}</span></li>
</f:comment>
</f:else>
</f:if>
<f:if condition="{pagination.hasLessPages}">
<li><span></span></li>
</f:if>
<f:for each="{pagination.allPageNumbers}" as="page">
<li class="{f:if(condition: '{page} == {paginator.currentPageNumber}', then:'current')}">
<a href="{f:uri.action(action:actionName, arguments:{currentPage: page},addQueryString:1)}">{page}</a>
</li>
</f:for>
<f:if condition="{pagination.hasMorePages}">
<li><span></span></li>
</f:if>
<f:if condition="{pagination.nextPageNumber} && {pagination.nextPageNumber} <= {pagination.lastPageNumber}">
<f:then>
<li class="next">
<a href="{f:uri.action(action:actionName, arguments:{currentPage: pagination.nextPageNumber},addQueryString:1)}" title="{f:translate(key:'pagination.next')}">
{f:translate(key:'widget.pagination.next', extensionName: 'fluid')}
</a>
</li>
<f:comment>
<li class="last">
<a href="{f:uri.action(action:actionName, arguments:{currentPage: pagination.lastPageNumber},addQueryString:1)}" title="{f:translate(key:'pagination.last')}">
last
</a>
</li>
</f:comment>
</f:then>
<f:else>
<f:comment>
<li class="disabled"><span>{f:translate(key:'widget.pagination.next', extensionName: 'fluid')}</span></li>
<li class="disabled"><span>last page</span></li>
</f:comment>
</f:else>
</f:if>
</ul>

View File

@@ -1,86 +0,0 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers"
data-namespace-typo3-fluid="true">
<!--
=====================
Partials/List/Item.html
-->
<div class="article articletype-{newsItem.type}{f:if(condition: newsItem.istopnews, then: ' topnews')}" itemscope="itemscope" itemtype="https://schema.org/Article">
<n:excludeDisplayedNews newsItem="{newsItem}"/>
<!-- header -->
<div class="header">
<h3>
<span itemprop="headline">{newsItem.title}</span>
</h3>
</div>
<f:if condition="{newsItem.media}">
<!-- media preview element -->
<f:then>
<div class="news-img-wrap">
<f:alias map="{mediaElement: newsItem.media.0}">
<f:if condition="{mediaElement.originalResource.type} == 2">
<f:image image="{mediaElement}" title="{mediaElement.originalResource.title}" alt="{mediaElement.originalResource.alternative}" loading="{settings.list.media.image.lazyLoading}" width="{f:if(condition: settings.media.maxWidth, then: settings.media.maxWidth, else: settings.list.media.image.maxWidth)}" height="{f:if(condition: settings.media.maxHeight, then: settings.media.maxHeight, else: settings.list.media.image.maxHeight)}"/>
</f:if>
<f:if condition="{mediaElement.originalResource.type} == 4">
<f:render partial="Detail/MediaVideo" arguments="{mediaElement: mediaElement}"/>
</f:if>
<f:if condition="{mediaElement.originalResource.type} == 5">
<f:image image="{mediaElement}" title="{mediaElement.originalResource.title}" alt="{mediaElement.originalResource.alternative}" loading="{settings.list.media.image.lazyLoading}" width="{f:if(condition: settings.media.maxWidth, then: settings.media.maxWidth, else: settings.list.media.image.maxWidth)}" height="{f:if(condition: settings.media.maxHeight, then: settings.media.maxHeight, else: settings.list.media.image.maxHeight)}"/>
</f:if>
</f:alias>
</div>
</f:then>
<f:else>
<f:if condition="{settings.displayDummyIfNoMedia}">
<div class="news-img-wrap">
<span class="no-media-element">
<f:image src="{settings.list.media.dummyImage}" title="" alt="" loading="{settings.list.media.image.lazyLoading}" maxWidth="{f:if(condition: settings.media.maxWidth, then: settings.media.maxWidth, else: settings.list.media.image.maxWidth)}" maxHeight="{f:if(condition: settings.media.maxHeight, then: settings.media.maxHeight, else: settings.list.media.image.maxHeight)}"/>
</span>
</div>
</f:if>
</f:else>
</f:if>
<!-- teaser -->
<div class="teaser-text">
<n:removeMediaTags>
<div itemprop="description">{newsItem.bodytext -> f:format.html()}</div>
</n:removeMediaTags>
</div>
<!-- footer information -->
<div class="footer">
<p>
<!-- date -->
<span class="news-list-date">
<time itemprop="datePublished" datetime="{f:format.date(date:newsItem.datetime, format:'Y-m-d')}">
<f:format.date format="{f:translate(key:'dateFormat')}">{newsItem.datetime}</f:format.date>
</time>
</span>
<f:if condition="{newsItem.firstCategory}">
<!-- first category -->
<span class="news-list-category">{newsItem.firstCategory.title}</span>
</f:if>
<f:if condition="{newsItem.tags}">
<!-- Tags -->
<span class="news-list-tags" itemprop="keywords">
<f:for each="{newsItem.tags}" as="tag">
{tag.title}
</f:for>
</span>
</f:if>
<!-- author -->
<f:if condition="{newsItem.author}">
<span class="news-list-author">
<f:translate key="author" arguments="{0:newsItem.author}"/>
</span>
</f:if>
</p>
</div>
</div>
</html>

View File

@@ -1,19 +0,0 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:bk2k="http://typo3.org/ns/BK2K/BootstrapPackage/ViewHelpers" data-namespace-typo3-fluid="true">
<div class="search-wrap">
<form
method="get"
id="form_kesearch_searchfield"
name="form_kesearch_searchfield"
action="{f:uri.typolink(parameter: settings.pageIds.search)}"
class="search-wrap"
>
<div class="input-group">
<input type="text" id="header-search-input" name="tx_kesearch_pi1[sword]" class="form-control" />
<div class="input-group-append">
<button class="btn btn-primary" type="submit">
<bk2k:inlineSvg src="EXT:bootstrap_package/Resources/Public/Images/Icons/Glyphicons/search.svg" height="20" width="20" />
</button>
</div>
</div>
</form>
</div>

View File

@@ -1,74 +0,0 @@
<f:comment>
<!--
=====================
Base Partials/Search/ResultRow.html
-->
</f:comment>
<div class="result-list-item result-list-item-type-{resultrow.type}">
<span class="clearer">&nbsp;</span>
<div class="add-info">
<f:if condition="{conf.showResultUrl}">
<i>{f:translate(key: 'LLL:EXT:ke_search/Resources/Private/Language/locallang_searchbox.xlf:label_resulturl')}:</i>
<f:format.raw>{resultrow.url}</f:format.raw><br />
</f:if>
<f:if condition="{conf.showTags}">
<i>{f:translate(key: 'LLL:EXT:ke_search/Resources/Private/Language/locallang_searchbox.xlf:label_tags')}:</i>
{resultrow.tags}<br />
</f:if>
</div>
<span class="teaser_icon">
<a href="{resultrow.url}">
<f:render section="typeIconOrPreviewImage"
arguments="{icon: resultrow.typeIconPath, filePreviewId: resultrow.filePreviewId, treatIdAsReference:resultrow.treatIdAsReference, iconConf: conf.showTypeIcon}" />
</a>
</span>
<h3 class="result-title">
<f:if condition="{conf.resultsNumeration}">
<span class="result-number">{resultrow.number}.</span>
</f:if>
<f:format.raw>
<f:format.crop maxCharacters="65" append="...">
{resultrow.title}
</f:format.crop>
</f:format.raw>
</h3>
<f:if condition="{resultrow.type} == 'cal'">
<f:then>
<f:comment>
<!-- Special cal date rendering -->
</f:comment>
<f:render partial="CalDate" arguments="{resultrow: resultrow}" />
<br />
</f:then>
<f:else>
<f:comment>
<!-- Default date rendering -->
</f:comment>
<f:if condition="{conf.showDate}">
<div class="result-date">
<!-- <f:format.date>{resultrow.date_timestamp}</f:format.date> -->
01.01.2023
</div>
</f:if>
</f:else>
</f:if>
<div class="result-teaser">
<f:format.raw>{resultrow.teaser}</f:format.raw>
</div>
<span class="clearer">&nbsp;</span>
</div>
<f:section name="typeIconOrPreviewImage">
<f:if condition="{iconConf} && !{filePreviewId}">
<f:then>
</f:then>
<f:else>
<f:if condition="{filePreviewId}">
<f:image src="{filePreviewId}" treatIdAsReference="{treatIdAsReference}" width="100m" height="100c" />
</f:if>
</f:else>
</f:if>
</f:section>

View File

@@ -1,29 +0,0 @@
<f:comment>
<!--
=====================
Partials/ResultRows.html
-->
</f:comment>
<div class="clearer"> </div>
<f:render partial="Sorting" arguments="{conf: conf, numberofresults: numberofresults, sortingLinks: sortingLinks}" />
<f:if condition="{conf.pagebrowserOnTop}">
<div id="kesearch_pagebrowser_top">
<f:render partial="PageBrowser"
arguments="{conf: conf, numberofresults:numberofresults, pagebrowser:pagebrowser}" />
</div>
</f:if>
<div id="kesearch_results">
<f:for each="{resultrows}" as="resultrow">
<f:render partial="ResultRow" arguments="{conf: conf, resultrow: resultrow}" />
</f:for>
</div>
<f:if condition="{conf.pagebrowserAtBottom}">
<div id="kesearch_pagebrowser_bottom">
<f:render partial="PageBrowser"
arguments="{conf: conf, numberofresults:numberofresults, pagination:pagination}" />
</div>
</f:if>
<f:if condition="{conf.showQueryTime}">
<div id="kesearch_query_time">{queryTimeText}</div>
</f:if>

View File

@@ -1,17 +0,0 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<section class="section footer-section footer-section-content">
<div class="container">
<div class="section-row">
<div class="section-column footer-section-content-column footer-section-content-column-left">
<f:cObject typoscriptObjectPath="lib.dynamicContent" data="{pageUid: '{data.uid}', colPos: '10', slide: '-1'}" />
</div>
<div class="section-column footer-section-content-column footer-section-content-column-middle">
<f:cObject typoscriptObjectPath="lib.dynamicContent" data="{pageUid: '{data.uid}', colPos: '11', slide: '-1'}" />
</div>
<div class="section-column footer-section-content-column footer-section-content-column-right">
<f:cObject typoscriptObjectPath="lib.dynamicContent" data="{pageUid: '{data.uid}', colPos: '12', slide: '-1'}" />
</div>
</div>
</div>
</section>
</html>

View File

@@ -1,203 +0,0 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers"
xmlns:rx="http://typo3.org/ns/Reelworx/RxShariff/ViewHelper"
data-namespace-typo3-fluid="true">
<f:layout name="Detail" />
<!--
=====================
News/Detail.html
-->
<f:section name="content">
<f:if condition="{newsItem}">
<f:then>
<n:format.nothing>
<n:excludeDisplayedNews newsItem="{newsItem}" />
<f:if condition="{settings.detail.showMetaTags}">
<f:render partial="Detail/Opengraph" arguments="{newsItem: newsItem, settings:settings}" />
</f:if>
<f:if condition="{newsItem.alternativeTitle}">
<f:then>
<n:titleTag>
<f:format.htmlentitiesDecode>{newsItem.alternativeTitle}</f:format.htmlentitiesDecode>
</n:titleTag>
</f:then>
<f:else>
<n:titleTag>
<f:format.htmlentitiesDecode>{newsItem.title}</f:format.htmlentitiesDecode>
</n:titleTag>
</f:else>
</f:if>
</n:format.nothing>
<f:if condition="{settings.detail.showPrevNext}">
<n:simplePrevNext pidList="{newsItem.pid}" news="{newsItem}" as="paginated" sortField="datetime">
<f:if condition="{paginated}">
<ul class="pager">
<f:if condition="{paginated.prev}">
<li class="previous">
<n:link newsItem="{paginated.prev}" settings="{settings}">
<span aria-hidden="true">&larr; </span>{paginated.prev.title}
</n:link>
</li>
</f:if>
<f:if condition="{paginated.next}">
<li class="next">
<n:link newsItem="{paginated.next}" settings="{settings}" class="next">
{paginated.next.title} <span aria-hidden="true"> &rarr;</span>
</n:link>
</li>
</f:if>
</ul>
</f:if>
</n:simplePrevNext>
</f:if>
<div class="header">
<h1 itemprop="headline">{newsItem.title}</h1>
</div>
<div class="footer">
<p>
<!-- date -->
<span class="news-list-date">
<time itemprop="datePublished" datetime="{f:format.date(date:newsItem.datetime, format:'Y-m-d')}">
<f:format.date format="{f:translate(key:'dateFormat')}">{newsItem.datetime}</f:format.date>
</time>
</span>
<f:if condition="{newsItem.categories}">
<f:render partial="Category/Items" arguments="{categories:newsItem.categories, settings:settings}" />
</f:if>
<f:if condition="{newsItem.tags}">
<!-- Tags -->
<span class="news-list-tags" itemprop="keywords">
<f:for each="{newsItem.tags}" as="tag">
{tag.title}
</f:for>
</span>
</f:if>
<f:if condition="{newsItem.author}">
<!-- author -->
<span class="news-list-author" itemprop="author" itemscope="itemscope" itemtype="http://schema.org/Person">
<f:translate key="author_simple" /> <span itemprop="name">{newsItem.author}</span>
</span>
</f:if>
</p>
</div>
<n:renderMedia news="{newsItem}" imgClass="img-responsive" videoClass="video-wrapper" audioClass="audio-wrapper">
<f:if condition="{newsItem.contentElements}">
<!-- content elements -->
<f:cObject typoscriptObjectPath="lib.tx_news.contentElementRendering">{newsItem.contentElementIdList}</f:cObject>
</f:if>
<f:if condition="{newsItem.falMedia -> f:count()} > 1">
<f:render partial="Detail/MediaContainer" arguments="{media: newsItem.mediaNonPreviews, settings:settings}" />
</f:if>
<!-- main text -->
<div class="news-text-wrap" itemprop="articleBody">
<f:format.html>{newsItem.bodytext}</f:format.html>
</div>
</n:renderMedia>
<f:if condition="{settings.backPid}">
<!-- Link Back -->
<div class="news-backlink-wrap">
<f:link.page pageUid="{settings.backPid}">
<f:translate key="back-link" />
</f:link.page>
</div>
</f:if>
<f:if condition="{settings.detail.showSocialShareButtons}">
<f:comment>
Care about the privacy of your readers?
Checkout https://typo3.org/extensions/repository/view/rx_shariff
and it will be used automatically!
</f:comment>
<n:extensionLoaded extensionKey="rx_shariff">
<f:render partial="Detail/Shariff" />
</n:extensionLoaded>
</f:if>
<!-- related things -->
<div class="news-related-wrap">
<f:comment>
Various options exist to fetch different related information:
- {newsItem.allRelatedSorted}: all related news, related und related from, sorted by date
- {newsItem.related}: all related
- {newsItem.relatedSorted}: all related, sorted by date
- {newsItem.relatedFrom}: all related from
- {newsItem.relatedFromSortedByForeign}: all related from sorted by foreign sorting
- {newsItem.relatedFromSorted}: all related from, sorted by date
</f:comment>
<f:if condition="{newsItem.allRelatedSorted}">
<!-- Related news records -->
<div class="news-related news-related-news">
<h4>
<f:translate key="related-news" />
</h4>
<ul>
<f:for each="{newsItem.allRelatedSorted}" as="related">
<li>
<span class="news-related-news-date"><f:format.date format="{f:translate(key:'dateFormat')}">{related.datetime}</f:format.date></span>
<n:link newsItem="{related}" settings="{settings}" title="{related.title}">
{related.title}
</n:link>
</li>
</f:for>
</ul>
</div>
</f:if>
<f:if condition="{newsItem.relatedFiles}">
<!-- related files -->
<div class="news-related news-related-files">
<h4>
<f:translate key="related-files" />
</h4>
<ul>
<f:for each="{newsItem.relatedFiles}" as="relatedFile">
<li>
<span class="news-related-files-link">
<a href="{relatedFile.originalResource.publicUrl -> f:format.htmlspecialchars()}" target="_blank">
{f:if(condition:relatedFile.originalResource.title, then:relatedFile.originalResource.title, else:relatedFile.originalResource.name)}
</a>
</span>
<span class="news-related-files-size">
{relatedFile.originalResource.size -> f:format.bytes()}
</span>
</li>
</f:for>
</ul>
</div>
</f:if>
<f:if condition="{newsItem.relatedLinks}">
<!-- Related links -->
<div class="news-related news-related-links">
<h4>
<f:translate key="related-links" />
</h4>
<ul>
<f:for each="{newsItem.relatedLinks}" as="relatedLink">
<li>
<f:link.typolink parameter="{relatedLink.uri}" title="{relatedLink.title}" target="{n:targetLink(link:relatedLink.uri)}">{f:if(condition: relatedLink.title, then: relatedLink.title, else: relatedLink.uri)}</f:link.typolink>
<f:if condition="{relatedLink.description}"><span>{relatedLink.description}</span></f:if>
</li>
</f:for>
</ul>
</div>
</f:if>
</div>
</f:then>
<f:else>
</f:else>
</f:if>
</f:section>
</html>

View File

@@ -1,52 +0,0 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers"
data-namespace-typo3-fluid="true">
<f:layout name="General" />
<!--
=====================
Templates/News/List.html
-->
<f:section name="content">
<!--TYPO3SEARCH_end-->
<f:if condition="{news}">
<f:then>
<div class="news-list-view news-list-{settings.templateLayout}" id="news-container-{contentObjectData.uid}">
<f:if condition="{settings.hidePagination}">
<f:then>
<f:for each="{news}" as="newsItem" iteration="iterator">
<f:render partial="List/Item" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" />
</f:for>
</f:then>
<f:else>
<f:if condition="{settings.list.paginate.insertAbove}">
<f:render partial="List/Pagination" arguments="{pagination: pagination.pagination, paginator: pagination.paginator}" />
</f:if>
<f:if condition="{settings.templateLayout} == 1">
<f:then>
<f:for each="{pagination.paginator.paginatedItems}" as="newsItem" iteration="iterator">
<f:render partial="List/ZahlItem" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" />
</f:for>
</f:then>
<f:else>
<f:for each="{pagination.paginator.paginatedItems}" as="newsItem" iteration="iterator">
<f:render partial="List/Item" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" />
</f:for>
</f:else>
</f:if>
<f:if condition="{settings.list.paginate.insertBelow}">
<f:render partial="List/Pagination" arguments="{pagination: pagination.pagination, paginator: pagination.paginator}" />
</f:if>
</f:else>
</f:if>
</div>
</f:then>
<f:else>
<div class="no-news-found">
<f:translate key="list_nonewsfound" />
</div>
</f:else>
</f:if>
<!--TYPO3SEARCH_begin-->
</f:section>
</html>

View File

@@ -1,24 +0,0 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:layout name="Default" />
<f:section name="Border">
<f:cObject typoscriptObjectPath="lib.dynamicContent" data="{pageUid: '{data.uid}', colPos: '3', slide: '{theme.pagelayout.{pagelayout}.colPos.3.slide}'}" />
</f:section>
<f:section name="Main">
<f:cObject typoscriptObjectPath="lib.dynamicContent" data="{pageUid: '{data.uid}', colPos: '8', slide: '{theme.pagelayout.{pagelayout}.colPos.8.slide}'}" />
<div class="section section-default">
<f:cObject typoscriptObjectPath="lib.dynamicContent" data="{pageUid: '{data.uid}', colPos: '0', slide: '{theme.pagelayout.{pagelayout}.colPos.0.slide}'}" />
</div>
<f:cObject typoscriptObjectPath="lib.dynamicContent" data="{pageUid: '{data.uid}', colPos: '9', slide: '{theme.pagelayout.{pagelayout}.colPos.9.slide}'}" />
</f:section>
<f:section name="Footer">
<f:render partial="Structure/FooterContent" arguments="{_all}" />
</f:section>
</html>

View File

@@ -1,83 +0,0 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
xmlns:kesearch="http://typo3.org/ns/Tpwd/KeSearch/ViewHelpers" data-namespace-typo3-fluid="true">
<f:layout name="General" />
<f:comment>
<!--
=====================
Templates/SearchForm.html
-->
</f:comment>
<f:section name="content">
<form method="get" id="form_kesearch_pi1" name="form_kesearch_pi1" action="{f:uri.page(pageUid: targetpage)}">
<f:comment>
<!-- Replace the URL with the speaking URL -->
</f:comment>
<f:if condition="{isEmptySearch} == FALSE ">
<f:if condition="{conf.searchWordParameter} == 'tx_kesearch_pi1[sword]'">
<f:format.raw>
<script>history.replaceState(null, '', '</f:format.raw><kesearch:link keepPiVars="1" uriOnly="1" /><f:format.raw>');</script>
</f:format.raw>
</f:if>
</f:if>
<fieldset class="kesearch_searchbox">
<f:if condition="{lparam}">
<input type="hidden" name="L" value="{lparam}" />
</f:if>
<f:if condition="{mpparam}">
<input type="hidden" name="MP" value="{mpparam}" />
</f:if>
<f:if condition="{typeparam}">
<input type="hidden" name="type" value="{typeparam}" />
</f:if>
<div class="kesearchbox">
<div class="inputwrapper">
<div class="input">
<input type="search" id="ke_search_sword" name="tx_kesearch_pi1[sword]"
value="{searchword -> f:format.raw()}" placeholder="{searchwordDefault}"
{f:if(condition: '{extConf.allowEmptySearch} == 0' , then: 'required' )}
minlength="{extConf.searchWordLength}" />
</div>
<div class="reset hidden"
title="{f:translate(key: 'LLL:EXT:ke_search/Resources/Private/Language/locallang_searchbox.xlf:reset_button')}">
<svg fill="currentColor" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 512 512">
<path
d="M437.5 386.6L306.9 256l130.6-130.6c14.1-14.1 14.1-36.8 0-50.9-14.1-14.1-36.8-14.1-50.9 0L256 205.1 125.4 74.5c-14.1-14.1-36.8-14.1-50.9 0-14.1 14.1-14.1 36.8 0 50.9L205.1 256 74.5 386.6c-14.1 14.1-14.1 36.8 0 50.9 14.1 14.1 36.8 14.1 50.9 0L256 306.9l130.6 130.6c14.1 14.1 36.8 14.1 50.9 0 14-14.1 14-36.9 0-50.9z" />
</svg>
<div class="spacer"></div>
</div>
</div>
<button class="submit" type="submit"
title="{f:translate(key: 'LLL:EXT:ke_search/Resources/Private/Language/locallang_searchbox.xlf:submit')}">
<svg fill="currentColor" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 512 512">
<path
d="M344.5 298c15-23.6 23.8-51.6 23.8-81.7 0-84.1-68.1-152.3-152.1-152.3C132.1 64 64 132.2 64 216.3c0 84.1 68.1 152.3 152.1 152.3 30.5 0 58.9-9 82.7-24.4l6.9-4.8L414.3 448l33.7-34.3-108.5-108.6 5-7.1zm-43.1-166.8c22.7 22.7 35.2 52.9 35.2 85s-12.5 62.3-35.2 85c-22.7 22.7-52.9 35.2-85 35.2s-62.3-12.5-85-35.2c-22.7-22.7-35.2-52.9-35.2-85s12.5-62.3 35.2-85c22.7-22.7 52.9-35.2 85-35.2s62.3 12.5 85 35.2z" />
</svg>
</button>
<f:if condition="{page}">
<input id="kesearchpagenumber" type="hidden" name="tx_kesearch_pi1[page]" value="{page}" />
</f:if>
<input id="resetFilters" type="hidden" name="tx_kesearch_pi1[resetFilters]" value="0" />
<f:if condition="{sortByField}">
<input id="sortByField" type="hidden" name="tx_kesearch_pi1[sortByField]" value="{sortByField}" />
</f:if>
<f:if condition="{sortByDir}">
<input id="sortByDir" type="hidden" name="tx_kesearch_pi1[sortByDir]" value="{sortByDir}" />
</f:if>
<f:if condition="{filters}">
<div id="kesearch_filters">
<f:render partial="Filters"
arguments="{conf: conf, numberofresults: numberofresults, resultrows: resultrows, filters: filters}" />
</div>
</f:if>
</fieldset>
</form>
</f:section>
</html>

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 299 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 322 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 269 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 305 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 326 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 792 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -1,11 +0,0 @@
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="https://matomo.cloonar.com/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '6']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();

View File

@@ -1,7 +0,0 @@
(function($) {
console.log("test");
$('#meta_menu').click(function (e) {
console.log("test");
$('#meta_menu').toggleClass('opened');
});
}(jQuery || $));

View File

@@ -1,31 +0,0 @@
document.querySelectorAll('.f3-widget-paginator a').forEach(function (el) {
el.addEventListener('click', newsAjaxHandler);
});
function newsAjaxHandler(e) {
var ajaxUrl = e.target.getAttribute('href');
if (ajaxUrl !== undefined && ajaxUrl !== '') {
e.preventDefault();
history.pushState(null, '', ajaxUrl.split('?')[0]);
var container = e.target.closest('.frame').getAttribute('id');
document.getElementById(container).classList.add('loading');
var xhr = new XMLHttpRequest();
xhr.open('GET', ajaxUrl, true);
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
var parser = new DOMParser();
var result = parser.parseFromString(xhr.responseText, 'text/html');
var ajaxDom = result.getElementById(container);
ajaxDom.querySelectorAll('.f3-widget-paginator a').forEach(function (el) {
el.addEventListener('click', newsAjaxHandler);
});
document.getElementById(container).replaceWith(ajaxDom);
window.scrollTo({
top: document.getElementById(container).offsetTop - 111,
behavior: 'smooth'
});
}
};
xhr.send();
}
}

View File

@@ -1,15 +0,0 @@
const searchButton = document.querySelector(".search-wrap button");
searchButton.addEventListener("click", function (e) {
if(window.innerWidth < 992) return;
e.preventDefault();
if (!searchButton.parentElement.parentElement.parentElement.classList.contains('opened')) {
searchButton.parentElement.parentElement.parentElement.classList.add('opened');
searchButton.parentElement.previousElementSibling.focus();
} else {
if (searchButton.parentElement.previousElementSibling.value != '') {
searchButton.closest('form').submit();
} else {
searchButton.parentElement.parentElement.parentElement.classList.remove('opened');
}
}
});

View File

@@ -1,3 +0,0 @@
body {
font-family: 'sans-serif'
}

View File

@@ -1,21 +0,0 @@
:root {
--frame-outer-spacing-variant-zero: 0;
--frame-outer-spacing-variant-none: 2rem;
--frame-outer-spacing-variant-extra-large: 10rem;
}
.frame-space-after-none {
--frame-outer-spacing-after: var(--frame-outer-spacing-variant-none) !important;
}
.frame-space-before-none {
--frame-outer-spacing-before: var(--frame-outer-spacing-variant-none) !important;
}
.frame-space-after-zero {
--frame-outer-spacing-after: var(--frame-outer-spacing-variant-zero);
}
.frame-space-before-zero {
--frame-outer-spacing-before: var(--frame-outer-spacing-variant-zero);
}

View File

@@ -1,35 +0,0 @@
h1, h2, h3, h4, h5, h6 {
font-weight: 500;
color: $primary;
}
.frame-background-primary {
color: $white;
.btn-primary {
background: $white;
color: $primary;
}
h1, h2, h3, h4, h5, h6 {
color: $white;
}
}
.frame-background-light {
}
a {
text-decoration: none;
}
.btn {
border-radius: 0;
border: none;
box-shadow: none;
}
.btn-primary {
color: $white;
}

View File

@@ -1,6 +0,0 @@
@import "fonts";
@import "footer";
@import "form";
@import "frame";
@import "search";
@import "text";

View File

@@ -1,22 +0,0 @@
@import "../../../../../vendor/bk2k/bootstrap-package/Resources/Public/Scss/bootstrap5/theme.scss";
@import "Layout/layout";
@import "Elements/elements";
.frame {
&.loading {
position: relative;
&:before {
content: ' ';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 1;
background: rgba(255, 255, 255, .5);
}
}
}

View File

@@ -1,32 +0,0 @@
{
"name": "cloonar-typo3/base-design",
"authors": [
{
"name": "Dominik Polakovics",
"role": "Developer",
"homepage": "https://www.cloonar.com"
}
],
"type": "typo3-cms-extension",
"description": "Template for Typo3 extending bootstrap package",
"homepage": "https://www.cloonar.com",
"require": {
"bk2k/bootstrap-package": "^15.0"
},
"autoload": {
"psr-4": {
"Cloonar\\BaseDesign\\": "Classes"
}
},
"extra": {
"typo3/cms": {
"extension-key": "base_design"
}
},
"config": {
"allow-plugins": {
"typo3/cms-composer-installers": true,
"typo3/class-alias-loader": true
}
}
}

View File

@@ -1,20 +0,0 @@
<?php
$EM_CONF[$_EXTKEY] = array(
'title' => 'Base Design Package',
'description' => 'Base Design Customization.',
'category' => 'templates',
'autoload' => [
'psr-4' => [
'Cloonar\\BaseDesign\\' => 'Classes'
],
],
'state' => 'stable',
'uploadfolder' => true,
'createDirs' => '',
'clearCacheOnLoad' => 1,
'author' => 'Dominik Polakovics',
'author_email' => 'dominik.polakovics@cloonar.com',
'author_company' => 'private',
'version' => '1.0.0',
);

View File

@@ -1,41 +0,0 @@
<?php
if (!defined('TYPO3')) {
die('Access denied.');
}
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
ExtensionManagementUtility::addTypoScriptSetup(
'module.tx_form {
settings {
yamlConfigurations {
1681331285 = EXT:base_design/Configuration/Yaml/Finishers/GetResponse.yaml
}
}
}'
);
$GLOBALS['TYPO3_CONF_VARS']['RTE']['Presets']['base'] = 'EXT:base_design/Configuration/RTE/Default.yaml';
ExtensionManagementUtility::addPageTSConfig(
"@import 'EXT:base_design/Configuration/TsConfig/All.tsconfig'"
);
if (\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('form')) {
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScriptSetup(trim('
module.tx_form {
settings {
yamlConfigurations {
1727355960 = EXT:base_design/Configuration/Form/Setup.yaml
}
}
}
plugin.tx_form {
settings {
yamlConfigurations {
1727355960 = EXT:base_design/Configuration/Form/Setup.yaml
}
}
}
'));
}

View File

@@ -0,0 +1,70 @@
# EditorConfig is awesome: http://EditorConfig.org
# top-most EditorConfig file
root = true
# Unix-style newlines with a newline ending every file
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
# CSS-Files
[*.css]
indent_style = space
indent_size = 4
# HTML-Files
[*.html]
indent_style = space
indent_size = 4
# TMPL-Files
[*.tmpl]
indent_style = space
indent_size = 4
# JS-Files
[*.js]
indent_style = space
indent_size = 4
# PHP-Files
[*.php]
indent_style = space
indent_size = 4
# MD-Files
[*.md]
indent_style = space
indent_size = 4
# ReST-Files
[*.rst]
indent_style = space
indent_size = 3
# TypoScript
[*.typoscript]
indent_style = space
indent_size = 4
# YML-Files
[{*.yml,*.yaml}]
indent_style = space
indent_size = 2
# package.json
[package.json]
indent_style = space
indent_size = 2
# composer.json
[composer.json]
indent_style = space
indent_size = 4
# phpstan
[*.neon]
indent_style = tab

View File

@@ -0,0 +1,2 @@
Order deny,allow
Deny from all

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1,2 @@
Order deny,allow
Deny from all

View File

@@ -0,0 +1,61 @@
<?php
declare(strict_types=1);
use TYPO3\CMS\Core\Security\ContentSecurityPolicy\Directive;
use TYPO3\CMS\Core\Security\ContentSecurityPolicy\Mutation;
use TYPO3\CMS\Core\Security\ContentSecurityPolicy\MutationCollection;
use TYPO3\CMS\Core\Security\ContentSecurityPolicy\MutationMode;
use TYPO3\CMS\Core\Security\ContentSecurityPolicy\Scope;
use TYPO3\CMS\Core\Security\ContentSecurityPolicy\SourceKeyword;
use TYPO3\CMS\Core\Security\ContentSecurityPolicy\SourceScheme;
use TYPO3\CMS\Core\Security\ContentSecurityPolicy\UriValue;
use TYPO3\CMS\Core\Type\Map;
return Map::fromEntries([
// Provide declarations for the backend
Scope::backend(),
// NOTICE: When using `MutationMode::Set` existing declarations will be overridden
new MutationCollection(
// Results in `default-src 'self'`
new Mutation(
MutationMode::Set,
Directive::DefaultSrc,
SourceKeyword::self,
),
// Extends the ancestor directive ('default-src'),
// thus reuses 'self' and adds additional sources
// Results in `img-src 'self' data: https://*.typo3.org`
new Mutation(
MutationMode::Extend,
Directive::ImgSrc,
SourceScheme::data,
new UriValue('https://*.typo3.org'),
),
// NOTICE: the following two instructions for `Directive::ImgSrc` are identical to the previous instruction,
// `MutationMode::Extend` is a shortcut for `MutationMode::InheritOnce` and `MutationMode::Append`
// new Mutation(MutationMode::InheritOnce, Directive::ImgSrc, SourceScheme::data),
// new Mutation(MutationMode::Append, Directive::ImgSrc, SourceScheme::data, new UriValue('https://*.typo3.org')),
// Extends the ancestor directive ('default-src'),
// thus reuses 'self' and adds additional sources
// Results in `script-src 'self' 'nonce-[random]'`
// ('nonce-proxy' is substituted when compiling the policy)
new Mutation(
MutationMode::Extend,
Directive::ScriptSrc,
SourceKeyword::nonceProxy,
),
// Sets (overrides) the directive,
// thus ignores 'self' of the 'default-src' directive
// Results in `worker-src blob:`
new Mutation(
MutationMode::Set,
Directive::WorkerSrc,
SourceScheme::blob,
),
),
]);

View File

@@ -0,0 +1,42 @@
imports:
- { resource: "EXT:rte_ckeditor/Configuration/RTE/Processing.yaml" }
- { resource: "EXT:rte_ckeditor/Configuration/RTE/Editor/Base.yaml" }
- { resource: "EXT:rte_ckeditor/Configuration/RTE/Editor/Plugins.yaml" }
editor:
config:
contentsCss: "EXT:base/Resources/Public/Css/rte.css"
stylesSet:
- { name: "Lead", element: "p", attributes: { 'class': 'lead' } }
toolbarGroups:
- { name: styles, groups: [ format, styles ] }
- { name: basicstyles, groups: [ basicstyles ] }
- { name: paragraph, groups: [ list, indent, blocks, align ] }
- "/"
- { name: links, groups: [ links ] }
- { name: clipboard, groups: [ clipboard, cleanup, undo ] }
- { name: editing, groups: [ spellchecker ] }
- { name: insert, groups: [ insert ] }
- { name: tools, groups: [ table, specialchar ] }
- { name: document, groups: [ mode ] }
format_tags: "p;h1;h2;h3;h4;h5;pre"
justifyClasses:
- text-left
- text-center
- text-right
- text-justify
extraPlugins:
- justify
removePlugins:
- image
removeButtons:
- Anchor
- Underline
- Strike

View File

@@ -0,0 +1,47 @@
#
# BACKENDLAYOUT: DEFAULT
#
mod {
web_layout {
BackendLayouts {
default {
title = Default
config {
backend_layout {
colCount = 12
rowCount = 2
rows {
1 {
columns {
1 {
name = LLL:EXT:base/Resources/Private/Language/locallang_be.xlf:backend_layout.column.normal
colPos = 0
colspan = 12
identifier = main
}
}
}
2 {
columns {
1 {
name = Footer Left
colPos = 90
colspan = 6
identifier = footer-left
}
2 {
name = Footer Right
colPos = 91
colspan = 6
identifier = footer-right
}
}
}
}
}
}
icon = EXT:test/Resources/Public/Icons/BackendLayouts/example.svg
}
}
}
}

View File

@@ -0,0 +1,71 @@
lib.dynamicContent = COA
lib.dynamicContent {
5 = LOAD_REGISTER
5 {
colPos.cObject = TEXT
colPos.cObject {
field = colPos
ifEmpty.cObject = TEXT
ifEmpty.cObject {
value.current = 1
ifEmpty = 0
}
}
slide.cObject = TEXT
slide.cObject {
override {
field = slide
if {
isInList.field = slide
value = -1, 0, 1, 2
}
}
ifEmpty = 0
}
pageUid.cObject = TEXT
pageUid.cObject {
field = pageUid
ifEmpty.data = TSFE:id
}
contentFromPid.cObject = TEXT
contentFromPid.cObject {
data = DB:pages:{register:pageUid}:content_from_pid
data.insertData = 1
}
wrap.cObject = TEXT
wrap.cObject {
field = wrap
}
elementWrap.cObject = TEXT
elementWrap.cObject {
field = elementWrap
}
}
20 = CONTENT
20 {
table = tt_content
select {
includeRecordsWithoutDefaultTranslation = 1
orderBy = sorting
where = {#colPos}={register:colPos}
where.insertData = 1
pidInList.data = register:pageUid
pidInList.override.data = register:contentFromPid
}
slide = {register:slide}
slide.insertData = 1
renderObj {
stdWrap {
dataWrap = {register:elementWrap}
required = 1
}
}
stdWrap {
dataWrap = {register:wrap}
required = 1
}
}
90 = RESTORE_REGISTER
}
lib.dynamicContentSlide =< lib.dynamicContent
lib.dynamicContentSlide.20.slide = -1

View File

@@ -0,0 +1,36 @@
################
#### CONFIG ####
################
config {
absRefPrefix = auto
no_cache = {$config.no_cache}
uniqueLinkVars = 1
pageTitleFirst = 1
linkVars = L
prefixLocalAnchors = {$config.prefixLocalAnchors}
renderCharset = utf-8
metaCharset = utf-8
doctype = html5
removeDefaultJS = {$config.removeDefaultJS}
inlineStyle2TempFile = 1
admPanel = {$config.admPanel}
debug = 0
cache_period = 86400
sendCacheHeaders = {$config.sendCacheHeaders}
intTarget =
extTarget =
disablePrefixComment = 1
index_enable = 1
index_externals = 1
index_metatags = 1
headerComment = {$config.headerComment}
// Disable Image Upscaling
noScaleUp = 1
// Compression and Concatenation of CSS and JS Files
compressJs = 1
compressCss = 1
concatenateJs = 1
concatenateCss = 1
}

Some files were not shown because too many files have changed in this diff Show More