diff --git a/Classes/Controller/AbstractController.php b/Classes/Controller/AbstractController.php index 9dd36dc2..a8b9e6b0 100644 --- a/Classes/Controller/AbstractController.php +++ b/Classes/Controller/AbstractController.php @@ -15,7 +15,6 @@ use TYPO3\CMS\Core\Routing\SiteMatcher; use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction; use TYPO3\CMS\Core\Database\Query\QueryHelper; -#use TYPO3\CMS\Core\Page\PageRenderer; use TYPO3\CMS\Core\Domain\Repository\PageRepository; use TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager; use TYPO3\CMS\Core\Utility\ExtensionManagementUtility; @@ -42,7 +41,7 @@ abstract class AbstractController extends ActionController /** * init all actions */ - public function initializeAction() + public function initializeAction(): void { $site = $this->request->getAttribute('site'); $this->rootPageId = $site->getRootPageId(); @@ -62,8 +61,6 @@ public function initializeAction() $queryBuilder->expr()->eq('root', $queryBuilder->createNamedParameter(1, \PDO::PARAM_INT)) ) ->executeQuery()->fetchOne(); - -# $pageRenderer = GeneralUtility::makeInstance(PageRenderer::class); } diff --git a/Classes/Controller/ConfigController.php b/Classes/Controller/ConfigController.php index e39af6ce..1e04fbf2 100644 --- a/Classes/Controller/ConfigController.php +++ b/Classes/Controller/ConfigController.php @@ -28,14 +28,14 @@ final class ConfigController extends AbstractController { public function __construct( - private ModuleTemplateFactory $moduleTemplateFactory + protected readonly ModuleTemplateFactory $moduleTemplateFactory ) { } /** * Init all actions. */ - public function initializeAction() + public function initializeAction(): void { parent::initializeAction(); } diff --git a/Classes/DataProcessing/BootstrapProcessor.php b/Classes/DataProcessing/BootstrapProcessor.php index 9709c0c6..a5a76e06 100644 --- a/Classes/DataProcessing/BootstrapProcessor.php +++ b/Classes/DataProcessing/BootstrapProcessor.php @@ -315,13 +315,13 @@ public function process(ContentObjectRenderer $cObj, array $contentObjectConfigu $processedData['lightBox'] = true; } // lightbox - if ($cType == 't3sbs_gallery' || !empty($processedData['data']['image_zoom'])) { + if ($cType === 't3sbs_gallery' || !empty($processedData['data']['image_zoom'])) { $processedData['lightBox'] = true; } } // child of autoLayout_row - if ($parentCType == 'autoLayout_row') { + if ($parentCType === 'autoLayout_row') { $processedData['newLine'] = $flexconf['newLine'] ? true : false; $processedData['class'] .= $classHelper->getAutoLayoutClass($flexconf); } @@ -376,7 +376,6 @@ public function process(ContentObjectRenderer $cObj, array $contentObjectConfigu } - /** * @param array $animationSettingsArray * @return string diff --git a/Classes/DataProcessing/ConfigProcessor.php b/Classes/DataProcessing/ConfigProcessor.php index 3dd6a7dc..2fa672c7 100644 --- a/Classes/DataProcessing/ConfigProcessor.php +++ b/Classes/DataProcessing/ConfigProcessor.php @@ -45,7 +45,6 @@ public function process(ContentObjectRenderer $cObj, array $contentObjectConfigu if (!$frontendController) { $frontendController = self::getFrontendController(); } - if (!empty($contentObjectConfiguration['settings.']['config.']['uid']) && is_numeric($contentObjectConfiguration['settings.']['config.']['uid'])) { $processedRecordVariables = $contentObjectConfiguration['settings.']['config.']; @@ -179,10 +178,10 @@ public function process(ContentObjectRenderer $cObj, array $contentObjectConfigu if (!empty($navbarMenu['data']['tx_t3sbootstrap_fontawesome_icon'])) { $mainMenu[$key]['faIcon'] = ' '; } - $mainMenu[$key]['linkTitle'] = $navbarMenu['data']['title']; - if (!empty($settings['navbar.']['noLinkTitle'])) { - $mainMenu[$key]['linkTitle'] = ''; - } + $mainMenu[$key]['linkTitle'] = $navbarMenu['data']['title']; + if (!empty($settings['navbar.']['noLinkTitle'])) { + $mainMenu[$key]['linkTitle'] = ''; + } if ($navbarMenu['data']['tx_t3sbootstrap_icon_only']) { $mainMenu[$key]['linkTitle'] = $navbarMenu['data']['title']; $mainMenu[$key]['title'] = ''; @@ -385,7 +384,7 @@ public function process(ContentObjectRenderer $cObj, array $contentObjectConfigu $processedData['config']['navbar']['sbmauto'] = ' ms-auto'; } if ($processedData['config']['navbar']['mauto'] == ' ms-auto') { - $processedData['config']['navbar']['sbmauto'] = ' float-right ms-3'; + $processedData['config']['navbar']['sbmauto'] = ' float-end ms-3'; } if ($processedData['config']['navbar']['mauto'] == 'center') { $processedData['config']['navbar']['sbmauto'] = ''; diff --git a/Classes/ViewHelpers/PageBrowsingViewHelper.php b/Classes/ViewHelpers/PageBrowsingViewHelper.php index 9f19c058..0e1bfd22 100644 --- a/Classes/ViewHelpers/PageBrowsingViewHelper.php +++ b/Classes/ViewHelpers/PageBrowsingViewHelper.php @@ -1,127 +1,176 @@ registerArgument('maximumNumberOfResultPages', 'int', '', true); - $this->registerArgument('numberOfResults', 'int', '', true); - $this->registerArgument('resultsPerPage', 'int', '', true); - $this->registerArgument('currentPage', 'int', '', false, 0); - $this->registerArgument('freeIndexUid', 'int', ''); - } - - - public static function renderStatic(array $arguments, \Closure $renderChildrenClosure, RenderingContextInterface $renderingContext): string - { - $maximumNumberOfResultPages = $arguments['maximumNumberOfResultPages']; - $numberOfResults = $arguments['numberOfResults']; - $resultsPerPage = $arguments['resultsPerPage']; - $currentPage = $arguments['currentPage']; - $freeIndexUid = $arguments['freeIndexUid']; - - if ($resultsPerPage <= 0) { - $resultsPerPage = 10; - } - $pageCount = (int)ceil($numberOfResults / $resultsPerPage); - // only show the result browser if more than one page is needed - if ($pageCount === 1) { - return ''; - } - - // Check if $currentPage is in range - $currentPage = MathUtility::forceIntegerInRange($currentPage, 0, $pageCount - 1); - - $content = ''; - // prev page - // show on all pages after the 1st one - if ($currentPage > 0 && !empty($freeIndexUid)) { - $label = LocalizationUtility::translate('displayResults.previous', 'IndexedSearch'); - $content .= '
  • ' . self::makecurrentPageSelector_link((string) $label, $currentPage - 1, (string) $freeIndexUid) . '
  • '; - } - // Check if $maximumNumberOfResultPages is in range - $maximumNumberOfResultPages = MathUtility::forceIntegerInRange($maximumNumberOfResultPages, 1, $pageCount, 10); - // Assume $currentPage is in the middle and calculate the index limits of the result page listing - $minPage = $currentPage - (int)floor($maximumNumberOfResultPages / 2); - $maxPage = $minPage + $maximumNumberOfResultPages - 1; - // Check if the indexes are within the page limits - if ($minPage < 0) { - $maxPage -= $minPage; - $minPage = 0; - } elseif ($maxPage >= $pageCount) { - $minPage -= $maxPage - $pageCount + 1; - $maxPage = $pageCount - 1; - } - $pageLabel = ''; - - for ($a = $minPage; $a <= $maxPage; $a++) { - $label = trim($pageLabel . ' ' . ($a + 1)); - if (!empty($freeIndexUid)) { - $label = self::makecurrentPageSelector_link((string) $label, (int) $a, (string) $freeIndexUid); - } - if ($a === $currentPage) { - $content .= '
  • ' . $label . '
  • '; - } else { - $content .= '
  • ' . $label . '
  • '; - } - } - - - // next link - if ($currentPage < $pageCount - 1 && !empty($freeIndexUid)) { - $label = LocalizationUtility::translate('displayResults.next', 'IndexedSearch'); - $content .= '
  • ' . self::makecurrentPageSelector_link((string) $label, ($currentPage + 1), (string) $freeIndexUid) . '
  • '; - } - return ''; - } - - /** - * Used to make the link for the result-browser. - * Notice how the links must resubmit the form after setting the new currentPage-value in a hidden formfield. - * - * $str String to wrap in tag - * $p currentPage value - * $freeIndexUid List of integers pointing to free indexing configurations to search. -1 represents no filtering, 0 represents TYPO3 pages only, any number above zero is a uid of an indexing configuration! - */ - protected static function makecurrentPageSelector_link(string $str, int $p, string $freeIndexUid): string - { - $onclick = 'document.getElementById(' . GeneralUtility::quoteJSvalue(self::$prefixId . '_pointer') . ').value=' . GeneralUtility::quoteJSvalue($p) . ';'; - if ($freeIndexUid !== null) { - $onclick .= 'document.getElementById(' . GeneralUtility::quoteJSvalue(self::$prefixId . '_freeIndexUid') . ').value=' . GeneralUtility::quoteJSvalue($freeIndexUid) . ';'; - } - $onclick .= 'document.getElementById(' . GeneralUtility::quoteJSvalue(self::$prefixId) . ').submit();return false;'; - return '' . htmlspecialchars($str) . ''; - } + protected static string $prefixId = 'tx_indexedsearch'; + + /** + * @var string + */ + protected $tagName = 'ul'; + + public function __construct(private readonly AssetCollector $assetCollector) + { + parent::__construct(); + } + + public function initializeArguments(): void + { + $this->registerArgument('maximumNumberOfResultPages', 'int', '', true); + $this->registerArgument('numberOfResults', 'int', '', true); + $this->registerArgument('resultsPerPage', 'int', '', true); + $this->registerArgument('currentPage', 'int', '', false, 0); + $this->registerArgument('freeIndexUid', 'int', ''); + $this->registerUniversalTagAttributes(); + } + + public function render(): string + { + $maximumNumberOfResultPages = $this->arguments['maximumNumberOfResultPages']; + $numberOfResults = $this->arguments['numberOfResults']; + $resultsPerPage = $this->arguments['resultsPerPage']; + $currentPage = $this->arguments['currentPage']; + $freeIndexUid = $this->arguments['freeIndexUid']; + + if ($resultsPerPage <= 0) { + $resultsPerPage = 10; + } + $pageCount = (int)ceil($numberOfResults / $resultsPerPage); + // only show the result browser if more than one page is needed + if ($pageCount === 1) { + return ''; + } + + // Check if $currentPage is in range + $currentPage = MathUtility::forceIntegerInRange($currentPage, 0, $pageCount - 1); + + $content = ''; + // prev page + // show on all pages after the 1st one + if ($currentPage > 0) { + $label = LocalizationUtility::translate('displayResults.previous', 'IndexedSearch') ?? ''; + $content .= '
  • ' . $this->makecurrentPageSelector_link($label, $currentPage - 1, $freeIndexUid) . '
  • '; + } + // Check if $maximumNumberOfResultPages is in range + $maximumNumberOfResultPages = MathUtility::forceIntegerInRange($maximumNumberOfResultPages, 1, $pageCount, 10); + // Assume $currentPage is in the middle and calculate the index limits of the result page listing + $minPage = $currentPage - (int)floor($maximumNumberOfResultPages / 2); + $maxPage = $minPage + $maximumNumberOfResultPages - 1; + // Check if the indexes are within the page limits + if ($minPage < 0) { + $maxPage -= $minPage; + $minPage = 0; + } elseif ($maxPage >= $pageCount) { + $minPage -= $maxPage - $pageCount + 1; + $maxPage = $pageCount - 1; + } + $pageLabel = LocalizationUtility::translate('displayResults.page', 'IndexedSearch'); + for ($a = $minPage; $a <= $maxPage; $a++) { + $isCurrentPage = $a === $currentPage; + $label = trim($pageLabel . ' ' . ($a + 1)); + $label = $this->makecurrentPageSelector_link($label, $a, $freeIndexUid, $isCurrentPage); + if ($isCurrentPage) { + $content .= '
  • ' . $label . '
  • '; + } else { + $content .= '
  • ' . $label . '
  • '; + } + } + // next link + if ($currentPage < $pageCount - 1) { + $label = LocalizationUtility::translate('displayResults.next', 'IndexedSearch') ?? ''; + $content .= '
  • ' . $this->makecurrentPageSelector_link($label, $currentPage + 1, $freeIndexUid) . '
  • '; + } + + if (!$this->tag->hasAttribute('class')) { + $this->tag->addAttribute('class', 'tx-indexedsearch-browsebox pagination'); + } + + $this->tag->setContent($content); + + return $this->tag->render(); + } + + /** + * Used to make the link for the result-browser. + * Notice how the links must resubmit the form after setting the new currentPage-value in a hidden formfield. + * + * @param string $str String to wrap in tag + * @param int $p currentPage value + * @param string $freeIndexUid List of integers pointing to free indexing configurations to search. -1 represents no filtering, 0 represents TYPO3 pages only, any number above zero is a uid of an indexing configuration! + * @param bool $isCurrentPage + * @return string Input string wrapped in tag with onclick event attribute set. + */ + protected function makecurrentPageSelector_link($str, $p, $freeIndexUid, bool $isCurrentPage = false) + { + $this->providePageSelectorJavaScript(); + $attributes = [ + 'href' => '#', + 'class' => 'tx-indexedsearch-page-selector page-link', + 'data-prefix' => self::$prefixId, + 'data-pointer' => $p, + 'data-free-index-uid' => $freeIndexUid, + ]; + if ($isCurrentPage) { + $attributes['aria-current'] = 'page'; + } + return sprintf( + '%s', + GeneralUtility::implodeAttributes($attributes, true), + htmlspecialchars($str) + ); + } + + private function providePageSelectorJavaScript(): void + { + if ($this->assetCollector->hasInlineJavaScript(self::class)) { + return; + } + + $this->assetCollector->addInlineJavaScript( + 'vanilla_indexSearch', + implode(' ', [ + "document.addEventListener('click', (evt) => {", + "if (!evt.target.classList.contains('tx-indexedsearch-page-selector')) {", + 'return;', + '}', + 'evt.preventDefault();', + 'var data = evt.target.dataset;', + "document.getElementById(data.prefix + '_pointer').value = data.pointer;", + "document.getElementById(data.prefix + '_freeIndexUid').value = data.freeIndexUid;", + 'document.getElementById(data.prefix).submit();', + '});', + ]), + [], + ['useNonce' => true], + ); + } } diff --git a/Classes/Wrapper/CollapsibleAccordion.php b/Classes/Wrapper/CollapsibleAccordion.php index 5f8a56a4..c1f2b3b3 100644 --- a/Classes/Wrapper/CollapsibleAccordion.php +++ b/Classes/Wrapper/CollapsibleAccordion.php @@ -1,4 +1,5 @@ findByRelation('tt_content', 'assets', (int)$processedData['data']['uid']); - if (!empty($file)) {$file = $file[0];} - $processedData['appearance'] = $parentflexconf['appearance']; - $processedData['show'] = !empty($flexconf['active']) ? ' show' : ''; - $processedData['collapsed'] = !empty($flexconf['active']) ? '' : ' collapsed'; - $processedData['expanded'] = !empty($flexconf['active']) ? 'true' : 'false'; - $processedData['alwaysOpen'] = !empty($parentflexconf['alwaysOpen']) ? 'true' : 'false'; - $processedData['buttonstyle'] = !empty($flexconf['style']) ? $flexconf['style'] : 'primary'; - $processedData['collapsibleByPid'] = !empty($flexconf['collapsibleByPid']) ? $flexconf['collapsibleByPid'] : ''; - $processedData['media'] = $file ? $file : ''; - - $processedData['appearance'] = $parentflexconf['appearance']; - - return $processedData; - } - + /** + * Returns the $processedData + */ + public function getProcessedData(array $processedData, array $flexconf, array $parentflexconf): array + { + $fileRepository = GeneralUtility::makeInstance(FileRepository::class); + + $file = $fileRepository->findByRelation('tt_content', 'assets', (int)$processedData['data']['uid']); + if (!empty($file)) { + $file = $file[0]; + } + $processedData['appearance'] = $parentflexconf['appearance']; + $processedData['show'] = !empty($flexconf['active']) ? ' show' : ''; + $processedData['collapsed'] = !empty($flexconf['active']) ? '' : ' collapsed'; + $processedData['expanded'] = !empty($flexconf['active']) ? 'true' : 'false'; + $processedData['alwaysOpen'] = !empty($parentflexconf['alwaysOpen']) ? 'true' : 'false'; + $processedData['buttonstyle'] = !empty($flexconf['style']) ? $flexconf['style'] : 'primary'; + $processedData['collapsibleByPid'] = !empty($flexconf['collapsibleByPid']) ? $flexconf['collapsibleByPid'] : ''; + $processedData['media'] = $file ? $file : ''; + + $processedData['appearance'] = $parentflexconf['appearance']; + + return $processedData; + } } diff --git a/Configuration/TCA/Overrides/sys_file_reference.php b/Configuration/TCA/Overrides/sys_file_reference.php index edcd96e8..13f5149e 100644 --- a/Configuration/TCA/Overrides/sys_file_reference.php +++ b/Configuration/TCA/Overrides/sys_file_reference.php @@ -9,336 +9,335 @@ * Add extra field tx_t3sbootstrap_extra_class etc. to sys_file_reference record */ $tempSysFileReferenceColumns = [ - 'tx_t3sbootstrap_extra_class' => [ - 'exclude' => 1, - 'label' => 'Extra Class - figure-tag', - 'config' => [ - 'type' => 'input', - 'size' => 40, - 'eval' => 'trim', - 'valuePicker' => [ - 'items' => [ - [ 'm-3 (margin)', 'm-3', ], - [ 'mt-3 (margin-top)', 'mt-3', ], - [ 'mb-3 (margin-bottom)', 'mb-3', ], - [ 'ms-3 (margin-left)', 'ms-3', ], - [ 'me-3 (margin-right)', 'me-3', ], - [ 'mx-3 (margin-left and -right)', 'mx-3', ], - [ 'my-3 (margin-top and -bottom)', 'my-3', ], - [ 'Hover zoom (basic)', 'img-hover-zoom', ], - [ 'Hover zoom (rotate)', 'img-hover-zoom--zoom-n-rotate', ], - [ 'Hover zoom (slowmo)', 'img-hover-zoom--slowmo', ], - [ 'Hover zoom (brightness)', 'img-hover-zoom--brightness', ], - [ 'Hover zoom (blurzoom)', 'img-hover-zoom--blur', ], - [ 'Hover zoom (colorize)', 'img-hover-zoom--colorize', ] - ], - ], - ], - ], - 'tx_t3sbootstrap_extra_imgclass' => [ - 'exclude' => 1, - 'label' => 'Extra Class - img-tag', - 'config' => [ - 'type' => 'input', - 'size' => 40, - 'eval' => 'trim', - 'valuePicker' => [ - 'items' => [ - [ 'img-transform scale', 'img-transform', ], - [ 'rounded', 'rounded', ], - [ 'rounded-circle', 'rounded-circle', ], - [ 'img-thumbnail', 'img-thumbnail', ], - [ 'float-start', 'float-start', ], - [ 'float-right', 'float-end', ], - [ 'mx-auto d-block', 'mx-auto d-block', ], - ], - ], - ], - ], - 'tx_t3sbootstrap_hover_effect' => [ - 'label' => 'Link Hover Effect (title and/or description)', - 'exclude' => 1, - 'displayCond' => [ - 'AND' => [ - 'FIELD:tablenames:=:tt_content', - 'FIELD:fieldname:=:assets', - ] - ], - 'config' => [ - 'type' => 'select', - 'renderType' => 'selectSingle', - 'items' => [ - [ - 'label' => 'none', - 'value' => '', - ], - [ - 'label' => 'Effect 1', - 'value' => 'snip1273', - ], - [ - 'label' => 'Effect 2', - 'value' => 'snip1321', - ], - [ - 'label' => 'Effect 3', - 'value' => 'snip1577', - ], - [ - 'label' => 'Effect 4', - 'value' => 'snip0015', - ], - [ - 'label' => 'Effect 5 (title only)', - 'value' => 'snip1573', - ], - [ - 'label' => 'Effect 6', - 'value' => 'snip1477', - ], - [ - 'label' => 'Effect 7', - 'value' => 'snip1361', - ], - [ - 'label' => 'Effect 8', - 'value' => 'snip1206', - ], - [ - 'label' => 'Effect 9', - 'value' => 'snip1190', - ], - [ - 'label' => 'Effect 10', - 'value' => 'snip0016', - ], - ], - 'default' => '' - ] - ], - 'tx_t3sbootstrap_lazy_load' => [ - 'label' => 'Lazy loading', - 'exclude' => 1, - 'displayCond' => [ - 'OR' => [ - 'FIELD:tablenames:=:tt_content', - 'FIELD:tablenames:=:tx_news_domain_model_news', - 'FIELD:fieldname:=:assets', - 'FIELD:fieldname:=:image', - ], - ], - 'config' => [ - 'type' => 'check' - ] - ], - 'tx_t3sbootstrap_description_align' => [ - 'label' => 'Description align', - 'exclude' => 1, - 'config' => [ - 'type' => 'select', - 'renderType' => 'selectSingle', - 'items' => [ - [ - 'label' => 'left', - 'value' => 'start', - ], - [ - 'label' => 'center', - 'value' => 'center', - ], - [ - 'label' => 'right', - 'value' => 'end', - ], - ], - 'default' => 'start' - ] - ], - 'tx_t3sbootstrap_copyright' => [ - 'exclude' => 1, - 'label' => 'Copyright note', - 'config' => [ - 'type' => 'input', - 'size' => 50, - 'eval' => 'trim', - ], - ], - 'tx_t3sbootstrap_copyright_color' => [ - 'exclude' => 1, - 'label' => 'Copyright color', - 'config' => [ - 'type' => 'select', - 'renderType' => 'selectSingle', - 'items' => [ - [ - 'label' => 'light', - 'value' => 'text-light', - ], - [ - 'label' => 'dark', - 'value' => 'text-dark', - ], - [ - 'label' => 'primary', - 'value' => 'text-primary', - ], - [ - 'label' => 'secondary', - 'value' => 'text-secondary', - ], - [ - 'label' => 'success', - 'value' => 'text-success', - ], - [ - 'label' => 'danger', - 'value' => 'text-danger', - ], - [ - 'label' => 'warning', - 'value' => 'text-warning', - ], - [ - 'label' => 'info', - 'value' => 'text-info', - ], - [ - 'label' => 'white', - 'value' => 'text-white', - ], - ], - 'default' => 'text-dark', - 'size' => 1, - 'maxitems' => 1 - ] - ], - 'tx_t3sbootstrap_copyright_source' => [ - 'exclude' => 1, - 'label' => 'Copyright source', - 'config' => [ - 'type' => 'input', - 'size' => 50, - 'eval' => 'trim', - ], - ], - 'tx_t3sbootstrap_imgtag' => [ - 'label' => 'Output image in - instead in tag', - 'description' => 'Did not work with any CType!', - 'exclude' => 1, - 'displayCond' => [ - 'AND' => [ - 'FIELD:tablenames:=:tt_content', - 'FIELD:fieldname:=:assets', - ] - ], - 'config' => [ - 'type' => 'check' - ] - ], - 'tx_t3sbootstrap_shift_vertical' => [ - 'label' => 'Vertical shift - if the original image is higher than wide', - 'description' => 'only useful if aspect ratio (tx_t3sbootstrap_image_ratio) is used - otherwise the input is rejected', - 'displayCond' => [ - 'AND' => [ - 'FIELD:tablenames:=:tt_content', - 'FIELD:fieldname:=:assets', - ] - ], - 'config' => [ - 'type' => 'number', - 'size' => 5, - 'eval' => 'trim,int', - 'range' => [ - 'lower' => 0, - 'upper' => 50 - ], - 'default' => 0, - 'slider' => [ - 'step' => 1, - 'width' => 200, - ] - ], - ], - 'tx_t3sbootstrap_shift_horizontal' => [ - 'label' => 'Horizontal shift - if the original is wider than high', - 'description' => 'only useful if aspect ratio (tx_t3sbootstrap_image_ratio) is used - otherwise the input is rejected', - 'displayCond' => [ - 'AND' => [ - 'FIELD:tablenames:=:tt_content', - 'FIELD:fieldname:=:assets', - ] - ], - 'config' => [ - 'type' => 'number', - 'size' => 5, - 'eval' => 'trim,int', - 'range' => [ - 'lower' => 0, - 'upper' => 50 - ], - 'default' => 0, - 'slider' => [ - 'step' => 1, - 'width' => 200, - ] - ], - ], - 'tx_t3sbootstrap_video_ratio' => [ - 'exclude' => 1, - 'label' => 'Custom aspect ratio (default: 16:9)', - 'description' => 'you can use any aspect ratio - e.g.: 4:3 (textmedia only)', - 'displayCond' => 'FIELD:tablenames:=:tt_content', - 'config' => [ - 'type' => 'input', - 'size' => 10, - 'eval' => 'trim', - 'valuePicker' => [ - 'items' => [ - ['16:9 (widescreen)', '16:9'], - ['9:16 (vertical)', '9:16'], - ['1:1 (square)', '1:1'], - ['4:3 (fullscreen)', '4:3'], - ['21:9 (cinematic widescreen)', '21:9'] - ], - ], - 'default' => '16:9' - ], - ], + 'tx_t3sbootstrap_extra_class' => [ + 'exclude' => 1, + 'label' => 'Extra Class - figure-tag', + 'config' => [ + 'type' => 'input', + 'size' => 40, + 'eval' => 'trim', + 'valuePicker' => [ + 'items' => [ + [ 'center', 'mx-auto', ], + [ 'right', 'float-end', ], + [ 'm-3 (margin)', 'm-3', ], + [ 'mt-3 (margin-top)', 'mt-3', ], + [ 'mb-3 (margin-bottom)', 'mb-3', ], + [ 'ms-3 (margin-left)', 'ms-3', ], + [ 'me-3 (margin-right)', 'me-3', ], + [ 'mx-3 (margin-left and -right)', 'mx-3', ], + [ 'my-3 (margin-top and -bottom)', 'my-3', ], + [ 'Hover zoom (basic)', 'img-hover-zoom', ], + [ 'Hover zoom (rotate)', 'img-hover-zoom--zoom-n-rotate', ], + [ 'Hover zoom (slowmo)', 'img-hover-zoom--slowmo', ], + [ 'Hover zoom (brightness)', 'img-hover-zoom--brightness', ], + [ 'Hover zoom (blurzoom)', 'img-hover-zoom--blur', ], + [ 'Hover zoom (colorize)', 'img-hover-zoom--colorize', ] + ], + ], + ], + ], + 'tx_t3sbootstrap_extra_imgclass' => [ + 'exclude' => 1, + 'label' => 'Extra Class - img-tag', + 'config' => [ + 'type' => 'input', + 'size' => 40, + 'eval' => 'trim', + 'valuePicker' => [ + 'items' => [ + [ 'img-transform scale', 'img-transform', ], + [ 'rounded', 'rounded', ], + [ 'rounded-circle', 'rounded-circle', ], + [ 'img-thumbnail', 'img-thumbnail', ], + ], + ], + ], + ], + 'tx_t3sbootstrap_hover_effect' => [ + 'label' => 'Link Hover Effect (title and/or description)', + 'exclude' => 1, + 'displayCond' => [ + 'AND' => [ + 'FIELD:tablenames:=:tt_content', + 'FIELD:fieldname:=:assets', + ] + ], + 'config' => [ + 'type' => 'select', + 'renderType' => 'selectSingle', + 'items' => [ + [ + 'label' => 'none', + 'value' => '', + ], + [ + 'label' => 'Effect 1', + 'value' => 'snip1273', + ], + [ + 'label' => 'Effect 2', + 'value' => 'snip1321', + ], + [ + 'label' => 'Effect 3', + 'value' => 'snip1577', + ], + [ + 'label' => 'Effect 4', + 'value' => 'snip0015', + ], + [ + 'label' => 'Effect 5 (title only)', + 'value' => 'snip1573', + ], + [ + 'label' => 'Effect 6', + 'value' => 'snip1477', + ], + [ + 'label' => 'Effect 7', + 'value' => 'snip1361', + ], + [ + 'label' => 'Effect 8', + 'value' => 'snip1206', + ], + [ + 'label' => 'Effect 9', + 'value' => 'snip1190', + ], + [ + 'label' => 'Effect 10', + 'value' => 'snip0016', + ], + ], + 'default' => '' + ] + ], + 'tx_t3sbootstrap_lazy_load' => [ + 'label' => 'Lazy loading', + 'exclude' => 1, + 'displayCond' => [ + 'OR' => [ + 'FIELD:tablenames:=:tt_content', + 'FIELD:tablenames:=:tx_news_domain_model_news', + 'FIELD:fieldname:=:assets', + 'FIELD:fieldname:=:image', + ], + ], + 'config' => [ + 'type' => 'check' + ] + ], + 'tx_t3sbootstrap_description_align' => [ + 'label' => 'Description align', + 'exclude' => 1, + 'config' => [ + 'type' => 'select', + 'renderType' => 'selectSingle', + 'items' => [ + [ + 'label' => 'left', + 'value' => 'start', + ], + [ + 'label' => 'center', + 'value' => 'center', + ], + [ + 'label' => 'right', + 'value' => 'end', + ], + ], + 'default' => 'start' + ] + ], + 'tx_t3sbootstrap_copyright' => [ + 'exclude' => 1, + 'label' => 'Copyright note', + 'config' => [ + 'type' => 'input', + 'size' => 50, + 'eval' => 'trim', + ], + ], + 'tx_t3sbootstrap_copyright_color' => [ + 'exclude' => 1, + 'label' => 'Copyright color', + 'config' => [ + 'type' => 'select', + 'renderType' => 'selectSingle', + 'items' => [ + [ + 'label' => 'light', + 'value' => 'text-light', + ], + [ + 'label' => 'dark', + 'value' => 'text-dark', + ], + [ + 'label' => 'primary', + 'value' => 'text-primary', + ], + [ + 'label' => 'secondary', + 'value' => 'text-secondary', + ], + [ + 'label' => 'success', + 'value' => 'text-success', + ], + [ + 'label' => 'danger', + 'value' => 'text-danger', + ], + [ + 'label' => 'warning', + 'value' => 'text-warning', + ], + [ + 'label' => 'info', + 'value' => 'text-info', + ], + [ + 'label' => 'white', + 'value' => 'text-white', + ], + ], + 'default' => 'text-dark', + 'size' => 1, + 'maxitems' => 1 + ] + ], + 'tx_t3sbootstrap_copyright_source' => [ + 'exclude' => 1, + 'label' => 'Copyright source', + 'config' => [ + 'type' => 'input', + 'size' => 50, + 'eval' => 'trim', + ], + ], + 'tx_t3sbootstrap_imgtag' => [ + 'label' => 'Output image in - instead in tag', + 'description' => 'Did not work with any CType!', + 'exclude' => 1, + 'displayCond' => [ + 'AND' => [ + 'FIELD:tablenames:=:tt_content', + 'FIELD:fieldname:=:assets', + ] + ], + 'config' => [ + 'type' => 'check' + ] + ], + 'tx_t3sbootstrap_shift_vertical' => [ + 'label' => 'Vertical shift - if the original image is higher than wide', + 'description' => 'only useful if aspect ratio (tx_t3sbootstrap_image_ratio) is used - otherwise the input is rejected', + 'displayCond' => [ + 'AND' => [ + 'FIELD:tablenames:=:tt_content', + 'FIELD:fieldname:=:assets', + ] + ], + 'config' => [ + 'type' => 'number', + 'size' => 5, + 'eval' => 'trim,int', + 'range' => [ + 'lower' => 0, + 'upper' => 50 + ], + 'default' => 0, + 'slider' => [ + 'step' => 1, + 'width' => 200, + ] + ], + ], + 'tx_t3sbootstrap_shift_horizontal' => [ + 'label' => 'Horizontal shift - if the original is wider than high', + 'description' => 'only useful if aspect ratio (tx_t3sbootstrap_image_ratio) is used - otherwise the input is rejected', + 'displayCond' => [ + 'AND' => [ + 'FIELD:tablenames:=:tt_content', + 'FIELD:fieldname:=:assets', + ] + ], + 'config' => [ + 'type' => 'number', + 'size' => 5, + 'eval' => 'trim,int', + 'range' => [ + 'lower' => 0, + 'upper' => 50 + ], + 'default' => 0, + 'slider' => [ + 'step' => 1, + 'width' => 200, + ] + ], + ], + 'tx_t3sbootstrap_video_ratio' => [ + 'exclude' => 1, + 'label' => 'Custom aspect ratio (default: 16:9)', + 'description' => 'you can use any aspect ratio - e.g.: 4:3 (textmedia only)', + 'displayCond' => 'FIELD:tablenames:=:tt_content', + 'config' => [ + 'type' => 'input', + 'size' => 10, + 'eval' => 'trim', + 'valuePicker' => [ + 'items' => [ + ['16:9 (widescreen)', '16:9'], + ['9:16 (vertical)', '9:16'], + ['1:1 (square)', '1:1'], + ['4:3 (fullscreen)', '4:3'], + ['21:9 (cinematic widescreen)', '21:9'] + ], + ], + 'default' => '16:9' + ], + ], ]; -\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('sys_file_reference',$tempSysFileReferenceColumns); +\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('sys_file_reference', $tempSysFileReferenceColumns); unset($tempSysFileReferenceColumns); -\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette('sys_file_reference', 'imageoverlayPalette','--linebreak--,tx_t3sbootstrap_description_align','after:title'); +\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette('sys_file_reference', 'imageoverlayPalette', '--linebreak--,tx_t3sbootstrap_description_align', 'after:title'); -\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette('sys_file_reference', 'imageoverlayPalette','--linebreak--,tx_t3sbootstrap_extra_class','after:tx_t3sbootstrap_description_align'); +\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette('sys_file_reference', 'imageoverlayPalette', '--linebreak--,tx_t3sbootstrap_extra_class', 'after:tx_t3sbootstrap_description_align'); -\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette('sys_file_reference', 'imageoverlayPalette','--linebreak--,tx_t3sbootstrap_extra_imgclass','after:tx_t3sbootstrap_extra_class'); +\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette('sys_file_reference', 'imageoverlayPalette', '--linebreak--,tx_t3sbootstrap_extra_imgclass', 'after:tx_t3sbootstrap_extra_class'); if (array_key_exists('imgCopyright', $extconf) && $extconf['imgCopyright']) { - \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette('sys_file_reference', 'imageoverlayPalette','--linebreak--,tx_t3sbootstrap_copyright','after:tx_t3sbootstrap_extra_imgclass'); + \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette('sys_file_reference', 'imageoverlayPalette', '--linebreak--,tx_t3sbootstrap_copyright', 'after:tx_t3sbootstrap_extra_imgclass'); - \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette('sys_file_reference', 'imageoverlayPalette','--linebreak--,tx_t3sbootstrap_copyright_color','after:tx_t3sbootstrap_copyright'); + \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette('sys_file_reference', 'imageoverlayPalette', '--linebreak--,tx_t3sbootstrap_copyright_color', 'after:tx_t3sbootstrap_copyright'); - if (array_key_exists('imgCopyright', $extconf) && $extconf['imgCopyright'] === '2') { - \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette('sys_file_reference', 'imageoverlayPalette','--linebreak--,tx_t3sbootstrap_copyright_source','after:tx_t3sbootstrap_copyright_color'); - } + if (array_key_exists('imgCopyright', $extconf) && $extconf['imgCopyright'] === '2') { + \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette('sys_file_reference', 'imageoverlayPalette', '--linebreak--,tx_t3sbootstrap_copyright_source', 'after:tx_t3sbootstrap_copyright_color'); + } } if (array_key_exists('linkHoverEffect', $extconf) && $extconf['linkHoverEffect'] === '1') { - \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette('sys_file_reference', 'imageoverlayPalette','--linebreak--,tx_t3sbootstrap_hover_effect','after:tx_t3sbootstrap_extra_imgclass'); + \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette('sys_file_reference', 'imageoverlayPalette', '--linebreak--,tx_t3sbootstrap_hover_effect', 'after:tx_t3sbootstrap_extra_imgclass'); } if (array_key_exists('lazyLoad', $extconf) && $extconf['lazyLoad'] === '2') { - \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette('sys_file_reference', 'imageoverlayPalette','--linebreak--,tx_t3sbootstrap_lazy_load','after:tx_t3sbootstrap_extra_imgclass'); + \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette('sys_file_reference', 'imageoverlayPalette', '--linebreak--,tx_t3sbootstrap_lazy_load', 'after:tx_t3sbootstrap_extra_imgclass'); } if (array_key_exists('imgtag', $extconf) && $extconf['imgtag']) { - \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette('sys_file_reference', 'imageoverlayPalette','--linebreak--,tx_t3sbootstrap_imgtag','after:tx_t3sbootstrap_description_align'); + \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette('sys_file_reference', 'imageoverlayPalette', '--linebreak--,tx_t3sbootstrap_imgtag', 'after:tx_t3sbootstrap_description_align'); } if (array_key_exists('ratio', $extconf) && $extconf['ratio']) { - \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette('sys_file_reference', 'videoOverlayPalette','--linebreak--,tx_t3sbootstrap_video_ratio','after:autoplay'); - \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette('sys_file_reference', 'imageoverlayPalette','--linebreak--,tx_t3sbootstrap_shift_vertical','after:tx_t3sbootstrap_description_align'); - \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette('sys_file_reference', 'imageoverlayPalette','--linebreak--,tx_t3sbootstrap_shift_horizontal','after:tx_t3sbootstrap_shift_vertical'); -} \ No newline at end of file + \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette('sys_file_reference', 'videoOverlayPalette', '--linebreak--,tx_t3sbootstrap_video_ratio', 'after:autoplay'); + \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette('sys_file_reference', 'imageoverlayPalette', '--linebreak--,tx_t3sbootstrap_shift_vertical', 'after:tx_t3sbootstrap_description_align'); + \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette('sys_file_reference', 'imageoverlayPalette', '--linebreak--,tx_t3sbootstrap_shift_horizontal', 'after:tx_t3sbootstrap_shift_vertical'); +} diff --git a/Configuration/TypoScript/constants.typoscript b/Configuration/TypoScript/constants.typoscript index 9be2dfdd..2b00f75e 100644 --- a/Configuration/TypoScript/constants.typoscript +++ b/Configuration/TypoScript/constants.typoscript @@ -105,7 +105,7 @@ bootstrap.cdn { # cat=bootstrap-cdn/c-integrity/42; type=small; label=G Lightbox: glightboxIntegrity = # cat=bootstrap-cdn/c-integrity/50; type=small; label=Font Awesome: - fontawesomeIntegrity = sha512-z3gLpd7yknf1YoNbCzqRKc4qyor8gaKU1qmn+CShxbuBusANI9QpRohGBreCFkKxLhei6S9CQXFEbbKuqLg0DA== + fontawesomeIntegrity = sha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA== } bootstrap.image { diff --git a/Resources/Private/Backend/Partials/Config/Accordion.html b/Resources/Private/Backend/Partials/Config/Accordion.html index 1eb41e5e..a9c90ebd 100644 --- a/Resources/Private/Backend/Partials/Config/Accordion.html +++ b/Resources/Private/Backend/Partials/Config/Accordion.html @@ -38,10 +38,10 @@

    - + - Hide Option 'navbar_dark_mode' if Bootstrap is not > v5.2.99 + Hide Option 'general_override' on siteroot diff --git a/Resources/Private/Backend/Templates/Config/Dashboard.html b/Resources/Private/Backend/Templates/Config/Dashboard.html index 00e50c7f..ac147aa5 100644 --- a/Resources/Private/Backend/Templates/Config/Dashboard.html +++ b/Resources/Private/Backend/Templates/Config/Dashboard.html @@ -38,7 +38,7 @@

    Overview of the settings in the EM Config

    Backend Preview + target="_blank" title="More information!" style="margin-top: .1rem;">
    @@ -99,7 +99,7 @@
    Custom SCSS + target="_blank" title="More information!" style="margin-top: .1rem;">
    diff --git a/Resources/Private/Extensions/indexed_search/Resources/Private/Templates/Search/Search.html b/Resources/Private/Extensions/indexed_search/Resources/Private/Templates/Search/Search.html index c2964868..5178dd7e 100644 --- a/Resources/Private/Extensions/indexed_search/Resources/Private/Templates/Search/Search.html +++ b/Resources/Private/Extensions/indexed_search/Resources/Private/Templates/Search/Search.html @@ -3,7 +3,6 @@ -

    {result.categoryTitle}

    @@ -51,11 +50,11 @@

    {result.categoryTitle}

    - +
    - +

    {row.sectionTitle} {row.numResultRows}

    @@ -66,7 +65,7 @@

    {row.sectionTitle}
    - +
    diff --git a/Resources/Private/Extensions/ke_search/Configuration/TypoScript/setup.typoscript b/Resources/Private/Extensions/ke_search/Configuration/TypoScript/setup.typoscript index fabbb725..8c904d19 100644 --- a/Resources/Private/Extensions/ke_search/Configuration/TypoScript/setup.typoscript +++ b/Resources/Private/Extensions/ke_search/Configuration/TypoScript/setup.typoscript @@ -7,19 +7,36 @@ plugin.tx_kesearch_pi1 { partialRootPaths { 55 = EXT:t3sbootstrap/Resources/Private/Extensions/ke_search/Resources/Private/Partials/ } - } + + layoutRootPaths { + 55 = EXT:t3sbootstrap/Resources/Private/Extensions/ke_search/Resources/Private/Layouts/ + } + } } +plugin.tx_kesearch_pi2.highlightedWord_stdWrap.wrap = | + + plugin.tx_kesearch_pi1.cssFile = -plugin.tx_kesearch_pi2.cssFile = +#plugin.tx_kesearch_pi2.cssFile = plugin.tx_kesearch_pi2.includeFilters = 1 + lib.searchbox_html = TEXT lib.searchbox_html.value ( -
    - + +
    ) -// The action “/suchen/” ist the slug of the page you created with your result list plugin. +lib.searchboxWithButton_html = TEXT +lib.searchboxWithButton_html.value ( + +) +########################################################################################## +// The action “/suchen/” is the slug of the page you created with your result list plugin. +########################################################################################## diff --git a/Resources/Private/Extensions/ke_search/Resources/Private/Layouts/General.html b/Resources/Private/Extensions/ke_search/Resources/Private/Layouts/General.html new file mode 100644 index 00000000..37f2fb36 --- /dev/null +++ b/Resources/Private/Extensions/ke_search/Resources/Private/Layouts/General.html @@ -0,0 +1,6 @@ +
    + +.search-hits--large{font-size:50px;font-weight:700;text-align:center}.search-label--large{font-size:20px;font-weight:700;text-align:center}#kesearch_pagebrowser_bottom,.kesearch_pagebrowser{margin-top:30px}.kesearch_pagebrowser ul{--bs-pagination-padding-x:.75rem;--bs-pagination-padding-y:.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:#fff;--bs-pagination-border-width:1px;--bs-pagination-border-color:#dee2e6;--bs-pagination-border-radius:.375rem;--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:#e9ecef;--bs-pagination-hover-border-color:#dee2e6;--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:#e9ecef;--bs-pagination-focus-box-shadow:0 0 0 .25rem rgba(13,110,253,0.25);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#0d6efd;--bs-pagination-active-border-color:#0d6efd;--bs-pagination-disabled-color:#6c757d;--bs-pagination-disabled-bg:#fff;--bs-pagination-disabled-border-color:#dee2e6;display:flex;padding-left:0;list-style:none}.kesearch_pagebrowser ul li a{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.kesearch_pagebrowser ul li a.current{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-primary);border-color:var(--bs-primary)}.tx-kesearch-pi1{margin-top:2rem}#kesearch_filters .list{border:none!important;margin-bottom:0}#ke_search_sword{position:unset!important}.tx-kesearch-pi1 .minHeight{min-height:170px}.tx-kesearch-pi1 #kesearch_ordering div.ordering{float:none;max-width:600px}#ke_search_sword::placeholder,#ke_search_searchfield_sword::placeholder{opacity:.5} + + +
    diff --git a/Resources/Private/Extensions/ke_search/Resources/Private/Partials/T3SB/CalDate.html b/Resources/Private/Extensions/ke_search/Resources/Private/Partials/T3SB/CalDate.html index 54447e7e..931cbf37 100644 --- a/Resources/Private/Extensions/ke_search/Resources/Private/Partials/T3SB/CalDate.html +++ b/Resources/Private/Extensions/ke_search/Resources/Private/Partials/T3SB/CalDate.html @@ -1,7 +1,3 @@ - {f:translate(key: 'LLL:EXT:ke_search/Resources/Private/Language/locallang_searchbox.xlf:label_date')}: diff --git a/Resources/Private/Extensions/ke_search/Resources/Private/Partials/T3SB/Filters.html b/Resources/Private/Extensions/ke_search/Resources/Private/Partials/T3SB/Filters.html index 57253c8c..64f9a5eb 100644 --- a/Resources/Private/Extensions/ke_search/Resources/Private/Partials/T3SB/Filters.html +++ b/Resources/Private/Extensions/ke_search/Resources/Private/Partials/T3SB/Filters.html @@ -1,11 +1,8 @@ - -

    Filter

    + +

    Filter

    - + diff --git a/Resources/Private/Extensions/ke_search/Resources/Private/Partials/T3SB/Filters/Checkbox.html b/Resources/Private/Extensions/ke_search/Resources/Private/Partials/T3SB/Filters/Checkbox.html index 962c1710..05069e9c 100644 --- a/Resources/Private/Extensions/ke_search/Resources/Private/Partials/T3SB/Filters/Checkbox.html +++ b/Resources/Private/Extensions/ke_search/Resources/Private/Partials/T3SB/Filters/Checkbox.html @@ -1,9 +1,4 @@ -
    diff --git a/Resources/Private/Extensions/ke_search/Resources/Private/Partials/T3SB/Filters/Select.html b/Resources/Private/Extensions/ke_search/Resources/Private/Partials/T3SB/Filters/Select.html new file mode 100644 index 00000000..cba7f3e9 --- /dev/null +++ b/Resources/Private/Extensions/ke_search/Resources/Private/Partials/T3SB/Filters/Select.html @@ -0,0 +1,9 @@ + + diff --git a/Resources/Private/Extensions/ke_search/Resources/Private/Partials/T3SB/NoResults.html b/Resources/Private/Extensions/ke_search/Resources/Private/Partials/T3SB/NoResults.html new file mode 100644 index 00000000..2332aba5 --- /dev/null +++ b/Resources/Private/Extensions/ke_search/Resources/Private/Partials/T3SB/NoResults.html @@ -0,0 +1,4 @@ + +
    + {noResultsText} +
    diff --git a/Resources/Private/Extensions/ke_search/Resources/Private/Partials/T3SB/PageBrowser.html b/Resources/Private/Extensions/ke_search/Resources/Private/Partials/T3SB/PageBrowser.html new file mode 100644 index 00000000..012416bc --- /dev/null +++ b/Resources/Private/Extensions/ke_search/Resources/Private/Partials/T3SB/PageBrowser.html @@ -0,0 +1,41 @@ + + + +
    +
    {f:translate(key: 'LLL:EXT:ke_search/Resources/Private/Language/locallang_searchbox.xlf:results')} {pagination.startRecordNumber} + {f:translate(key: 'LLL:EXT:ke_search/Resources/Private/Language/locallang_searchbox.xlf:until')} {pagination.endRecordNumber} + {f:translate(key: 'LLL:EXT:ke_search/Resources/Private/Language/locallang_searchbox.xlf:of')} {numberofresults}
    +
    + +
      + +
    • + {f:translate(key: 'LLL:EXT:ke_search/Resources/Private/Language/locallang_searchbox.xlf:pagebrowser_prev')} +
    • +
      + +
    • + {page} +
    • +
      + +
    • + {f:translate(key: 'LLL:EXT:ke_search/Resources/Private/Language/locallang_searchbox.xlf:pagebrowser_next')} +
    • +
      +
    +
    +
    +
    +
    diff --git a/Resources/Private/Extensions/ke_search/Resources/Private/Partials/T3SB/ResultRow.html b/Resources/Private/Extensions/ke_search/Resources/Private/Partials/T3SB/ResultRow.html index b6feebe2..1ee6a371 100644 --- a/Resources/Private/Extensions/ke_search/Resources/Private/Partials/T3SB/ResultRow.html +++ b/Resources/Private/Extensions/ke_search/Resources/Private/Partials/T3SB/ResultRow.html @@ -1,21 +1,10 @@ - - - -.card { - border-radius: 0; - border-top-left-radius: 30px; - behavior:url(border-radius.htc); + +#kesearch_pagebrowser_top a, #kesearch_pagebrowser_bottom a { + padding: 6px 12px !important; } - -.hit { -background: rgba(0, 0, 0, 0.05); -font-weight: 700; -color: var(--bs-primary) +#kesearch_pagebrowser_top a.current, #kesearch_pagebrowser_bottom a.current { + color: #fff !important; } @@ -23,15 +12,15 @@
    -
    -

    +

    + - {resultrow.type}

    + {resultrow.type}
    -
    +
    @@ -47,7 +36,7 @@
    -
    +
    {resultrow.title}
    @@ -55,15 +44,23 @@
    {resultrow.teaser -> f:format.raw()}
    -
    + - - + + + + + + + + + - + \ No newline at end of file diff --git a/Resources/Private/Extensions/ke_search/Resources/Private/Partials/T3SB/ResultRows.html b/Resources/Private/Extensions/ke_search/Resources/Private/Partials/T3SB/ResultRows.html index 2ca52b72..760ff506 100644 --- a/Resources/Private/Extensions/ke_search/Resources/Private/Partials/T3SB/ResultRows.html +++ b/Resources/Private/Extensions/ke_search/Resources/Private/Partials/T3SB/ResultRows.html @@ -1,13 +1,12 @@ - - + +
    -
    +
    + +
    -
    +
    + +
    {queryTimeText}
    + \ No newline at end of file diff --git a/Resources/Private/Extensions/ke_search/Resources/Private/Partials/T3SB/Sorting.html b/Resources/Private/Extensions/ke_search/Resources/Private/Partials/T3SB/Sorting.html index ed44a308..394b2db1 100644 --- a/Resources/Private/Extensions/ke_search/Resources/Private/Partials/T3SB/Sorting.html +++ b/Resources/Private/Extensions/ke_search/Resources/Private/Partials/T3SB/Sorting.html @@ -1,20 +1,14 @@ - -
    -
    -
      -

      {f:translate(key: 'LLL:EXT:ke_search/Resources/Private/Language/locallang_searchbox.xlf:label_sort')}

      +
      +
        +
      • {f:translate(key: 'LLL:EXT:ke_search/Resources/Private/Language/locallang_searchbox.xlf:label_sort')}
      • - +
      +
    diff --git a/Resources/Private/Extensions/ke_search/Resources/Private/Templates/ResultList.html b/Resources/Private/Extensions/ke_search/Resources/Private/Templates/ResultList.html index 47191314..166ebbdc 100644 --- a/Resources/Private/Extensions/ke_search/Resources/Private/Templates/ResultList.html +++ b/Resources/Private/Extensions/ke_search/Resources/Private/Templates/ResultList.html @@ -1,15 +1,5 @@ - @@ -21,49 +11,75 @@ - -
    {f:translate(key: 'LLL:EXT:ke_search/Resources/Private/Language/locallang_searchbox.xlf:searchword_length_error', arguments: {0: extConf.searchWordLength})}
    -
    - - {resultListAdditionalRawContent} - - - - - - {conf.textForResults} - - - - - - - - - - - - - - - - - - - -
    {error}
    -
    -
    + +
    {f:translate(key: 'LLL:EXT:ke_search/Resources/Private/Language/locallang_searchbox.xlf:searchword_length_error', arguments: {0: extConf.searchWordLength})}
    +
    + + + {resultListAdditionalRawContent} + + + + + + + {conf.textForResults} + + + + + + + + + + + + + + + + + + +
    {error}
    +
    +
    + var numberofresults = '
    {numberofresults}
    {f:translate(key: 'LLL:EXT:ke_search/Resources/Private/Language/locallang_searchbox.xlf:num_results_plain')}
    '; var sword = document.getElementById('searchword'); sword.insertAdjacentHTML('afterend', numberofresults);
    +
    + + +var numberofresults = '
    {noResultsText}
    '; +var sword = document.getElementById('searchword'); +sword.insertAdjacentHTML('afterend', numberofresults); +
    +
    @@ -79,17 +95,32 @@ {conf.textForResults} - + - - + diff --git a/Resources/Private/Extensions/ke_search/Resources/Private/Templates/SearchForm.html b/Resources/Private/Extensions/ke_search/Resources/Private/Templates/SearchForm.html index 1e01cea1..6599efc2 100644 --- a/Resources/Private/Extensions/ke_search/Resources/Private/Templates/SearchForm.html +++ b/Resources/Private/Extensions/ke_search/Resources/Private/Templates/SearchForm.html @@ -3,12 +3,7 @@ data-namespace-typo3-fluid="true"> - @@ -63,14 +58,9 @@ - - -#search-box{border-radius:30px 0 0}#ke_search_sword{border-radius:10px 0 0}#submit-button{border-radius:0}.search-hits--large{font-size:50px;font-weight:700;text-align:center;margin-bottom:20px}.search-label--large{font-size:20px;font-weight:700;text-align:center}#kesearch_pagebrowser_bottom,.kesearch_pagebrowser{margin-top:30px}.kesearch_pagebrowser ul{--bs-pagination-padding-x:.75rem;--bs-pagination-padding-y:.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:#fff;--bs-pagination-border-width:1px;--bs-pagination-border-color:#dee2e6;--bs-pagination-border-radius:.375rem;--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:#e9ecef;--bs-pagination-hover-border-color:#dee2e6;--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:#e9ecef;--bs-pagination-focus-box-shadow:0 0 0 .25rem rgba(13,110,253,0.25);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#0d6efd;--bs-pagination-active-border-color:#0d6efd;--bs-pagination-disabled-color:#6c757d;--bs-pagination-disabled-bg:#fff;--bs-pagination-disabled-border-color:#dee2e6;display:flex;padding-left:0;list-style:none}.kesearch_pagebrowser ul li a{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.kesearch_pagebrowser ul li a.current{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-primary);border-color:var(--bs-primary)}.tx-kesearch-pi1 {margin-top:2rem;} - - -
    -
    -