Beispiel #1
0
 /**
  * Render a FlashMessage across all TYPO3 version supported
  * @param FlashMessage $flashMessage
  * @return string HTML
  */
 private function renderFlashMessage(FlashMessage $flashMessage)
 {
     // From TYPO3 8.0 and higher, we can use getMessageAsMarkup(), but everything older should use render() method
     if (is_callable([$flashMessage, 'getMessageAsMarkup'])) {
         return $flashMessage->getMessageAsMarkup();
     } else {
         return $flashMessage->render();
     }
 }
 /**
  * Adds a message either to the BE_USER session (if the $message has the storeInSession flag set)
  * or it adds the message to self::$messages.
  *
  * @param object $message Instance of t3lib_FlashMessage, representing a message
  * @return void
  */
 public static function addMessage(\TYPO3\CMS\Core\Messaging\FlashMessage $message)
 {
     if ($message->isSessionMessage()) {
         $queuedFlashMessages = self::getFlashMessagesFromSession();
         $queuedFlashMessages[] = $message;
         self::storeFlashMessagesInSession($queuedFlashMessages);
     } else {
         self::$messages[] = $message;
     }
 }
 /**
  * Output FlashMessage
  *
  * @param FlashMessage $message
  *
  * @return void
  */
 public function outputMessage($message = NULL)
 {
     if ($message->getTitle()) {
         $this->outputLine($message->getTitle());
     }
     if ($message->getMessage()) {
         $this->outputLine($message->getMessage());
     }
     if ($message->getSeverity() !== FlashMessage::OK) {
         $this->sendAndExit(1);
     }
 }
