‪TYPO3CMS  11.5
FileBrowser.php
Go to the documentation of this file.
1 <?php
2 
3 /*
4  * This file is part of the TYPO3 CMS project.
5  *
6  * It is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU General Public License, either version 2
8  * of the License, or any later version.
9  *
10  * For the full copyright and license information, please read the
11  * LICENSE.txt file that was distributed with this source code.
12  *
13  * The TYPO3 project - inspiring people to share!
14  */
15 
17 
18 use TYPO3\CMS\Backend\Utility\BackendUtility;
35 
41 {
50  protected ‪$expandFolder;
51 
55  protected ‪$selectedFolder;
56 
60  protected ‪$searchWord;
61 
65  protected ‪$thumbnailConfiguration = [];
66 
70  protected function ‪initialize()
71  {
72  parent::initialize();
73  $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Recordlist/BrowseFiles');
74  $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/Tree/FileStorageBrowser');
75  $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/MultiRecordSelection');
76 
77  $thumbnailConfig = $this->‪getBackendUser()->‪getTSConfig()['options.']['file_list.']['thumbnail.'] ?? [];
78  if (isset($thumbnailConfig['width']) && ‪MathUtility::canBeInterpretedAsInteger($thumbnailConfig['width'])) {
79  $this->thumbnailConfiguration['width'] = (int)$thumbnailConfig['width'];
80  }
81  if (isset($thumbnailConfig['height']) && ‪MathUtility::canBeInterpretedAsInteger($thumbnailConfig['height'])) {
82  $this->thumbnailConfiguration['height'] = (int)$thumbnailConfig['height'];
83  }
84  }
85 
89  protected function ‪initVariables()
90  {
91  parent::initVariables();
92  $this->‪expandFolder = $this->‪getRequest()->getParsedBody()['expandFolder'] ?? $this->‪getRequest()->getQueryParams()['expandFolder'] ?? null;
93  $this->searchWord = $this->‪getRequest()->getParsedBody()['search_field'] ?? $this->‪getRequest()->getQueryParams()['search_field'] ?? '';
94  }
95 
102  public function ‪processSessionData($data)
103  {
104  if ($this->‪expandFolder !== null) {
105  $data['expandFolder'] = ‪$this->expandFolder;
106  ‪$store = true;
107  } else {
108  $this->‪expandFolder = $data['expandFolder'] ?? null;
109  ‪$store = false;
110  }
111  return [$data, ‪$store];
112  }
113 
117  public function ‪render()
118  {
119  $backendUser = $this->‪getBackendUser();
120 
121  // The key number 3 of the bparams contains the "allowed" string. Disallowed is not passed to
122  // the element browser at all but only filtered out in DataHandler afterwards
123  $allowedFileExtensions = ‪GeneralUtility::trimExplode(',', explode('|', $this->bparams)[3], true);
124  if (!empty($allowedFileExtensions) && $allowedFileExtensions[0] !== 'sys_file' && $allowedFileExtensions[0] !== '*') {
125  // Create new filter object
126  $filterObject = GeneralUtility::makeInstance(FileExtensionFilter::class);
127  $filterObject->setAllowedFileExtensions($allowedFileExtensions);
128  // Set file extension filters on all storages
129  $storages = $backendUser->getFileStorages();
130  foreach ($storages as $storage) {
131  $storage->addFileAndFolderNameFilter([$filterObject, 'filterFileList']);
132  }
133  }
134  if ($this->‪expandFolder) {
135  $fileOrFolderObject = null;
136 
137  // Try to fetch the folder the user had open the last time he browsed files
138  // Fallback to the default folder in case the last used folder is not existing
139  try {
140  $fileOrFolderObject = GeneralUtility::makeInstance(ResourceFactory::class)->retrieveFileOrFolderObject($this->‪expandFolder);
141  } catch (‪Exception $accessException) {
142  // We're just catching the exception here, nothing to be done if folder does not exist or is not accessible.
143  } catch (\InvalidArgumentException $driverMissingException) {
144  // We're just catching the exception here, nothing to be done if the driver does not exist anymore.
145  }
146 
147  if ($fileOrFolderObject instanceof ‪Folder) {
148  // It's a folder
149  $this->selectedFolder = $fileOrFolderObject;
150  } elseif ($fileOrFolderObject instanceof ‪FileInterface) {
151  // It's a file
152  $this->selectedFolder = $fileOrFolderObject->getParentFolder();
153  }
154  }
155  // Or get the user's default upload folder
156  if (!$this->selectedFolder) {
157  try {
158  [, $pid, $table,, $field] = explode('-', explode('|', $this->bparams)[4]);
159  if (($defaultUploadFolder = $backendUser->getDefaultUploadFolder($pid, $table, $field)) instanceof ‪FolderInterface) {
160  $this->selectedFolder = $defaultUploadFolder;
161  }
162  } catch (\‪Exception $e) {
163  // The configured default user folder does not exist
164  }
165  }
166  // Build the file upload and folder creation form
167  $uploadForm = '';
168  $createFolder = '';
169  if ($this->selectedFolder) {
170  $folderUtilityRenderer = GeneralUtility::makeInstance(FolderUtilityRenderer::class, $this);
171  $uploadForm = $folderUtilityRenderer->uploadForm($this->selectedFolder, $allowedFileExtensions);
172  $createFolder = $folderUtilityRenderer->createFolder($this->selectedFolder);
173  }
174 
175  // Getting flag for showing/not showing thumbnails:
176  $noThumbs = $backendUser->getTSConfig()['options.']['noThumbsInEB'] ?? false;
177  $_MOD_SETTINGS = [];
178  if (!$noThumbs) {
179  // MENU-ITEMS, fetching the setting for thumbnails from File>List module:
180  $_MOD_MENU = ['displayThumbs' => ''];
181  $_MOD_SETTINGS = BackendUtility::getModuleData($_MOD_MENU, GeneralUtility::_GP('SET'), 'file_list');
182  }
183  $displayThumbs = $_MOD_SETTINGS['displayThumbs'] ?? true;
184  $noThumbs = $noThumbs ?: !$displayThumbs;
185  if ($this->selectedFolder) {
186  $files = $this->‪renderFilesInFolder($this->selectedFolder, $allowedFileExtensions, $noThumbs);
187  } else {
188  $files = '';
189  }
190  $contentOnly = (bool)($this->‪getRequest()->getQueryParams()['contentOnly'] ?? false);
191 
192  $this->‪setBodyTagParameters();
193  $this->moduleTemplate->setTitle($this->‪getLanguageService()->getLL('fileSelector'));
194  $view = $this->moduleTemplate->getView();
195  $view->assignMultiple([
196  'treeEnabled' => true,
197  'treeType' => 'folder',
198  'activeFolder' => $this->selectedFolder,
199  'initialNavigationWidth' => $this->‪getBackendUser()->uc['selector']['navigation']['width'] ?? 250,
200  'content' => $files . $uploadForm . $createFolder,
201  'contentOnly' => $contentOnly,
202  ]);
203  if ($contentOnly) {
204  return $view->render();
205  }
206  return $this->moduleTemplate->renderContent();
207  }
208 
217  public function ‪renderFilesInFolder(‪FolderInterface $folder, array $extensionList = [], $noThumbs = false)
218  {
219  if (!$folder->checkActionPermission('read')) {
220  return '';
221  }
222  $lang = $this->‪getLanguageService();
223  $titleLen = (int)$this->‪getBackendUser()->uc['titleLen'];
224 
225  // Create the header of current folder:
226  $folderIcon = $this->iconFactory->getIconForResource($folder, ‪Icon::SIZE_SMALL);
227  $header = '<h4 class="text-truncate p-0 mb-1">' . $folderIcon . ' ' . htmlspecialchars($folder->‪getStorage()->‪getName() . ': ' . $folder->getReadablePath()) . '</h4>';
228 
229  if ($this->searchWord !== '') {
230  $searchDemand = ‪FileSearchDemand::createForSearchTerm($this->searchWord)->withRecursive();
231  $files = $folder->searchFiles($searchDemand);
232  } else {
233  $extensionList = !empty($extensionList) && $extensionList[0] === '*' ? [] : $extensionList;
234  $files = $this->‪getFilesInFolder($folder, $extensionList);
235  }
236 
237  // Prepare search box, since the component should always be displayed, even if no files are available
238  $searchBox = GeneralUtility::makeInstance(RecordSearchBoxComponent::class)
239  ->setSearchWord($this->searchWord)
240  ->render($this->‪getScriptUrl() . ‪HttpUtility::buildQueryString($this->‪getUrlParameters([]), '&'));
241  $searchBox = '<div class="mt-4 mb-4">' . $searchBox . '</div>';
242 
243  if (!count($files)) {
244  // No files found. Either due to an active search or simply because the folder is empty.
245  if ($this->searchWord !== '') {
246  $message = sprintf(
247  $lang->sL('LLL:EXT:recordlist/Resources/Private/Language/locallang_browse_links.xlf:no_files_search'),
248  $folder->‪getStorage()->‪getName() . ':' . $folder->getReadablePath(),
249  $this->searchWord
250  );
251  } else {
252  $message = sprintf(
253  $lang->sL('LLL:EXT:recordlist/Resources/Private/Language/locallang_browse_links.xlf:no_files'),
254  $folder->‪getStorage()->‪getName() . ':' . $folder->getReadablePath()
255  );
256  }
257 
258  return $header
259  . '<div class="shadow-sm bg-info bg-gradient p-3 mb-4 mt-4">' .
260  htmlspecialchars($message)
261  . '</div>' .
262  $searchBox;
263  }
264  $lines = [];
265 
266  $tableHeader = '
267  <thead>
268  <tr>
269  <th colspan="3" class="nowrap">
270  <div class="btn-group dropdown position-static me-1">
271  <button type="button" class="btn btn-borderless dropdown-toggle t3js-multi-record-selection-check-actions-toggle" data-bs-toggle="dropdown" data-bs-boundary="window" aria-expanded="false">
272  ' . $this->iconFactory->getIcon('content-special-div', ‪Icon::SIZE_SMALL) . '
273  </button>
274  <ul class="dropdown-menu t3js-multi-record-selection-check-actions">
275  <li>
276  <button type="button" class="btn btn-link dropdown-item disabled" data-multi-record-selection-check-action="check-all" title="' . htmlspecialchars($lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.checkAll')) . '">' .
277  $this->iconFactory->getIcon('actions-check-square', ‪Icon::SIZE_SMALL) . ' ' . htmlspecialchars($lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.checkAll')) .
278  '</button>
279  </li>
280  <li>
281  <button type="button" class="btn btn-link dropdown-item disabled" data-multi-record-selection-check-action="check-none" title="' . htmlspecialchars($lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.uncheckAll')) . '">' .
282  $this->iconFactory->getIcon('actions-square', ‪Icon::SIZE_SMALL) . ' ' . htmlspecialchars($lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.uncheckAll')) .
283  '</button>
284  </li>
285  <li>
286  <button type="button" class="btn btn-link dropdown-item" data-multi-record-selection-check-action="toggle" title="' . htmlspecialchars($lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.toggleSelection')) . '">' .
287  $this->iconFactory->getIcon('actions-document-select', ‪Icon::SIZE_SMALL) . ' ' . htmlspecialchars($lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.toggleSelection')) .
288  '</button>
289  </li>
290  </ul>
291  </div>
292  </th>
293  <th class="col-control nowrap"></th>
294  </tr>
295  </thead>';
296 
297  foreach ($files as $fileObject) {
298  // Thumbnail/size generation:
299  $imgInfo = [];
300  if (!$noThumbs && ($fileObject->isMediaFile() || $fileObject->isImage())) {
301  $processedFile = $fileObject->process(
303  $this->thumbnailConfiguration
304  );
305  $imageUrl = $processedFile->getPublicUrl();
306  $imgInfo = [
307  $fileObject->getProperty('width'),
308  $fileObject->getProperty('height'),
309  ];
310  $pDim = $imgInfo[0] . 'x' . $imgInfo[1] . ' pixels';
311  $clickIcon = '<img src="' . htmlspecialchars($imageUrl) . '"'
312  . ' width="' . $processedFile->getProperty('width') . '"'
313  . ' height="' . $processedFile->getProperty('height') . '" class="me-1" />';
314  } else {
315  $clickIcon = '';
316  $pDim = '';
317  }
318  // Create file icon:
319  $size = ' (' . GeneralUtility::formatSize($fileObject->getSize(), $this->getLanguageService()->sL('LLL:EXT:core/Resources/Private/Language/locallang_common.xlf:byteSizeUnits')) . ($pDim ? ', ' . $pDim : '') . ')';
320  $icon = '<span title="id=' . htmlspecialchars($fileObject->getUid()) . '">' . $this->iconFactory->getIconForResource($fileObject, ‪Icon::SIZE_SMALL) . '</span>';
321  if ($this->‪fileIsSelectableInFileList($fileObject, $imgInfo)) {
322  $ATag = '<a href="#" class="btn btn-default" title="' . htmlspecialchars($fileObject->getName()) . '" data-file-name="' . htmlspecialchars($fileObject->getName()) . '" data-file-uid="' . $fileObject->getUid() . '" data-close="0">';
323  $ATag .= '<span title="' . htmlspecialchars($lang->getLL('addToList')) . '">' . $this->iconFactory->getIcon('actions-add', ‪Icon::SIZE_SMALL)->render() . '</span>';
324  $ATag_alt = '<a href="#" title="' . htmlspecialchars($fileObject->getName()) . $size . '" data-file-name="' . htmlspecialchars($fileObject->getName()) . '" data-file-uid="' . $fileObject->getUid() . '" data-close="1">';
325  $ATag_e = '</a>';
326  $bulkCheckBox = '
327  <span class="form-check form-toggle">
328  <input type="checkbox" data-file-name="' . htmlspecialchars($fileObject->getName()) . '" data-file-uid="' . $fileObject->getUid() . '" name="file_' . $fileObject->getUid() . '" value="0" autocomplete="off" class="form-check-input t3js-multi-record-selection-check" />
329  </span>';
330  } else {
331  $ATag = '';
332  $ATag_alt = '';
333  $ATag_e = '';
334  $bulkCheckBox = '';
335  }
336  // Create link to showing details about the file in a window:
337  $Ahref = (string)$this->uriBuilder->buildUriFromRoute('show_item', [
338  'type' => 'file',
339  'table' => '_FILE',
340  'uid' => $fileObject->getCombinedIdentifier(),
341  'returnUrl' => $this->‪getRequest()->getAttribute('normalizedParams')->getRequestUri(),
342  ]);
343 
344  // Combine the stuff:
345  $filenameAndIcon = $ATag_alt . $icon . htmlspecialchars(GeneralUtility::fixed_lgd_cs($fileObject->getName(), $titleLen)) . $ATag_e;
346  // Show element:
347  $lines[] = '
348  <tr>
349  <td>' . $bulkCheckBox . '</td>
350  <td class="col-title nowrap">' . $filenameAndIcon . '</td>
351  <td class="nowrap">' . ($pDim ? $ATag_alt . $clickIcon . $ATag_e . $pDim : '') . '</td>
352  <td class="col-control">
353  <div class="btn-group">' . $ATag . $ATag_e . '
354  <a href="' . htmlspecialchars($Ahref) . '" class="btn btn-default" title="' . htmlspecialchars($lang->getLL('info')) . '">' . $this->iconFactory->getIcon('actions-document-info', ‪Icon::SIZE_SMALL) . '</a>
355  </td>
356  </tr>';
357  }
358 
359  $markup = [];
360  $markup[] = $searchBox;
361  $markup[] = '<div id="filelist">';
362  $markup[] = ' <div class="row row-cols-auto justify-content-between gx-0 list-header multi-record-selection-actions-wrapper">';
363  $markup[] = ' <div class="col-auto">';
364  $markup[] = ' <div class="row row-cols-auto align-items-center g-2 t3js-multi-record-selection-actions hidden">';
365  $markup[] = ' <div class="col">';
366  $markup[] = ' <strong>' . htmlspecialchars($lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.selection')) . '</strong>';
367  $markup[] = ' </div>';
368  $markup[] = ' <div class="col">';
369  $markup[] = ' <button type="button" class="btn btn-default btn-sm" data-multi-record-selection-action="import" title="' . htmlspecialchars($lang->getLL('importSelection')) . '">';
370  $markup[] = ' ' . $this->iconFactory->getIcon('actions-document-import-t3d', ‪Icon::SIZE_SMALL) . ' ' . htmlspecialchars($lang->getLL('importSelection'));
371  $markup[] = ' </button>';
372  $markup[] = ' </div>';
373  $markup[] = ' </div>';
374  $markup[] = ' </div>';
375  $markup[] = ' ' . $this->‪getThumbnailSelector();
376  $markup[] = ' </div>';
377  $markup[] = ' <table class="table table-sm table-responsive table-striped table-hover" id="typo3-filelist" data-list-container="files">';
378  $markup[] = ' ' . $tableHeader;
379  $markup[] = ' <tbody data-multi-record-selection-row-selection="true">';
380  $markup[] = ' ' . implode('', $lines);
381  $markup[] = ' </tbody>';
382  $markup[] = ' </table>';
383  $markup[] = ' </div>';
384  return $header . implode('', $markup);
385  }
386 
394  protected function ‪getFilesInFolder(FolderInterface $folder, array $extensionList)
395  {
396  if (!empty($extensionList)) {
397  $filter = GeneralUtility::makeInstance(FileExtensionFilter::class);
398  $filter->setAllowedFileExtensions($extensionList);
399  $folder->setFileAndFolderNameFilters([[$filter, 'filterFileList']]);
400  }
401  return $folder->getFiles();
402  }
403 
409  protected function ‪getThumbnailSelector(): string
410  {
411  // Getting flag for showing/not showing thumbnails:
412  if (!$this->selectedFolder || ($this->‪getBackendUser()->getTSConfig()['options.']['noThumbsInEB'] ?? false)) {
413  return '';
414  }
415 
416  $lang = $this->‪getLanguageService();
417 
418  // MENU-ITEMS, fetching the setting for thumbnails from File>List module:
419  $_MOD_MENU = ['displayThumbs' => ''];
420  $currentValue = BackendUtility::getModuleData($_MOD_MENU, GeneralUtility::_GP('SET'), 'file_list')['displayThumbs'] ?? true;
421  $addParams = ‪HttpUtility::buildQueryString($this->‪getUrlParameters(['identifier' => $this->selectedFolder->getCombinedIdentifier()]), '&');
422 
423  return '
424  <div class="col-auto">
425  <div class="form-check form-switch">
426  ' . BackendUtility::getFuncCheck('', 'SET[displayThumbs]', $currentValue, $this->thisScript, $addParams, 'id="checkDisplayThumbs"') . '
427  <label for="checkDisplayThumbs" class="form-check-label">
428  ' . htmlspecialchars($lang->sL('LLL:EXT:recordlist/Resources/Private/Language/locallang_browse_links.xlf:displayThumbs')) . '
429  </label>
430  </div>
431  </div>';
432  }
433 
443  protected function ‪fileIsSelectableInFileList(FileInterface $file, array $imgInfo)
444  {
445  return true;
446  }
447 
452  public function ‪getUrlParameters(array $values)
453  {
454  return [
455  'mode' => 'file',
456  'expandFolder' => $values['identifier'] ?? ‪$this->expandFolder,
457  'bparams' => ‪$this->bparams,
458  ];
459  }
460 
465  public function ‪isCurrentlySelectedItem(array $values)
466  {
467  return false;
468  }
469 
475  public function ‪getScriptUrl()
476  {
477  return ‪$this->thisScript;
478  }
479 }
‪TYPO3\CMS\Core\Imaging\Icon\SIZE_SMALL
‪const SIZE_SMALL
Definition: Icon.php:30
‪TYPO3\CMS\Core\Utility\GeneralUtility\trimExplode
‪static list< string > trimExplode($delim, $string, $removeEmptyValues=false, $limit=0)
Definition: GeneralUtility.php:999
‪TYPO3\CMS\Core\Resource\ProcessedFile\CONTEXT_IMAGEPREVIEW
‪const CONTEXT_IMAGEPREVIEW
Definition: ProcessedFile.php:53
‪TYPO3\CMS\Recordlist\Browser\AbstractElementBrowser\getRequest
‪getRequest()
Definition: AbstractElementBrowser.php:167
‪TYPO3\CMS\Core\Utility\MathUtility\canBeInterpretedAsInteger
‪static bool canBeInterpretedAsInteger($var)
Definition: MathUtility.php:74
‪TYPO3\CMS\Recordlist\Browser\FileBrowser\expandFolder
‪array< int, function processSessionData( $data) { if( $this->expandFolder !==null) { $data[ 'expandFolder']=$this-> expandFolder
Definition: FileBrowser.php:101
‪TYPO3\CMS\Core\Resource\FileInterface
Definition: FileInterface.php:22
‪TYPO3\CMS\Recordlist\Browser\ElementBrowserInterface\processSessionData
‪array[] processSessionData($data)
‪TYPO3\CMS\Recordlist\Browser\ElementBrowserInterface
Definition: ElementBrowserInterface.php:19
‪TYPO3\CMS\Recordlist\Browser\FileBrowser
Definition: FileBrowser.php:41
‪TYPO3\CMS\Core\Imaging\Icon
Definition: Icon.php:26
‪TYPO3\CMS\Recordlist\Browser\AbstractElementBrowser\$thisScript
‪string $thisScript
Definition: AbstractElementBrowser.php:44
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication\getTSConfig
‪array getTSConfig()
Definition: BackendUserAuthentication.php:1000
‪TYPO3\CMS\Recordlist\Browser\AbstractElementBrowser\getBackendUser
‪BackendUserAuthentication getBackendUser()
Definition: AbstractElementBrowser.php:183
‪TYPO3\CMS\Recordlist\Browser\FileBrowser\isCurrentlySelectedItem
‪bool isCurrentlySelectedItem(array $values)
Definition: FileBrowser.php:461
‪TYPO3\CMS\Recordlist\Browser\FileBrowser\getThumbnailSelector
‪string getThumbnailSelector()
Definition: FileBrowser.php:405
‪TYPO3\CMS\Core\Resource\ResourceInterface\getStorage
‪ResourceStorage getStorage()
‪TYPO3\CMS\Recordlist\Browser\FileBrowser\renderFilesInFolder
‪string renderFilesInFolder(FolderInterface $folder, array $extensionList=[], $noThumbs=false)
Definition: FileBrowser.php:213
‪TYPO3\CMS\Recordlist\Browser\FileBrowser\fileIsSelectableInFileList
‪bool fileIsSelectableInFileList(FileInterface $file, array $imgInfo)
Definition: FileBrowser.php:439
‪TYPO3\CMS\Recordlist\Browser\FileBrowser\getFilesInFolder
‪File[] getFilesInFolder(FolderInterface $folder, array $extensionList)
Definition: FileBrowser.php:390
‪TYPO3\CMS\Core\Resource\Search\FileSearchDemand
Definition: FileSearchDemand.php:26
‪TYPO3\CMS\Core\Resource\Folder
Definition: Folder.php:37
‪TYPO3\CMS\Core\Resource\ResourceFactory
Definition: ResourceFactory.php:41
‪TYPO3\CMS\Core\Utility\HttpUtility\buildQueryString
‪static string buildQueryString(array $parameters, string $prependCharacter='', bool $skipEmptyParameters=false)
Definition: HttpUtility.php:171
‪TYPO3\CMS\Recordlist\Browser\AbstractElementBrowser
Definition: AbstractElementBrowser.php:35
‪TYPO3\CMS\Core\Resource\File
Definition: File.php:24
‪TYPO3\CMS\Recordlist\Browser\FileBrowser\initVariables
‪initVariables()
Definition: FileBrowser.php:85
‪TYPO3\CMS\Recordlist\View\RecordSearchBoxComponent
Definition: RecordSearchBoxComponent.php:30
‪TYPO3\CMS\Recordlist\Browser\FileBrowser\$selectedFolder
‪FolderInterface $selectedFolder
Definition: FileBrowser.php:53
‪TYPO3\CMS\Recordlist\Browser\FileBrowser\getUrlParameters
‪string[] getUrlParameters(array $values)
Definition: FileBrowser.php:448
‪TYPO3\CMS\Core\Resource\Filter\FileExtensionFilter
Definition: FileExtensionFilter.php:28
‪TYPO3\CMS\Recordlist\Browser\FileBrowser\render
‪string render()
Definition: FileBrowser.php:113
‪TYPO3\CMS\Recordlist\Browser\FileBrowser\$thumbnailConfiguration
‪array $thumbnailConfiguration
Definition: FileBrowser.php:61
‪TYPO3\CMS\Recordlist\Browser\AbstractElementBrowser\getLanguageService
‪LanguageService getLanguageService()
Definition: AbstractElementBrowser.php:175
‪TYPO3\CMS\Recordlist\Browser\FileBrowser\$expandFolder
‪string null $expandFolder
Definition: FileBrowser.php:49
‪TYPO3\CMS\Recordlist\Browser\FileBrowser\$store
‪$store
Definition: FileBrowser.php:102
‪TYPO3\CMS\Core\Resource\ProcessedFile
Definition: ProcessedFile.php:45
‪TYPO3\CMS\Core\Resource\Exception
Definition: Exception.php:21
‪TYPO3\CMS\Recordlist\Browser\FileBrowser\initialize
‪initialize()
Definition: FileBrowser.php:66
‪TYPO3\CMS\Core\Resource\FolderInterface
Definition: FolderInterface.php:22
‪TYPO3\CMS\Core\Utility\MathUtility
Definition: MathUtility.php:22
‪TYPO3\CMS\Recordlist\View\FolderUtilityRenderer
Definition: FolderUtilityRenderer.php:33
‪TYPO3\CMS\Core\Utility\HttpUtility
Definition: HttpUtility.php:22
‪TYPO3\CMS\Recordlist\Browser\AbstractElementBrowser\$bparams
‪string $bparams
Definition: AbstractElementBrowser.php:63
‪TYPO3\CMS\Recordlist\Browser\FileBrowser\getScriptUrl
‪string getScriptUrl()
Definition: FileBrowser.php:471
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:50
‪TYPO3\CMS\Core\Resource\Search\FileSearchDemand\createForSearchTerm
‪static createForSearchTerm(string $searchTerm)
Definition: FileSearchDemand.php:70
‪TYPO3\CMS\Core\Resource\Exception
Definition: AbstractFileOperationException.php:16
‪TYPO3\CMS\Recordlist\Browser\AbstractElementBrowser\setBodyTagParameters
‪setBodyTagParameters()
Definition: AbstractElementBrowser.php:118
‪TYPO3\CMS\Recordlist\Browser
Definition: AbstractElementBrowser.php:16
‪TYPO3\CMS\Recordlist\Browser\FileBrowser\$searchWord
‪string $searchWord
Definition: FileBrowser.php:57
‪TYPO3\CMS\Core\Resource\ResourceStorage\getName
‪string getName()
Definition: ResourceStorage.php:320