120 $GLOBALS[
'LANG']->includeLLFile(
'EXT:lang/locallang_mod_file_list.xlf');
121 $GLOBALS[
'LANG']->includeLLFile(
'EXT:lang/locallang_misc.xlf');
134 public function init() {
145 if ($combinedIdentifier) {
148 $storage = $fileFactory->getStorageObjectFromCombinedIdentifier($combinedIdentifier);
149 $identifier = substr($combinedIdentifier, strpos($combinedIdentifier,
':') + 1);
150 if (!$storage->hasFolder($identifier)) {
151 $identifier = $storage->getFolderIdentifierFromFileIdentifier($identifier);
154 $this->folderObject = $fileFactory->getFolderObjectFromCombinedIdentifier($storage->getUid() .
':' . $identifier);
156 if ($storage->getUid() === 0) {
157 throw new Exception\InsufficientFolderAccessPermissionsException(
'You are not allowed to access files outside your storages', 1434539815);
160 if ($this->folderObject && $storage->isProcessingFolder($this->folderObject)) {
161 $this->folderObject = $storage->getRootLevelFolder();
165 $fileStorages =
$GLOBALS[
'BE_USER']->getFileStorages();
166 $fileStorage = reset($fileStorages);
168 $this->folderObject = $fileStorage->getRootLevelFolder();
170 throw new \RuntimeException(
'Could not find any folder to be displayed.', 1349276894);
174 if ($this->folderObject && !$this->folderObject->getStorage()->isWithinFileMountBoundaries($this->folderObject)) {
175 throw new \RuntimeException(
'Folder not accessible.', 1430409089);
178 $this->folderObject = NULL;
181 $GLOBALS[
'LANG']->getLL(
'missingFolderPermissionsMessage', TRUE),
182 htmlspecialchars($this->
id)
184 $GLOBALS[
'LANG']->getLL(
'missingFolderPermissionsTitle', TRUE),
189 $this->folderObject = NULL;
191 $fileStorages =
$GLOBALS[
'BE_USER']->getFileStorages();
192 $fileStorage = reset($fileStorages);
193 if ($fileStorage instanceof \
TYPO3\CMS\Core\Resource\ResourceStorage) {
194 $this->folderObject = $fileStorage->getRootLevelFolder();
195 if (!$fileStorage->isWithinFileMountBoundaries($this->folderObject)) {
196 $this->folderObject = NULL;
201 $GLOBALS[
'LANG']->getLL(
'folderNotFoundMessage', TRUE),
202 htmlspecialchars($this->
id)
204 $GLOBALS[
'LANG']->getLL(
'folderNotFoundTitle', TRUE),
207 }
catch (\RuntimeException $e) {
208 $this->folderObject = NULL;
210 $e->getMessage() .
' (' . $e->getCode() .
')',
211 $GLOBALS[
'LANG']->getLL(
'folderNotFoundTitle', TRUE),
216 if ($this->folderObject && !$this->folderObject->getStorage()->checkFolderActionPermission(
'read', $this->folderObject)) {
217 $this->folderObject = NULL;
235 $this->MOD_MENU = array(
238 'displayThumbs' =>
'',
240 'bigControlPanel' =>
'' 256 public function main() {
259 $this->doc->backPath =
$GLOBALS[
'BACK_PATH'];
260 $this->doc->setModuleTemplate(
'EXT:filelist/Resources/Private/Templates/file_list.html');
263 $pageRenderer = $this->doc->getPageRenderer();
264 $pageRenderer->loadPrototype();
265 $pageRenderer->loadJQuery();
266 $pageRenderer->loadRequireJsModule(
'TYPO3/CMS/Filelist/FileListLocalisation');
269 if ($this->folderObject) {
273 $this->filelist->backPath =
$GLOBALS[
'BACK_PATH'];
276 if (
$GLOBALS[
'BE_USER']->getTSConfigVal(
'options.file_list.enableDisplayBigControlPanel') ===
'activated') {
277 $this->MOD_SETTINGS[
'bigControlPanel'] = TRUE;
278 } elseif (
$GLOBALS[
'BE_USER']->getTSConfigVal(
'options.file_list.enableDisplayBigControlPanel') ===
'deactivated') {
279 $this->MOD_SETTINGS[
'bigControlPanel'] = FALSE;
282 if (
$GLOBALS[
'BE_USER']->getTSConfigVal(
'options.file_list.enableDisplayThumbnails') ===
'activated') {
283 $this->MOD_SETTINGS[
'displayThumbs'] = TRUE;
284 } elseif (
$GLOBALS[
'BE_USER']->getTSConfigVal(
'options.file_list.enableDisplayThumbnails') ===
'deactivated') {
285 $this->MOD_SETTINGS[
'displayThumbs'] = FALSE;
288 if (
$GLOBALS[
'BE_USER']->getTSConfigVal(
'options.file_list.enableClipBoard') ===
'activated') {
289 $this->MOD_SETTINGS[
'clipBoard'] = TRUE;
290 } elseif (
$GLOBALS[
'BE_USER']->getTSConfigVal(
'options.file_list.enableClipBoard') ===
'deactivated') {
291 $this->MOD_SETTINGS[
'clipBoard'] = FALSE;
294 if (!isset($this->MOD_SETTINGS[
'displayThumbs'])) {
295 $this->MOD_SETTINGS[
'displayThumbs'] =
$GLOBALS[
'BE_USER']->uc[
'thumbnailsByDefault'];
297 $this->filelist->thumbs = $this->MOD_SETTINGS[
'displayThumbs'];
300 $this->filelist->clipObj->fileMode = 1;
301 $this->filelist->clipObj->initializeClipboard();
303 if ($this->cmd ==
'setCB') {
306 if (!$this->MOD_SETTINGS[
'clipBoard']) {
307 $CB[
'setP'] =
'normal';
309 $this->filelist->clipObj->setCmd($CB);
310 $this->filelist->clipObj->cleanCurrent();
312 $this->filelist->clipObj->endClipboard();
314 if ($this->cmd ==
'delete') {
319 foreach ($items as $v) {
320 $FILE[
'delete'][] = array(
'data' => $v);
324 $fileProcessor->init(array(),
$GLOBALS[
'TYPO3_CONF_VARS'][
'BE'][
'fileExtensions']);
325 $fileProcessor->setActionPermissions();
326 $fileProcessor->dontCheckForUnique = $this->overwriteExistingFiles ? 1 : 0;
327 $fileProcessor->start($FILE);
328 $fileProcessor->processData();
329 $fileProcessor->pushErrorMessagesToFlashMessageQueue();
332 if (!isset($this->MOD_SETTINGS[
'sort'])) {
334 $this->MOD_SETTINGS[
'sort'] =
'file';
335 $this->MOD_SETTINGS[
'reverse'] = 0;
339 $this->filelist->start($this->folderObject, $this->pointer, $this->MOD_SETTINGS[
'sort'], $this->MOD_SETTINGS[
'reverse'], $this->MOD_SETTINGS[
'clipBoard'], $this->MOD_SETTINGS[
'bigControlPanel']);
341 $this->filelist->generateList();
343 $this->doc->JScode = $this->doc->wrapScriptTags(
'if (top.fsMod) top.fsMod.recentIds["file"] = "' . rawurlencode($this->
id) .
'";' . $this->filelist->CBfunctions());
345 $this->doc->getContextMenuCode();
347 list($buttons, $otherMarkers) = $this->filelist->getButtonsAndOtherMarkers($this->folderObject);
349 $otherMarkers[
'FOLDER_INFO'] = $this->filelist->getFolderInfo();
350 $docHeaderButtons = array_merge($this->
getButtons(), $buttons);
353 if ($this->folderObject->getStorage()->checkUserActionPermission(
'add',
'File')
354 && $this->folderObject->checkActionPermission(
'write')
356 $pageRenderer->loadRequireJsModule(
'TYPO3/CMS/Backend/DragUploader');
357 $pageRenderer->addInlineLanguagelabelFile(
358 \
TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath(
'lang') .
'locallang_core.xlf',
366 $pageContent = $moduleHeadline !==
'' ?
'<h1>' . $moduleHeadline .
'</h1>' :
'';
368 $pageContent .=
'<form action="' . htmlspecialchars($this->filelist->listURL()) .
'" method="post" name="dblistForm">';
369 $pageContent .= $this->filelist->HTMLcode;
370 $pageContent .=
'<input type="hidden" name="cmd" /></form>';
373 if ($this->filelist->HTMLcode) {
377 Listing options for extended view, clipboard and thumbnails 379 <div id="typo3-listOptions"> 382 if (
$GLOBALS[
'BE_USER']->getTSConfigVal(
'options.file_list.enableDisplayBigControlPanel') ===
'selectable') {
383 $pageContent .=
BackendUtility::getFuncCheck($this->
id,
'SET[bigControlPanel]', $this->MOD_SETTINGS[
'bigControlPanel'],
'',
'',
'id="bigControlPanel"') .
'<label for="bigControlPanel"> ' .
$GLOBALS[
'LANG']->getLL(
'bigControlPanel', TRUE) .
'</label><br />';
386 if (
$GLOBALS[
'BE_USER']->getTSConfigVal(
'options.file_list.enableDisplayThumbnails') ===
'selectable') {
387 $pageContent .=
BackendUtility::getFuncCheck($this->
id,
'SET[displayThumbs]', $this->MOD_SETTINGS[
'displayThumbs'],
'',
'',
'id="checkDisplayThumbs"') .
' <label for="checkDisplayThumbs">' .
$GLOBALS[
'LANG']->getLL(
'displayThumbs', TRUE) .
'</label><br />';
390 if (
$GLOBALS[
'BE_USER']->getTSConfigVal(
'options.file_list.enableClipBoard') ===
'selectable') {
391 $pageContent .=
BackendUtility::getFuncCheck($this->
id,
'SET[clipBoard]', $this->MOD_SETTINGS[
'clipBoard'],
'',
'',
'id="checkClipBoard"') .
' <label for="checkClipBoard">' .
$GLOBALS[
'LANG']->getLL(
'clipBoard', TRUE) .
'</label>';
397 if ($this->MOD_SETTINGS[
'clipBoard']) {
398 $pageContent .= $this->filelist->clipObj->printClipboard();
402 $markerArray = array(
403 'CSH' => $docHeaderButtons[
'csh'],
404 'FUNC_MENU' =>
BackendUtility::getFuncMenu($this->
id,
'SET[function]', $this->MOD_SETTINGS[
'function'], $this->MOD_MENU[
'function']),
405 'CONTENT' => ($this->errorMessage ? $this->errorMessage->render() :
'') . $pageContent,
406 'FOLDER_IDENTIFIER' => $this->folderObject->getCombinedIdentifier(),
407 'FILEDENYPATERN' =>
$GLOBALS[
'TYPO3_CONF_VARS'][
'BE'][
'fileDenyPattern'],
410 $this->content = $this->doc->moduleBody(array(), $docHeaderButtons, array_merge($markerArray, $otherMarkers));
412 $this->content = $this->doc->render(
$GLOBALS[
'LANG']->getLL(
'files'), $this->content);
415 if ($this->errorMessage) {
417 $content = $this->doc->moduleBody(array(), array_merge(array(
'REFRESH' =>
'',
'PASTE' =>
'',
'LEVEL_UP' =>
''), $this->
getButtons()), array(
'CSH' =>
'',
'TITLE' =>
'',
'FOLDER_INFO' =>
'',
'PAGE_ICON' =>
'',
'FUNC_MENU' =>
'',
'CONTENT' => $this->errorMessage->render()));
420 $this->content = $this->doc->render(
$GLOBALS[
'LANG']->getLL(
'files'),
$content);
432 $name = $this->folderObject->getName();
435 if ($this->folderObject->getIdentifier() ===
'/') {
436 $name = $this->folderObject->getStorage()->getName();
439 $name = key(\
TYPO3\CMS\Core\Resource\Utility\ListUtility::resolveSpecialFolderNames(
440 array($name => $this->folderObject)
470 if (
$GLOBALS[
'BE_USER']->mayMakeShortcut()) {
471 $buttons[
'shortcut'] = $this->doc->makeShortcutIcon(
'pointer,id,target,table', implode(
',', array_keys($this->MOD_MENU)), $this->MCONF[
'name']);
476 if ($this->folderObject && $this->folderObject->getStorage()->checkUserActionPermission(
'add',
'File') && $this->folderObject->checkActionPermission(
'write')) {
477 $buttons[
'upload'] =
'<a href="' .
$GLOBALS[
'BACK_PATH'] .
'file_upload.php?target=' . rawurlencode($this->folderObject->getCombinedIdentifier()) .
'&returnUrl=' . rawurlencode($this->filelist->listURL()) .
'" id="button-upload" title="' .
$GLOBALS[
'LANG']->makeEntities(
$GLOBALS[
'LANG']->sL(
'LLL:EXT:lang/locallang_core.xlf:cm.upload', TRUE)) .
'">' . \
TYPO3\CMS\Backend\Utility\
IconUtility::getSpriteIcon(
'actions-edit-upload') .
'</a>';
480 if ($this->folderObject && $this->folderObject->checkActionPermission(
'write')
481 && ($this->folderObject->getStorage()->checkUserActionPermission(
'add',
'File') || $this->folderObject->checkActionPermission(
'add'))
483 $buttons[
'new'] =
'<a href="' .
$GLOBALS[
'BACK_PATH'] .
'file_newfolder.php?target=' . rawurlencode($this->folderObject->getCombinedIdentifier()) .
'&returnUrl=' . rawurlencode($this->filelist->listURL()) .
'" title="' .
$GLOBALS[
'LANG']->makeEntities(
$GLOBALS[
'LANG']->sL(
'LLL:EXT:lang/locallang_core.xlf:cm.new', TRUE)) .
'">' . \
TYPO3\CMS\Backend\Utility\
IconUtility::getSpriteIcon(
'actions-document-new') .
'</a>';
static getFuncCheck($mainParams, $elementName, $currentValue, $script='', $addParams='', $tagParams='')
static forceIntegerInRange($theInt, $min, $max=2000000000, $defaultValue=0)
static cshItem($table, $field, $BACK_PATH, $wrap='', $onlyIconMode=FALSE, $styleAttrib='')
static getMaxUploadFileSize($localLimit=0)
static makeInstance($className)
static getModuleData($MOD_MENU, $CHANGED_SETTINGS, $modName, $type='', $dontValidateList='', $setDefaultList='')
static getSpriteIcon($iconName, array $options=array(), array $overlays=array())
static getFuncMenu($mainParams, $elementName, $currentValue, $menuItems, $script='', $addparams='')
if(!defined('TYPO3_MODE')) $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_userauth.php']['logoff_pre_processing'][]