Skip to content

Commit

Permalink
handle translations for bibliography facet items with own language fi…
Browse files Browse the repository at this point in the history
…elds
  • Loading branch information
thomas-sc committed Jan 14, 2025
1 parent 017edfa commit 2bda058
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 39 deletions.
4 changes: 4 additions & 0 deletions Classes/ViewHelpers/GetValueByKeyPathViewHelper.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@

use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;

/*
* This ViewHelper ist for returning object keys wich have an point in her name
* uses in facets to display right filter item names
*/
class GetValueByKeyPathViewHelper extends AbstractViewHelper
{
/**
Expand Down
46 changes: 7 additions & 39 deletions Resources/Private/Partials/FilterBlock.html
Original file line number Diff line number Diff line change
@@ -1,55 +1,23 @@
{namespace lc=Slub\LisztCommon\ViewHelpers}
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:variable name="languageFilePath">LLL:EXT:{settings.entityTypes.1.extensionName}/Resources/Private/Language/{settings.entityTypes.1.languageFile}.xlf</f:variable>


<f:comment>ToDo: refactor with view helper from double code for ul content</f:comment>
<div class="filter-block frame">
<h4 class="">{key}</h4>
<h4 class="">{f:translate(key: '{languageFilePath}:{key}', default: '{key}')}</h4>
<f:variable name="paramsRemovePage">{lc:searchParams(action: 'remove', searchParamsArray: searchParams, key: 'page')}</f:variable>
<f:variable name="searchParamsFromFirstPage">{paramsRemovePage.searchParams}</f:variable>
<ul>
<f:if condition="{filterGroup.{key}.buckets -> f:count()} > 0">
<f:for each="{filterGroup.{key}.buckets}" as="filter">
<li>
<f:if condition="{filter.key} && {lc:GetValueByKeyPath(data: searchParams, keys: '{0: \'filter\', 1: key, 2: filter.key}')} == 1">
<f:then>
<f:link.action action="index" controller="Search" pluginName="SearchListing" arguments="{lc:searchParams(action: 'removeFilter', searchParamsArray: searchParamsFromFirstPage, key: key, value: filter.key)}" class="filter-item selected">
<span class="filter-item-label">{filter.key}</span>
<span class="filter-item-count">{filter.doc_count}</span>
</f:link.action>
</f:then>
<f:else if="{filter.key}">
<f:link.action action="index" controller="Search" pluginName="SearchListing" arguments="{lc:searchParams(action: 'addFilter', searchParamsArray: searchParamsFromFirstPage, key: key, value: filter.key)}" class="filter-item">
<span class="filter-item-label">{filter.key}</span>
<span class="filter-item-count">{filter.doc_count}</span>
</f:link.action>
</f:else>
</f:if>
</li>
</f:for>
<f:for each="{filterGroup.{key}.buckets}" as="filter">
<f:render partial="FilterBlockItem" arguments="{key: key, filter: filter, searchParams: searchParams, searchParamsFromFirstPage: searchParamsFromFirstPage, languageFilePath: languageFilePath}" />
</f:for>
</f:if>

<f:comment>nested fields are nested deeper, that does not seem to be solvable</f:comment>
<f:if condition="{filterGroup.filtered_params.{key}.buckets -> f:count()} > 0">
<f:for each="{filterGroup.filtered_params.{key}.buckets}" as="filter">
<li>
<f:if condition="{filter.key} && {lc:GetValueByKeyPath(data: searchParams, keys: '{0: \'filter\', 1: key, 2: filter.key}')} == 1">
<f:then>
<f:link.action action="index" controller="Search" pluginName="SearchListing" arguments="{lc:searchParams(action: 'removeFilter', searchParamsArray: searchParamsFromFirstPage, key: key, value: filter.key)}" class="filter-item selected">
<span class="filter-item-label">{filter.key}</span>
<span class="filter-item-count">{filter.doc_count}</span>
</f:link.action>
</f:then>
<f:else if="{filter.key}">
<f:link.action action="index" controller="Search" pluginName="SearchListing" arguments="{lc:searchParams(action: 'addFilter', searchParamsArray: searchParamsFromFirstPage, key: key, value: filter.key)}" class="filter-item">
<span class="filter-item-label">{filter.key}</span>
<span class="filter-item-count">{filter.doc_count}</span>
</f:link.action>
</f:else>
</f:if>
</li>
<f:render partial="FilterBlockItem" arguments="{key: key, filter: filter, searchParams: searchParams, searchParamsFromFirstPage: searchParamsFromFirstPage, languageFilePath: languageFilePath}" />
</f:for>
</f:if>

</ul>
</div>
</html>
19 changes: 19 additions & 0 deletions Resources/Private/Partials/FilterBlockItem.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{namespace lc=Slub\LisztCommon\ViewHelpers}
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<li>
<f:if condition="{filter.key} && {lc:GetValueByKeyPath(data: searchParams, keys: '{0: \'filter\', 1: key, 2: filter.key}')} == 1">
<f:then>
<f:link.action action="index" controller="Search" pluginName="SearchListing" arguments="{lc:searchParams(action: 'removeFilter', searchParamsArray: searchParamsFromFirstPage, key: key, value: filter.key)}" class="filter-item selected">
<span class="filter-item-label">{f:translate(key: '{languageFilePath}:{key}_{filter.key}', default: '{filter.key}')}</span>
<span class="filter-item-count">{filter.doc_count}</span>
</f:link.action>
</f:then>
<f:else if="{filter.key}">
<f:link.action action="index" controller="Search" pluginName="SearchListing" arguments="{lc:searchParams(action: 'addFilter', searchParamsArray: searchParamsFromFirstPage, key: key, value: filter.key)}" class="filter-item">
<span class="filter-item-label">{f:translate(key: '{languageFilePath}:{key}_{filter.key}', default: '{filter.key}')}</span>
<span class="filter-item-count">{filter.doc_count}</span>
</f:link.action>
</f:else>
</f:if>
</li>
</html>

0 comments on commit 2bda058

Please sign in to comment.