Beispiel #4
0
 /**
  * @return void
  */
 public function missingFolderAction()
 {
     if ($this->errorMessage) {
         $this->errorMessage->setSeverity(FlashMessage::ERROR);
         $this->controllerContext->getFlashMessageQueue('core.template.flashMessages')->addMessage($this->errorMessage);
     }
 }
 /**
  * @todo missing docblock
  */
 function main()
 {
     $buffer = '';
     $registry = GeneralUtility::makeInstance('KayStrobach\\Dyncss\\Configuration\\BeRegistry');
     $handlers = $registry->getAllFileHandler();
     if (count($handlers)) {
         foreach ($handlers as $extension => $class) {
             $parser = new $class();
             $buffer .= '<tr><td>*.' . $extension . '</td><td>' . $class . '</td><td>' . $parser->getVersion() . '</td></tr>';
         }
         $flashMessage = new FlashMessage('Congrats, you have ' . count($handlers) . ' handlers registered.', '', FlashMessage::OK);
         return $flashMessage->render() . '<table class="t3-table"><thead><tr><th>extension</th><th>class</th><th>version</th></tr></thead>' . $buffer . '</table>';
     } else {
         $flashMessage = new FlashMessage('Please install one of the dyncss_* extensions', 'No handler registered! - No dynamic css is handled at all ;/', FlashMessage::ERROR);
         return $flashMessage->render();
     }
 }
    /**
     * Main function, creating the listing
     *
     * @return void
     */
    public function main()
    {
        // Initialize the template object
        $this->doc = GeneralUtility::makeInstance(DocumentTemplate::class);
        $this->doc->backPath = $GLOBALS['BACK_PATH'];
        $this->doc->setModuleTemplate('EXT:filelist/Resources/Private/Templates/file_list.html');
        /** @var $pageRenderer \TYPO3\CMS\Core\Page\PageRenderer */
        $pageRenderer = $this->doc->getPageRenderer();
        $pageRenderer->loadJQuery();
        $pageRenderer->loadRequireJsModule('TYPO3/CMS/Filelist/FileListLocalisation');
        // There there was access to this file path, continue, make the list
        if ($this->folderObject) {
            // Create filelisting object
            $this->filelist = GeneralUtility::makeInstance(FileList::class);
            $this->filelist->backPath = $GLOBALS['BACK_PATH'];
            // Apply predefined values for hidden checkboxes
            // Set predefined value for DisplayBigControlPanel:
            $backendUser = $this->getBackendUser();
            if ($backendUser->getTSConfigVal('options.file_list.enableDisplayBigControlPanel') === 'activated') {
                $this->MOD_SETTINGS['bigControlPanel'] = TRUE;
            } elseif ($backendUser->getTSConfigVal('options.file_list.enableDisplayBigControlPanel') === 'deactivated') {
                $this->MOD_SETTINGS['bigControlPanel'] = FALSE;
            }
            // Set predefined value for DisplayThumbnails:
            if ($backendUser->getTSConfigVal('options.file_list.enableDisplayThumbnails') === 'activated') {
                $this->MOD_SETTINGS['displayThumbs'] = TRUE;
            } elseif ($backendUser->getTSConfigVal('options.file_list.enableDisplayThumbnails') === 'deactivated') {
                $this->MOD_SETTINGS['displayThumbs'] = FALSE;
            }
            // Set predefined value for Clipboard:
            if ($backendUser->getTSConfigVal('options.file_list.enableClipBoard') === 'activated') {
                $this->MOD_SETTINGS['clipBoard'] = TRUE;
            } elseif ($backendUser->getTSConfigVal('options.file_list.enableClipBoard') === 'deactivated') {
                $this->MOD_SETTINGS['clipBoard'] = FALSE;
            }
            // If user never opened the list module, set the value for displayThumbs
            if (!isset($this->MOD_SETTINGS['displayThumbs'])) {
                $this->MOD_SETTINGS['displayThumbs'] = $backendUser->uc['thumbnailsByDefault'];
            }
            $this->filelist->thumbs = $this->MOD_SETTINGS['displayThumbs'];
            // Create clipboard object and initialize that
            $this->filelist->clipObj = GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Clipboard\Clipboard::class);
            $this->filelist->clipObj->fileMode = 1;
            $this->filelist->clipObj->initializeClipboard();
            $CB = GeneralUtility::_GET('CB');
            if ($this->cmd == 'setCB') {
                $CB['el'] = $this->filelist->clipObj->cleanUpCBC(array_merge(GeneralUtility::_POST('CBH'), (array) GeneralUtility::_POST('CBC')), '_FILE');
            }
            if (!$this->MOD_SETTINGS['clipBoard']) {
                $CB['setP'] = 'normal';
            }
            $this->filelist->clipObj->setCmd($CB);
            $this->filelist->clipObj->cleanCurrent();
            // Saves
            $this->filelist->clipObj->endClipboard();
            // If the "cmd" was to delete files from the list (clipboard thing), do that:
            if ($this->cmd == 'delete') {
                $items = $this->filelist->clipObj->cleanUpCBC(GeneralUtility::_POST('CBC'), '_FILE', 1);
                if (!empty($items)) {
                    // Make command array:
                    $FILE = array();
                    foreach ($items as $v) {
                        $FILE['delete'][] = array('data' => $v);
                    }
                    // Init file processing object for deleting and pass the cmd array.
                    $fileProcessor = GeneralUtility::makeInstance(ExtendedFileUtility::class);
                    $fileProcessor->init(array(), $GLOBALS['TYPO3_CONF_VARS']['BE']['fileExtensions']);
                    $fileProcessor->setActionPermissions();
                    $fileProcessor->dontCheckForUnique = $this->overwriteExistingFiles ? 1 : 0;
                    $fileProcessor->start($FILE);
                    $fileProcessor->processData();
                    $fileProcessor->pushErrorMessagesToFlashMessageQueue();
                }
            }
            if (!isset($this->MOD_SETTINGS['sort'])) {
                // Set default sorting
                $this->MOD_SETTINGS['sort'] = 'file';
                $this->MOD_SETTINGS['reverse'] = 0;
            }
            // Start up filelisting object, include settings.
            $this->pointer = MathUtility::forceIntegerInRange($this->pointer, 0, 100000);
            $this->filelist->start($this->folderObject, $this->pointer, $this->MOD_SETTINGS['sort'], $this->MOD_SETTINGS['reverse'], $this->MOD_SETTINGS['clipBoard'], $this->MOD_SETTINGS['bigControlPanel']);
            // Generate the list
            $this->filelist->generateList();
            // Set top JavaScript:
            $this->doc->JScode = $this->doc->wrapScriptTags('if (top.fsMod) top.fsMod.recentIds["file"] = "' . rawurlencode($this->id) . '";' . $this->filelist->CBfunctions());
            // This will return content necessary for the context sensitive clickmenus to work: bodytag events, JavaScript functions and DIV-layers.
            $this->doc->getContextMenuCode();
            // Setting up the buttons and markers for docheader
            list($buttons, $otherMarkers) = $this->filelist->getButtonsAndOtherMarkers($this->folderObject);
            // add the folder info to the marker array
            $otherMarkers['FOLDER_INFO'] = $this->filelist->getFolderInfo();
            $docHeaderButtons = array_merge($this->getButtons(), $buttons);
            // Include DragUploader only if we have write access
            if ($this->folderObject->getStorage()->checkUserActionPermission('add', 'File') && $this->folderObject->checkActionPermission('write')) {
                $pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/DragUploader');
                $pageRenderer->addInlineLanguagelabelFile(ExtensionManagementUtility::extPath('lang') . 'locallang_core.xlf', 'file_upload');
            }
            // Build the <body> for the module
            $moduleHeadline = $this->getModuleHeadline();
            // Create output
            $pageContent = $moduleHeadline !== '' ? '<h1>' . $moduleHeadline . '</h1>' : '';
            $pageContent .= '<form action="' . htmlspecialchars($this->filelist->listURL()) . '" method="post" name="dblistForm">';
            $pageContent .= $this->filelist->HTMLcode;
            $pageContent .= '<input type="hidden" name="cmd" /></form>';
            // Making listing options:
            if ($this->filelist->HTMLcode) {
                $pageContent .= '

					<!--
						Listing options for extended view, clipboard and thumbnails
					-->
					<div id="typo3-listOptions">
				';
                // Add "display bigControlPanel" checkbox:
                if ($backendUser->getTSConfigVal('options.file_list.enableDisplayBigControlPanel') === 'selectable') {
                    $pageContent .= '<div class="checkbox">' . '<label for="bigControlPanel">' . BackendUtility::getFuncCheck($this->id, 'SET[bigControlPanel]', $this->MOD_SETTINGS['bigControlPanel'], '', '', 'id="bigControlPanel"') . $this->getLanguageService()->getLL('bigControlPanel', TRUE) . '</label>' . '</div>';
                }
                // Add "display thumbnails" checkbox:
                if ($backendUser->getTSConfigVal('options.file_list.enableDisplayThumbnails') === 'selectable') {
                    $pageContent .= '<div class="checkbox">' . '<label for="checkDisplayThumbs">' . BackendUtility::getFuncCheck($this->id, 'SET[displayThumbs]', $this->MOD_SETTINGS['displayThumbs'], '', '', 'id="checkDisplayThumbs"') . $this->getLanguageService()->getLL('displayThumbs', TRUE) . '</label>' . '</div>';
                }
                // Add "clipboard" checkbox:
                if ($backendUser->getTSConfigVal('options.file_list.enableClipBoard') === 'selectable') {
                    $pageContent .= '<div class="checkbox">' . '<label for="checkClipBoard">' . BackendUtility::getFuncCheck($this->id, 'SET[clipBoard]', $this->MOD_SETTINGS['clipBoard'], '', '', 'id="checkClipBoard"') . $this->getLanguageService()->getLL('clipBoard', TRUE) . '</label>' . '</div>';
                }
                $pageContent .= '
					</div>
				';
                // Set clipboard:
                if ($this->MOD_SETTINGS['clipBoard']) {
                    $pageContent .= $this->filelist->clipObj->printClipboard();
                    $pageContent .= BackendUtility::cshItem('xMOD_csh_corebe', 'filelist_clipboard');
                }
            }
            $markerArray = array('CSH' => $docHeaderButtons['csh'], 'FUNC_MENU' => BackendUtility::getFuncMenu($this->id, 'SET[function]', $this->MOD_SETTINGS['function'], $this->MOD_MENU['function']), 'CONTENT' => ($this->errorMessage ? $this->errorMessage->render() : '') . $pageContent, 'FOLDER_IDENTIFIER' => $this->folderObject->getCombinedIdentifier(), 'FILEDENYPATERN' => $GLOBALS['TYPO3_CONF_VARS']['BE']['fileDenyPattern'], 'MAXFILESIZE' => GeneralUtility::getMaxUploadFileSize() * 1024);
            $this->content = $this->doc->moduleBody(array(), $docHeaderButtons, array_merge($markerArray, $otherMarkers));
            // Renders the module page
            $this->content = $this->doc->render($this->getLanguageService()->getLL('files'), $this->content);
        } else {
            $content = '';
            if ($this->errorMessage) {
                $this->errorMessage->setSeverity(FlashMessage::ERROR);
                $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()));
            }
            // Create output - no access (no warning though)
            $this->content = $this->doc->render($this->getLanguageService()->getLL('files'), $content);
        }
    }
