47 $this->pageRenderer->loadRequireJsModule(
'TYPO3/CMS/Recordlist/BrowseFolders');
48 $this->pageRenderer->loadRequireJsModule(
'TYPO3/CMS/Backend/LegacyTree',
'function() {
49 DragDrop.table = "folders";
50 Tree.registerDragDropHandlers();
59 parent::initVariables();
60 $this->expandFolder = GeneralUtility::_GP(
'expandFolder');
71 if ($this->expandFolder !==
null) {
75 $this->expandFolder = $data[
'expandFolder'];
78 return [$data, $store];
86 $selectedFolder =
null;
87 if ($this->expandFolder) {
93 $folderTree = GeneralUtility::makeInstance(ElementBrowserFolderTreeView::class);
94 $folderTree->setLinkParameterProvider($this);
95 $tree = $folderTree->getBrowsableTree();
98 if ($selectedFolder) {
103 $content = $this->doc->startPage(htmlspecialchars($this->
getLanguageService()->getLL(
'folderSelector')));
107 $markup[] =
'<!-- Wrapper table for folder tree / filelist: -->';
108 $markup[] =
'<div class="element-browser">';
109 $markup[] =
' <div class="element-browser-panel element-browser-main">';
110 $markup[] =
' <div class="element-browser-main-sidebar">';
111 $markup[] =
' <div class="element-browser-body">';
112 $markup[] =
' ' . $tree;
113 $markup[] =
' </div>';
114 $markup[] =
' </div>';
115 $markup[] =
' <div class="element-browser-main-content">';
116 $markup[] =
' <div class="element-browser-body">';
117 $markup[] =
' ' . $this->doc->getFlashMessages();
118 $markup[] =
' ' . $folders;
119 if ($selectedFolder) {
120 $markup[] =
' ' . GeneralUtility::makeInstance(FolderUtilityRenderer::class, $this)->createFolder($selectedFolder);
122 $markup[] =
' </div>';
123 $markup[] =
' </div>';
124 $markup[] =
' </div>';
125 $markup[] =
'</div>';
126 $content .= implode(
'', $markup);
129 $content .= $this->doc->endPage();
130 return $this->doc->insertStylesAndJS($content);
148 $content .=
'<h3>' . sprintf(htmlspecialchars($lang->getLL(
'folders')) .
' (%s):', count($folders)) .
'</h3>';
152 $folderIcon =
'<a href="#" data-folder-id="' . htmlspecialchars($folderIdentifier) .
'" data-close="1">';
153 $folderIcon .= $this->iconFactory->getIcon(
'apps-filetree-folder-default',
Icon::SIZE_SMALL);
154 $folderIcon .= htmlspecialchars(GeneralUtility::fixed_lgd_cs($parentFolder->
getName(), $titleLength));
155 $folderIcon .=
'</a>';
156 $content .= $folderIcon .
'<br />';
160 foreach ($folders as $subFolder) {
161 $subFolderIdentifier = $subFolder->getCombinedIdentifier();
163 $icon =
'<span style="width: 16px; height: 16px; display: inline-block;"></span>';
164 $icon .=
'<span title="' . htmlspecialchars($subFolder->getName()) .
'">' . $this->iconFactory->getIcon(
'apps-filetree-folder-default',
Icon::SIZE_SMALL) .
'</span>';
166 $aTag =
'<a href="#" data-folder-id="' . htmlspecialchars($subFolderIdentifier) .
'" data-close="0">';
167 $aTag_alt =
'<a href="#" data-folder-id="' . htmlspecialchars($subFolderIdentifier) .
'" data-close="1">';
168 if (strstr($subFolderIdentifier,
',') || strstr($subFolderIdentifier,
'|')) {
170 $errorMessage = sprintf(htmlspecialchars($lang->getLL(
'invalidChar')),
', |');
171 $aTag =
'<a href="#" class="t3js-folderIdError" data-message="' . $errorMessage .
'">';
175 $foldernameAndIcon = $aTag_alt . $icon . htmlspecialchars(GeneralUtility::fixed_lgd_cs($subFolder->getName(), $titleLength)) . $aTag_e;
178 <td class="nowrap">' . $foldernameAndIcon .
' </td>
179 <td>' . $aTag .
'<span title="' . htmlspecialchars($lang->getLL(
'addToList')) .
'">' . $this->iconFactory->getIcon(
'actions-add',
Icon::SIZE_SMALL)->render() .
'</span>' . $aTag_e .
'</td>
184 <td colspan="3"><span style="width: 1px; height: 3px; display: inline-block;"></span></td>
193 <table border="0" cellpadding="0" cellspacing="1" id="typo3-folderList">
194 ' . implode(
'', $lines) .
'
206 'data-mode' =>
'folder'