diff --git a/typo3/sysext/filelist/Classes/LinkHandler/FileLinkHandler.php b/typo3/sysext/filelist/Classes/LinkHandler/FileLinkHandler.php index b6ae2d4e957c00db467cb1e0404fbf224643e7c1..165bc08a8cc608c8d00658d9fb902298279b8077 100644 --- a/typo3/sysext/filelist/Classes/LinkHandler/FileLinkHandler.php +++ b/typo3/sysext/filelist/Classes/LinkHandler/FileLinkHandler.php @@ -17,7 +17,9 @@ namespace TYPO3\CMS\Filelist\LinkHandler; use Psr\Http\Message\ServerRequestInterface; use TYPO3\CMS\Backend\View\FolderUtilityRenderer; +use TYPO3\CMS\Backend\View\RecordSearchBoxComponent; use TYPO3\CMS\Core\Resource\ResourceInterface; +use TYPO3\CMS\Core\Resource\Search\FileSearchDemand; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Core\Utility\MathUtility; use TYPO3\CMS\Filelist\Matcher\Matcher; @@ -60,16 +62,6 @@ class FileLinkHandler extends AbstractResourceLinkHandler { $contentHtml = ''; if ($this->selectedFolder !== null) { - $markup = []; - - // Create the filelist header bar - $markup[] = '<div class="row justify-content-between mb-2">'; - $markup[] = ' <div class="col-auto"></div>'; - $markup[] = ' <div class="col-auto">'; - $markup[] = ' ' . $this->getViewModeButton($request); - $markup[] = ' </div>'; - $markup[] = '</div>'; - // Create the filelist $this->filelist->start( $this->selectedFolder, @@ -81,6 +73,9 @@ class FileLinkHandler extends AbstractResourceLinkHandler $this->filelist->setResourceDisplayMatcher($this->resourceDisplayMatcher); $this->filelist->setResourceSelectableMatcher($this->resourceSelectableMatcher); + $searchWord = trim((string)($request->getParsedBody()['searchTerm'] ?? $request->getQueryParams()['searchTerm'] ?? '')); + $searchDemand = $searchWord !== '' ? FileSearchDemand::createForSearchTerm($searchWord)->withFolder($this->selectedFolder)->withRecursive() : null; + $resource = $this->linkParts['url']['file'] ?? null; if ($resource instanceof ResourceInterface) { $resourceSelectedMatcher = GeneralUtility::makeInstance(Matcher::class); @@ -90,9 +85,27 @@ class FileLinkHandler extends AbstractResourceLinkHandler $this->filelist->setResourceSelectedMatcher($resourceSelectedMatcher); } - $markup[] = $this->filelist->render(null, $this->view); + $markup = []; + + // Render the filelist search box + $markup[] = '<div class="mb-4">'; + $markup[] = GeneralUtility::makeInstance(RecordSearchBoxComponent::class) + ->setSearchWord($searchWord) + ->render($request, $this->filelist->createModuleUri($this->getUrlParameters([]))); + $markup[] = '</div>'; + + // Render the filelist header bar + $markup[] = '<div class="row justify-content-between mb-2">'; + $markup[] = ' <div class="col-auto"></div>'; + $markup[] = ' <div class="col-auto">'; + $markup[] = ' ' . $this->getViewModeButton($request); + $markup[] = ' </div>'; + $markup[] = '</div>'; + + // Render the filelist + $markup[] = $this->filelist->render($searchDemand, $this->view); - // Build the file upload and folder creation form + // Render the file upload and folder creation form $folderUtilityRenderer = GeneralUtility::makeInstance(FolderUtilityRenderer::class, $this); $markup[] = $folderUtilityRenderer->uploadForm($request, $this->selectedFolder); $markup[] = $folderUtilityRenderer->createFolder($request, $this->selectedFolder); diff --git a/typo3/sysext/filelist/Resources/Private/Templates/LinkHandler/File.html b/typo3/sysext/filelist/Resources/Private/Templates/LinkHandler/File.html index abd7e3bfa412b8e9e937a8c58f3077155f63a696..8b380fdf76e2541c866e2cfa2a4b15bd54806c00 100644 --- a/typo3/sysext/filelist/Resources/Private/Templates/LinkHandler/File.html +++ b/typo3/sysext/filelist/Resources/Private/Templates/LinkHandler/File.html @@ -15,7 +15,7 @@ <f:section name="Content"> <f:if condition="{selectedFolder}"> - <h4 class="text-truncate"> + <h4 class="text-truncate mb-4"> <core:iconForResource resource="{selectedFolder}" /> {selectedFolder.storage.name}: {selectedFolder.identifier} </h4> diff --git a/typo3/sysext/filelist/Resources/Private/Templates/LinkHandler/Folder.html b/typo3/sysext/filelist/Resources/Private/Templates/LinkHandler/Folder.html index 3ec41c67a8a05ba3d4512ae140b62a3ddcb4d4fd..41bb13960af8194f61e82ac32133d2db0ab2231b 100644 --- a/typo3/sysext/filelist/Resources/Private/Templates/LinkHandler/Folder.html +++ b/typo3/sysext/filelist/Resources/Private/Templates/LinkHandler/Folder.html @@ -16,7 +16,7 @@ <f:section name="Content"> <f:if condition="{selectedFolder}"> - <h4 class="text-truncate"> + <h4 class="text-truncate mb-4"> <core:iconForResource resource="{selectedFolder}" /> <f:render section="LinkWrap" contentAs="linkText" arguments="{_all}"> {selectedFolder.storage.name}: {selectedFolder.identifier}