46 $this->pageRenderer->loadRequireJsModule(
'TYPO3/CMS/Recordlist/BrowseDatabase');
53 parent::initVariables();
54 $this->expandPage = GeneralUtility::_GP(
'expandPage');
65 if ($this->expandPage !==
null) {
69 $this->expandPage = (int)$data[
'expandPage'];
72 return [$data, $store];
83 list(, , , $allowedTables) = explode(
'|', $this->bparams);
86 $pageTree = GeneralUtility::makeInstance(ElementBrowserPageTreeView::class);
87 $pageTree->setLinkParameterProvider($this);
88 $pageTree->ext_pArrPages = $allowedTables ===
'pages';
89 $pageTree->ext_showNavTitle = (bool)($userTsConfig[
'options.'][
'pageTree.'][
'showNavTitle'] ??
false);
90 $pageTree->ext_showPageId = (bool)($userTsConfig[
'options.'][
'pageTree.'][
'showPageIdWithTitle'] ??
false);
91 $pageTree->ext_showPathAboveMounts = (bool)($userTsConfig[
'options.'][
'pageTree.'][
'showPathAboveMounts'] ??
false);
92 $pageTree->addField(
'nav_title');
93 $tree = $pageTree->getBrowsableTree();
96 if ($allowedTables !==
'' && $allowedTables !==
'*') {
97 $tablesArr = GeneralUtility::trimExplode(
',', $allowedTables,
true);
98 $onlyRootLevel =
true;
99 foreach ($tablesArr as $currentTable) {
100 if (isset(
$GLOBALS[
'TCA'][$currentTable])) {
101 if (!isset(
$GLOBALS[
'TCA'][$currentTable][
'ctrl'][
'rootLevel']) || (
int)
$GLOBALS[
'TCA'][$currentTable][
'ctrl'][
'rootLevel'] !== 1) {
102 $onlyRootLevel =
false;
106 if ($onlyRootLevel) {
109 $this->expandPage = 0;
116 $content = $this->doc->startPage(htmlspecialchars($this->
getLanguageService()->getLL(
'recordSelector')));
120 $markup[] =
'<!-- Wrapper table for folder tree / filelist: -->';
121 $markup[] =
'<div class="element-browser">';
122 $markup[] =
' <div class="element-browser-panel element-browser-main">';
124 $markup[] =
' <div class="element-browser-main-sidebar">';
125 $markup[] =
' <div class="element-browser-body">';
127 $markup[] =
' ' . $tree;
128 $markup[] =
' </div>';
129 $markup[] =
' </div>';
131 $markup[] =
' <div class="element-browser-main-content">';
132 $markup[] =
' <div class="element-browser-body">';
133 $markup[] =
' ' . $this->doc->getFlashMessages();
134 $markup[] =
' ' . $renderedRecordList;
135 $markup[] =
' </div>';
136 $markup[] =
' </div>';
137 $markup[] =
' </div>';
138 $markup[] =
'</div>';
139 $content .= implode(
'', $markup);
142 $content .= $this->doc->endPage();
143 return $this->doc->insertStylesAndJS($content);
153 if ((
int)$this->
getBackendUser()->getSessionData(
'pageTree_temporaryMountPoint') === 0) {
156 $link =
'<p><a href="' . htmlspecialchars(GeneralUtility::linkThisScript([
'setTempDBmount' => 0])) .
'" class="btn btn-primary">'
157 . htmlspecialchars($this->
getLanguageService()->sL(
'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.temporaryDBmount')) .
'</a></p>';
170 $tmpMount = GeneralUtility::_GET(
'setTempDBmount');
171 if (isset($tmpMount)) {
172 $backendUser->setAndSaveSessionData(
'pageTree_temporaryMountPoint', (
int)$tmpMount);
175 $backendUser->initializeWebmountsForElementBrowser();
187 if ($this->expandPage ===
null || $this->expandPage < 0 || !$backendUser->isInWebMount($this->expandPage)) {
191 if (trim($tables) ===
'*') {
192 $tablesArr = array_keys(
$GLOBALS[
'TCA']);
194 $tablesArr = GeneralUtility::trimExplode(
',', $tables,
true);
200 $titleLen = (int)$backendUser->uc[
'titleLen'];
202 if (is_array($mainPageRecord)) {
203 $pText = htmlspecialchars(GeneralUtility::fixed_lgd_cs($mainPageRecord[
'title'], $titleLen));
205 $out .=
'<p>' . $this->iconFactory->getIconForRecord(
'pages', $mainPageRecord,
Icon::SIZE_SMALL)->render() .
' ';
206 if (in_array(
'pages', $tablesArr,
true)) {
207 $out .=
'<span data-uid="' . htmlspecialchars($mainPageRecord[
'uid']) .
'" data-table="pages" data-title="' . htmlspecialchars($mainPageRecord[
'title']) .
'" data-icon="">';
208 $out .=
'<a href="#" data-close="0">'
211 .
'<a href="#" data-close="1">'
225 $dbList = GeneralUtility::makeInstance(ElementBrowserRecordList::class);
228 $dbList->thumbs =
false;
229 $dbList->setIsEditable(
false);
230 $dbList->calcPerms = $backendUser->calcPerms($pageInfo);
231 $dbList->noControlPanels =
true;
232 $dbList->clickMenuEnabled =
false;
233 $dbList->tableList = implode(
',', $tablesArr);
236 list($fieldPointerString) = explode(
'|', $this->bparams);
238 $fieldPointerParts = explode(
'[', $fieldPointerString);
239 $relatingTableName = substr($fieldPointerParts[1], 0, -1);
240 $relatingFieldName = substr($fieldPointerParts[3], 0, -1);
241 if ($relatingTableName && $relatingFieldName) {
242 $dbList->setRelatingTableAndField($relatingTableName, $relatingFieldName);
247 GeneralUtility::_GP(
'table'),
249 GeneralUtility::_GP(
'search_field'),
250 GeneralUtility::_GP(
'search_levels'),
251 GeneralUtility::_GP(
'showLimit')
254 $dbList->setDispFields();
255 $dbList->generateList();
257 $out .= $dbList->getSearchBox();
260 $out .= $dbList->HTMLcode;
263 if ($dbList->table) {
264 $this->pageRenderer->loadRequireJsModule(
'TYPO3/CMS/Recordlist/FieldSelectBox');
265 $out .= $dbList->fieldSelectBox($dbList->table);
290 'expandPage' => $pid,