Skip to content

Commit

Permalink
[TASK] add FlexFormProcessor and LayoutClassProcessor to theme_t3kit …
Browse files Browse the repository at this point in the history
…and use them instead of the ones in t3kit_extension_tools (#149)
  • Loading branch information
pixelmatseriks authored and MattiasNilsson committed Apr 7, 2017
1 parent 6b7e867 commit 09efe57
Show file tree
Hide file tree
Showing 20 changed files with 179 additions and 23 deletions.
76 changes: 76 additions & 0 deletions Classes/DataProcessing/FlexFormProcessor.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
<?php
namespace T3kit\themeT3kit\DataProcessing;

/*
* This file is part of the TYPO3 CMS project.
*
* It is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, either version 2
* of the License, or any later version.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* The TYPO3 project - inspiring people to share!
*/

use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;
use TYPO3\CMS\Frontend\ContentObject\DataProcessorInterface;

/**
* This data processor can be used for processing data for the content elements which have flexform contents in one field
*
* Example TypoScript configuration:
* 10 = Pixelant\ThemeCore\DataProcessing\FlexFormProcessor
* 10 {
* if.isTrue.field = pi_flexform
* fieldName = pi_flexform
* as = flexform
* }
*
* whereas "flexform" can be used as a variable {flexform} inside Fluid to fetch values.
* if as = settings, flexform settings are merged with contentObjectConfiguration['settings.']
*
*/
class FlexFormProcessor implements DataProcessorInterface {

/**
* Process flexform field data to an array
*
* @param ContentObjectRenderer $cObj The data of the content element or page
* @param array $contentObjectConfiguration The configuration of Content Object
* @param array $processorConfiguration The configuration of this processor
* @param array $processedData Key/value store of processed data (e.g. to be passed to a Fluid View)
* @return array the processed data as key/value store
*/
public function process(ContentObjectRenderer $cObj, array $contentObjectConfiguration, array $processorConfiguration, array $processedData) {
if (isset($processorConfiguration['if.']) && !$cObj->checkIf($processorConfiguration['if.'])) {
return $processedData;
}

// set targetvariable, default "flexform"
$targetVariableName = $cObj->stdWrapValue('as', $processorConfiguration, 'flexform');

// set fieldname, default "pi_flexform"
$fieldName = $cObj->stdWrapValue('fieldName', $processorConfiguration, 'pi_flexform');

// parse flexform
$flexformService = GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Service\\FlexFormService');
$processedData[$targetVariableName] = $flexformService->convertFlexFormContentToArray($cObj->data[$fieldName]);

// if targetvariable is settings, try to merge it with contentObjectConfiguration['settings.']
if ($targetVariableName == 'settings') {
if (is_array($contentObjectConfiguration['settings.'])) {
$convertedConf = GeneralUtility::removeDotsFromTS($contentObjectConfiguration['settings.']);
foreach ($convertedConf as $key => $value) {
if (!isset($processedData[$targetVariableName][$key]) || $processedData[$targetVariableName][$key] == false) {
$processedData[$targetVariableName][$key] = $value;
}
}
}
}

return $processedData;
}
}
80 changes: 80 additions & 0 deletions Classes/DataProcessing/LayoutClassProcessor.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
<?php
namespace T3kit\themeT3kit\DataProcessing;

/*
* This file is part of the TYPO3 CMS project.
*
* It is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, either version 2
* of the License, or any later version.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* The TYPO3 project - inspiring people to share!
*/

use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;
use TYPO3\CMS\Frontend\ContentObject\DataProcessorInterface;

/**
* This data processor can be used for setting class by the content layout so it will be accessible in fluid template
*
* Example TypoScript configuration:
* 10 = T3kit\themeT3kit\DataProcessing\LayoutClassProcessor
* 10 {
* as = layoutClass
* classMappings {
* 0 = __class-modifier-intence
* 1 = __class-modifier-calm __class-modifier-darker
* }
* }
*
* whereas "layoutClass" can be used as a variable {layoutClass} inside Fluid to set a class name in template.
*
*/
class LayoutClassProcessor implements DataProcessorInterface
{

/**
* Generate variable Get string from classMappings array with the same key as the "layout" in the content
*
* @param ContentObjectRenderer $cObj The data of the content element or page
* @param array $contentObjectConfiguration The configuration of Content Object
* @param array $processorConfiguration The configuration of this processor
* @param array $processedData Key/value store of processed data (e.g. to be passed to a Fluid View)
* @return array the processed data as key/value store
*/
public function process(ContentObjectRenderer $cObj, array $contentObjectConfiguration, array $processorConfiguration, array $processedData)
{
if (isset($processorConfiguration['if.']) && !$cObj->checkIf($processorConfiguration['if.'])) {
return $processedData;
}

// set targetvariable, default "layoutClass"
$targetVariableName = $cObj->stdWrapValue('as', $processorConfiguration, 'layoutClass');
$processedData[$targetVariableName] = '';

// set fieldname, default "layout"
$fieldName = $cObj->stdWrapValue('fieldName', $processorConfiguration, 'layout');

if (isset($cObj->data[$fieldName]) && is_array($processorConfiguration['classMappings.'])) {
$layoutClassMappings = GeneralUtility::removeDotsFromTS($processorConfiguration['classMappings.']);
$processedData[$targetVariableName] = $layoutClassMappings[$cObj->data[$fieldName]];
}
// if targetvariable is settings, try to merge it with contentObjectConfiguration['settings.']
if ($targetVariableName == 'settings') {
if (is_array($contentObjectConfiguration['settings.'])) {
$convertedConf = GeneralUtility::removeDotsFromTS($contentObjectConfiguration['settings.']);
foreach ($convertedConf as $key => $value) {
if (!isset($processedData[$targetVariableName][$key]) || $processedData[$targetVariableName][$key] == false) {
$processedData[$targetVariableName][$key] = $value;
}
}
}
}

return $processedData;
}
}
2 changes: 1 addition & 1 deletion Configuration/ContentElements/BootstrapSlider.setupts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ tt_content {
as = slides
}

20 = T3kit\T3kitExtensionTools\DataProcessing\FlexFormProcessor
20 = T3kit\themeT3kit\DataProcessing\FlexFormProcessor
20 {
fieldName = pi_flexform
as = settings
Expand Down
2 changes: 1 addition & 1 deletion Configuration/ContentElements/Button.setupts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ tt_content {

dataProcessing {

10 = T3kit\T3kitExtensionTools\DataProcessing\FlexFormProcessor
10 = T3kit\themeT3kit\DataProcessing\FlexFormProcessor
10 {
fieldName = pi_flexform
as = settings
Expand Down
2 changes: 1 addition & 1 deletion Configuration/ContentElements/Contacts.setupts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ tt_content {
templateName = Contacts
dataProcessing {

10 = T3kit\T3kitExtensionTools\DataProcessing\FlexFormProcessor
10 = T3kit\themeT3kit\DataProcessing\FlexFormProcessor
10 {
fieldName = pi_flexform
as = settings
Expand Down
2 changes: 1 addition & 1 deletion Configuration/ContentElements/CopyrightText.setupts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ tt_content {
templateName = CopyrightText
dataProcessing {

10 = T3kit\T3kitExtensionTools\DataProcessing\FlexFormProcessor
10 = T3kit\themeT3kit\DataProcessing\FlexFormProcessor
10 {
fieldName = pi_flexform
as = settings
Expand Down
2 changes: 1 addition & 1 deletion Configuration/ContentElements/FullWidthImage.setupts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ tt_content {
references.fieldName = image
as = images
}
20 = T3kit\T3kitExtensionTools\DataProcessing\FlexFormProcessor
20 = T3kit\themeT3kit\DataProcessing\FlexFormProcessor
20 {
fieldName = pi_flexform
as = settings
Expand Down
2 changes: 1 addition & 1 deletion Configuration/ContentElements/HeroImage.setupts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ tt_content {
references.fieldName = image
as = image
}
20 = T3kit\T3kitExtensionTools\DataProcessing\FlexFormProcessor
20 = T3kit\themeT3kit\DataProcessing\FlexFormProcessor
20 {
fieldName = pi_flexform
as = settings
Expand Down
2 changes: 1 addition & 1 deletion Configuration/ContentElements/IconTextButton.setupts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ tt_content {

dataProcessing {

10 = T3kit\T3kitExtensionTools\DataProcessing\FlexFormProcessor
10 = T3kit\themeT3kit\DataProcessing\FlexFormProcessor
10 {
fieldName = pi_flexform
as = settings
Expand Down
2 changes: 1 addition & 1 deletion Configuration/ContentElements/ImageTextLink.setupts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ tt_content {
references.fieldName = image
as = image
}
20 = T3kit\T3kitExtensionTools\DataProcessing\FlexFormProcessor
20 = T3kit\themeT3kit\DataProcessing\FlexFormProcessor
20 {
fieldName = pi_flexform
as = settings
Expand Down
2 changes: 1 addition & 1 deletion Configuration/ContentElements/LogoCarousel.setupts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ tt_content {
references.fieldName = image
as = logos
}
20 = T3kit\T3kitExtensionTools\DataProcessing\FlexFormProcessor
20 = T3kit\themeT3kit\DataProcessing\FlexFormProcessor
20 {
fieldName = pi_flexform
as = settings
Expand Down
2 changes: 1 addition & 1 deletion Configuration/ContentElements/Quote.setupts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ tt_content {
quote {
templateName = Quote
dataProcessing {
10 = T3kit\T3kitExtensionTools\DataProcessing\FlexFormProcessor
10 = T3kit\themeT3kit\DataProcessing\FlexFormProcessor
10 {
fieldName = pi_flexform
as = settings
Expand Down
2 changes: 1 addition & 1 deletion Configuration/ContentElements/ResponsiveVideo.setupts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ tt_content {
references.fieldName = media
as = media
}
20 = T3kit\T3kitExtensionTools\DataProcessing\FlexFormProcessor
20 = T3kit\themeT3kit\DataProcessing\FlexFormProcessor
20 {
fieldName = pi_flexform
as = settings
Expand Down
2 changes: 1 addition & 1 deletion Configuration/ContentElements/Slider.setupts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ tt_content {
references.fieldName = image
as = slides
}
20 = T3kit\T3kitExtensionTools\DataProcessing\FlexFormProcessor
20 = T3kit\themeT3kit\DataProcessing\FlexFormProcessor
20 {
fieldName = pi_flexform
as = settings
Expand Down
2 changes: 1 addition & 1 deletion Configuration/ContentElements/SocialIcons.setupts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ tt_content {
templateName = SocialIcons
dataProcessing {

10 = T3kit\T3kitExtensionTools\DataProcessing\FlexFormProcessor
10 = T3kit\themeT3kit\DataProcessing\FlexFormProcessor
10 {
fieldName = pi_flexform
as = settings
Expand Down
2 changes: 1 addition & 1 deletion Configuration/ContentElements/Tabs.setupts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ tt_content {

dataProcessing {

10 = T3kit\T3kitExtensionTools\DataProcessing\FlexFormProcessor
10 = T3kit\themeT3kit\DataProcessing\FlexFormProcessor
10 {
fieldName = pi_flexform
as = settings
Expand Down
2 changes: 1 addition & 1 deletion Configuration/ContentElements/bigIconTextButton.setupts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ tt_content {

dataProcessing {

10 = T3kit\T3kitExtensionTools\DataProcessing\FlexFormProcessor
10 = T3kit\themeT3kit\DataProcessing\FlexFormProcessor
10 {
fieldName = pi_flexform
as = settings
Expand Down
2 changes: 1 addition & 1 deletion Configuration/FluidStyledContent/Div.setupts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ tt_content {
templateName = Div

dataProcessing {
10 = T3kit\T3kitExtensionTools\DataProcessing\FlexFormProcessor
10 = T3kit\themeT3kit\DataProcessing\FlexFormProcessor
10 {
fieldName = pi_flexform
as = settings
Expand Down
4 changes: 2 additions & 2 deletions Configuration/FluidStyledContent/Table.setupts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
tt_content {
table {
dataProcessing {
1910 = T3kit\T3kitExtensionTools\DataProcessing\LayoutClassProcessor
1910 = T3kit\themeT3kit\DataProcessing\LayoutClassProcessor
1910 {
classMappings {
0 = table
Expand All @@ -11,7 +11,7 @@ tt_content {
14 = table table-bordered table-condensed table-hover
}
}
365 = T3kit\T3kitExtensionTools\DataProcessing\LayoutClassProcessor
365 = T3kit\themeT3kit\DataProcessing\LayoutClassProcessor
365 {
fieldName = wrapper
as = wrapperClass
Expand Down
10 changes: 5 additions & 5 deletions Configuration/TypoScript/Library/lib.fluidContent.setupts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ lib.fluidContent {
# theme_t3kit/Resources/Private/Layouts/FluidStyledContent/HeaderFooter.html
# theme_t3kit/Resources/Private/Layouts/FluidStyledContent/CustomContentFooter.html
# theme_t3kit/Resources/Private/Layouts/FluidStyledContent/CustomHeaderContentFooter.html
365 = T3kit\T3kitExtensionTools\DataProcessing\LayoutClassProcessor
365 = T3kit\themeT3kit\DataProcessing\LayoutClassProcessor
365 {
fieldName = wrapper
as = wrapperClass
Expand All @@ -26,7 +26,7 @@ lib.fluidContent {
# theme_t3kit/Resources/Private/Layouts/FluidStyledContent/HeaderFooter.html
# theme_t3kit/Resources/Private/Layouts/FluidStyledContent/CustomContentFooter.html
# theme_t3kit/Resources/Private/Layouts/FluidStyledContent/CustomHeaderContentFooter.html
395 = T3kit\T3kitExtensionTools\DataProcessing\LayoutClassProcessor
395 = T3kit\themeT3kit\DataProcessing\LayoutClassProcessor
395 {
fieldName = aligning
as = alignClass
Expand All @@ -44,7 +44,7 @@ lib.fluidContent {
# theme_t3kit/Resources/Private/Layouts/FluidStyledContent/HeaderFooter.html
# theme_t3kit/Resources/Private/Layouts/FluidStyledContent/CustomContentFooter.html
# theme_t3kit/Resources/Private/Layouts/FluidStyledContent/CustomHeaderContentFooter.html
375 = T3kit\T3kitExtensionTools\DataProcessing\LayoutClassProcessor
375 = T3kit\themeT3kit\DataProcessing\LayoutClassProcessor
375 {
fieldName = wrapper_margin_top
as = wrapperMarginTopClass
Expand All @@ -69,7 +69,7 @@ lib.fluidContent {
# theme_t3kit/Resources/Private/Layouts/FluidStyledContent/HeaderFooter.html
# theme_t3kit/Resources/Private/Layouts/FluidStyledContent/CustomContentFooter.html
# theme_t3kit/Resources/Private/Layouts/FluidStyledContent/CustomHeaderContentFooter.html
385 = T3kit\T3kitExtensionTools\DataProcessing\LayoutClassProcessor
385 = T3kit\themeT3kit\DataProcessing\LayoutClassProcessor
385 {
fieldName = wrapper_margin_bottom
as = wrapperMarginBottomClass
Expand Down Expand Up @@ -103,7 +103,7 @@ lib.fluidContent {
# theme_t3kit/Configuration/FluidStyledContent/Table.setupts ("class mappings")
# theme_t3kit/Resources/Private/Templates/FluidStyledContent/Table.html (adds {layoutClass} to table tag class attribute)
# theme_t3kit/Resources/Private/Layouts/FluidStyledContent/CustomHeaderContentFooter.html (custom fluid_styled_content layout without {layoutClass} as a wrapper)
1910 = T3kit\T3kitExtensionTools\DataProcessing\LayoutClassProcessor
1910 = T3kit\themeT3kit\DataProcessing\LayoutClassProcessor
1910 {
classMappings {
# 0 =
Expand Down

0 comments on commit 09efe57

Please sign in to comment.