Beispiel #7
0
 /**
  * Build markup for a FlashMessage.
  *
  * @param FlashMessage $flashMessage
  *
  * @return string
  * @internal
  * @TODO: This method is only a temporary solution and must be cleaned up later within a fluid view
  */
 protected function buildFlashMessageMarkup(FlashMessage $flashMessage)
 {
     $classes = array(FlashMessage::NOTICE => 'notice', FlashMessage::INFO => 'info', FlashMessage::OK => 'success', FlashMessage::WARNING => 'warning', FlashMessage::ERROR => 'danger');
     $icons = array(FlashMessage::NOTICE => 'lightbulb-o', FlashMessage::INFO => 'info', FlashMessage::OK => 'check', FlashMessage::WARNING => 'exclamation', FlashMessage::ERROR => 'times');
     $title = trim($flashMessage->getTitle());
     $output = '';
     $output .= '<div class="alert alert-' . $classes[$flashMessage->getSeverity()] . '" style="margin-top: 20px;">';
     $output .= '  <div class="media">';
     $output .= '    <div class="media-left">';
     $output .= '      <span class="fa-stack fa-lg">';
     $output .= '        <i class="fa fa-circle fa-stack-2x"></i>';
     $output .= '        <i class="fa fa-' . $icons[$flashMessage->getSeverity()] . ' fa-stack-1x"></i>';
     $output .= '      </span>';
     $output .= '    </div>';
     $output .= '    <div class="media-body">';
     if (!empty($title)) {
         $output .= '      <h4 class="alert-title">' . htmlspecialchars($title) . '</h4>';
     }
     $output .= '      <div class="alert-message">' . htmlspecialchars($flashMessage->getMessage()) . '</div>';
     $output .= '    </div>';
     $output .= '  </div>';
     $output .= '</div>';
     return $output;
 }
 /**
  * @param \TYPO3\CMS\Core\Messaging\FlashMessage $flashMessage
  */
 public function enqueueAjaxFlashMessageCallback(\TYPO3\CMS\Core\Messaging\FlashMessage $flashMessage)
 {
     $this->assertFalse($flashMessage->isSessionMessage());
 }
 /**
  * @param string $message
  * @param integer $severity
  * @param string $title
  * @return NULL
  */
 public function message($message, $severity = GeneralUtility::SYSLOG_SEVERITY_INFO, $title = 'Flux Debug')
 {
     if (1 > $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['flux']['setup']['debugMode']) {
         return NULL;
     }
     $hash = $message . $severity;
     if (TRUE === isset(self::$sentDebugMessages[$hash])) {
         return NULL;
     }
     if (2 == $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['flux']['setup']['debugMode'] && TRUE === in_array($severity, self::$friendlySeverities)) {
         return NULL;
     }
     $isAjaxCall = (bool) 0 < GeneralUtility::_GET('ajaxCall');
     $flashMessage = new FlashMessage($message, $title, $severity);
     $flashMessage->setStoreInSession($isAjaxCall);
     FlashMessageQueue::addMessage($flashMessage);
     self::$sentDebugMessages[$hash] = TRUE;
     return NULL;
 }
