pageRenderer->loadJavaScriptModule('@typo3/filelist/linkbrowser-folder-handler.js');
$this->resourceDisplayMatcher = GeneralUtility::makeInstance(Matcher::class);
$this->resourceDisplayMatcher->addMatcher(GeneralUtility::makeInstance(ResourceFolderTypeMatcher::class));
}
public function render(ServerRequestInterface $request): string
{
$contentHtml = '';
if ($this->selectedFolder !== null) {
// Create the filelist
$this->filelist->start(
$this->selectedFolder,
MathUtility::forceIntegerInRange($this->currentPage, 1, 100000),
$this->sortField,
$this->sortDirection,
Mode::BROWSE
);
$markup = [];
// Create the filelist header bar
$markup[] = '
';
$markup[] = '
';
$markup[] = '
';
$markup[] = ' ' . $this->getSortingModeButtons($request);
$markup[] = ' ' . $this->getViewModeButton($request);
$markup[] = '
';
$markup[] = '
';
$this->filelist->setResourceDisplayMatcher($this->resourceDisplayMatcher);
$this->filelist->setResourceSelectableMatcher($this->resourceSelectableMatcher);
$resource = $this->linkParts['url']['folder'] ?? null;
if ($resource instanceof ResourceInterface) {
$resourceSelectedMatcher = GeneralUtility::makeInstance(Matcher::class);
$resourceMatcher = GeneralUtility::makeInstance(ResourceMatcher::class);
$resourceMatcher->addResource($resource);
$resourceSelectedMatcher->addMatcher($resourceMatcher);
$this->filelist->setResourceSelectedMatcher($resourceSelectedMatcher);
}
$markup[] = $this->filelist->render(null, $this->view);
// Build the file upload and folder creation form
$resourceUtilityRenderer = GeneralUtility::makeInstance(ResourceUtilityRenderer::class, $this);
$markup[] = $resourceUtilityRenderer->createFolder($request, $this->selectedFolder);
$contentHtml = implode(PHP_EOL, $markup);
}
$this->view->assign('selectedFolder', $this->selectedFolder);
$this->view->assign('selectedFolderLink', (GeneralUtility::makeInstance(LinkService::class))->asString(['type' => LinkService::TYPE_FOLDER, 'folder' => $this->selectedFolder]));
$this->view->assign('content', $contentHtml);
$this->view->assign('contentOnly', (bool)($request->getQueryParams()['contentOnly'] ?? false));
$this->view->assign('treeActions', ['link']);
$this->view->assign('currentIdentifier', !empty($this->linkParts) ? $this->linkParts['url']['folder']->getCombinedIdentifier() : '');
return $this->view->render('LinkHandler/Folder');
}
}