Beispiel #10
0
 /**
  * @param string $message
  * @param integer $severity
  * @param string $title
  * @return NULL
  */
 public function message($message, $severity = GeneralUtility::SYSLOG_SEVERITY_INFO, $title = 'Flux Debug')
 {
     $hash = $message . $severity;
     $disabledDebugMode = (bool) (1 < $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['flux']['setup']['debugMode']);
     $alreadySent = TRUE === isset($this->sentDebugMessages[$hash]);
     $shouldExcludedFriendlySeverities = 2 == $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['flux']['setup']['debugMode'];
     $isExcludedSeverity = TRUE === $shouldExcludedFriendlySeverities && TRUE === in_array($severity, self::$friendlySeverities);
     if (TRUE === $disabledDebugMode || TRUE === $alreadySent || TRUE === $isExcludedSeverity) {
         return NULL;
     }
     $isAjaxCall = (bool) 0 < GeneralUtility::_GET('ajaxCall');
     $flashMessage = new FlashMessage($message, $title, $severity);
     $flashMessage->setStoreInSession($isAjaxCall);
     $flashMessageQueue = new FlashMessageQueue('flux');
     $flashMessageQueue->addMessage($flashMessage);
     $this->sentDebugMessages[$hash] = TRUE;
     return NULL;
 }