Index: t3lib/class.t3lib_db.php =================================================================== --- t3lib/class.t3lib_db.php 2009-11-15 12:56:47.000000000 +0100 +++ t3lib/class.t3lib_db.php 2009-11-17 15:50:04.000000000 +0100 @@ -1252,15 +1252,21 @@ $error = $this->sql_error(); if ($error) { - debug( + $message = t3lib_div::view_array( array( 'caller' => 't3lib_DB::' . $func, - 'ERROR' => $error, 'lastBuiltQuery' => ($query ? $query : $this->debug_lastBuiltQuery), 'debug_backtrace' => t3lib_div::debug_trail(), - ), - 'SQL debug' + ) ); + $flashMessage = t3lib_div::makeInstance( + 't3lib_FlashMessage', + $message, + 'TYPO3 Database Error: ' . $error, + t3lib_FlashMessage::ERROR + ); + t3lib_FlashMessageQueue::addMessage($flashMessage); } } Index: t3lib/class.t3lib_div.php =================================================================== --- t3lib/class.t3lib_div.php 2009-11-17 16:14:43.000000000 +0100 +++ t3lib/class.t3lib_div.php 2009-11-17 12:51:47.000000000 +0100 @@ -3390,14 +3390,15 @@ public static function view_array($array_in) { if (is_array($array_in)) { $result=' - '; +
'; if (count($array_in) == 0) { - $result.= ''; + $result.= ''; } else { + $i = 0; foreach ($array_in as $key => $val) { - $result.= ' - - + + '; + $i++; } } $result.= '
EMPTY!
EMPTY!
'.htmlspecialchars((string)$key).''; + $result.= '
'.htmlspecialchars((string)$key).''; if (is_array($val)) { $result.=t3lib_div::view_array($val); } elseif (is_object($val)) { @@ -3405,24 +3406,25 @@ if (method_exists($val, '__toString')) { $string .= ': '.(string)$val; } - $result .= ''.nl2br(htmlspecialchars($string)).'
'; + $result .= nl2br(htmlspecialchars($string)).'
'; } else { if (gettype($val) == 'object') { $string = 'Unknown object'; } else { $string = (string)$val; } - $result.= ''.nl2br(htmlspecialchars($string)).'
'; + $result.= nl2br(htmlspecialchars($string)).'
'; } $result.= '
'; } else { - $result = ' + $result = '
- +
'.nl2br(htmlspecialchars((string)$array_in)).'
'.nl2br(htmlspecialchars((string)$array_in)).'
'; // Output it as a string. } @@ -3453,34 +3455,27 @@ * @return void */ public static function debug($var='',$brOrHeader=0) { - // buffer the output of debug if no buffering started before - if (ob_get_level()==0) { - ob_start(); - } - - if ($brOrHeader && !t3lib_div::testInt($brOrHeader)) { - echo '
'.htmlspecialchars((string)$brOrHeader).'
'; - } elseif ($brOrHeader<0) { - for($a=0;$a';} - } - + //flashMessage + $message = ''; if (is_array($var)) { - t3lib_div::print_array($var); + $message .= t3lib_div::view_array($var); } elseif (is_object($var)) { - echo '|Object:
';
-			print_r($var);
-			echo '
|
'; + $message .= '|Object:
';
+			$message .= print_r($var, TRUE);
+			$message .= '
|
'; } elseif ((string)$var!='') { - echo '|'.htmlspecialchars((string)$var).'|'; + $message .= '|'.htmlspecialchars((string)$var).'|'; } else { - echo '| debug |'; - } - - if ($brOrHeader && !t3lib_div::testInt($brOrHeader)) { - echo '
'; - } elseif ($brOrHeader>0) { - for($a=0;$a';} + $message .='| debug |'; } + + $flashMessage = t3lib_div::makeInstance( + 't3lib_FlashMessage', + $message, + 'DEBUG: ' . ($brOrHeader === 0 ? '' : htmlspecialchars($brOrHeader)), + t3lib_FlashMessage::INFO + ); + t3lib_FlashMessageQueue::addMessage($flashMessage); } Index: t3lib/class.t3lib_flashmessagequeue.php =================================================================== --- t3lib/class.t3lib_flashmessagequeue.php 2009-11-15 12:56:45.000000000 +0100 +++ t3lib/class.t3lib_flashmessagequeue.php 2009-11-17 15:08:15.000000000 +0100 @@ -55,10 +55,7 @@ $queuedFlashMessages = self::getFlashMessagesFromSession(); $queuedFlashMessages[] = $message; - $GLOBALS['BE_USER']->setAndSaveSessionData( - 'core.template.flashMessages', - $queuedFlashMessages - ); + self::persistInSessionData($queuedFlashMessages); } else { self::$messages[] = $message; } @@ -76,10 +73,7 @@ $queuedFlashMessagesFromSession = self::getFlashMessagesFromSession(); if (!empty($queuedFlashMessagesFromSession)) { // reset messages in user session - $GLOBALS['BE_USER']->setAndSaveSessionData( - 'core.template.flashMessages', - null - ); + self::persistInSessionData(null); } $queuedFlashMessages = array_merge($queuedFlashMessagesFromSession, self::$messages); @@ -118,7 +112,25 @@ return $content; } - + /** + * Persists data in user session. + * + * @param mixed $data: Data to be persisted + * @return void + */ + protected function persistInSessionData($data) { + if (TYPO3_MODE === 'FE') { + $GLOBALS['TSFE']->fe_user->setKey( + 'core.tsfe.flashMessages', + $data + ); + } elseif (TYPO3_MODE === 'BE') { + $GLOBALS['BE_USER']->setAndSaveSessionData( + 'core.template.flashMessages', + $data + ); + } + } } Index: t3lib/class.t3lib_pagerenderer.php =================================================================== --- t3lib/class.t3lib_pagerenderer.php 2009-11-15 12:56:47.000000000 +0100 +++ t3lib/class.t3lib_pagerenderer.php 2009-11-17 14:43:03.000000000 +0100 @@ -80,7 +80,8 @@ protected $cssInline = array (); protected $bodyContent; - + protected $showFlashMessages = TRUE; + protected $templateFile; protected $jsLibraryNames = array ('prototype', 'scriptaculous', 'extjs'); @@ -282,6 +283,16 @@ $this->bodyContent = $content; } + /** + * Sets Flag showFlashMessages (set to FALSE supress flashmessages + * + * @param boolean $showFlashMessages + * @return void + */ + public function setShowFlashMessages($showFlashMessages) { + $this->showFlashMessages = $showFlashMessages; + } + /*****************************************************/ /* */ /* Public Enablers */ @@ -472,6 +483,15 @@ return $this->bodyContent; } + /** + * Gets Flag showFlashMessages + * + * @return boolean + */ + public function getShowFlashMessages() { + return $this->showFlashMessages; + } + /*****************************************************/ /* */ /* Public Function to add Data */ @@ -1077,7 +1097,14 @@ $jsFooterInline = $jsInline . chr(10) . $jsFooterInline; $jsInline = ''; } - + + if ($this->showFlashMessages) { + $flashMessages = t3lib_FlashMessageQueue::renderFlashMessages(); + if (!empty($flashMessages)) { + $this->bodyContent = '
' . $flashMessages . '
' . $this->bodyContent; + } + } + $markerArray = array( 'XMLPROLOG_DOCTYPE' => $this->xmlPrologAndDocType, 'HTMLTAG' => $this->htmlTag, Index: typo3/stylesheet.css =================================================================== --- typo3/stylesheet.css 2009-11-15 12:59:07.000000000 +0100 +++ typo3/stylesheet.css 2009-11-15 16:04:35.000000000 +0100 @@ -2989,13 +2989,19 @@ } -/* Visual debugging: */ +/*** Visual debugging: ***/ +/* view_array */ +.view_array-array { + border-right: 1px solid black; + border-top: 1px solid black; +} + +.view_array-array td { + border-bottom: 1px solid black; + border-left: 1px solid black; + padding: 2px; +} -/* -h2, -h3, -h4, -div { - border: 1px dotted #666; +.view_array-key { + font-weight: bold; } -*/ Index: typo3/template.php =================================================================== --- typo3/template.php 2009-11-15 12:59:07.000000000 +0100 +++ typo3/template.php 2009-11-17 12:49:49.000000000 +0100 @@ -747,7 +747,15 @@ // Construct page header. $str = $this->pageRenderer->render(t3lib_PageRenderer::PART_HEADER); - + + if ($this->pageRenderer->getShowFlashMessages() && $this->showFlashMessages) { + // render flashmessages for old modules + $flashMessages = t3lib_FlashMessageQueue::renderFlashMessages(); + if (!empty($flashMessages)) { + $str .= '
' . $flashMessages . '
'; + } + } + $this->JScodeLibArray = array(); $this->JScode = $this->extJScode = ''; $this->JScodeArray = array(); @@ -793,7 +801,13 @@ // Logging: Can't find better place to put it: if (TYPO3_DLOG) t3lib_div::devLog('END of BACKEND session', 'template', 0, array('_FLUSH' => true)); - + + if ($this->showFlashMessages) { + $flashMessages = t3lib_FlashMessageQueue::renderFlashMessages(); + if (!empty($flashMessages)) { + $str= '
' . $flashMessages . '
' . $this->bodyContent; + } + } return $str; } @@ -1856,6 +1998,7 @@ function setModuleTemplate($filename) { // Load Prototype lib for IE event $this->pageRenderer->loadPrototype(); + $this->pageRenderer->setShowFlashMessages(FALSE); $this->loadJavascriptLib('js/iecompatibility.js'); $this->moduleTemplate = $this->getHtmlTemplate($filename); } Index: typo3/sysext/cms/tslib/class.tslib_fe.php =================================================================== --- typo3/sysext/cms/tslib/class.tslib_fe.php 2009-11-15 12:58:13.000000000 +0100 +++ typo3/sysext/cms/tslib/class.tslib_fe.php 2009-11-17 16:01:17.000000000 +0100 @@ -3401,6 +3401,37 @@ $this->contentStrReplace(); } + // get the flash messages, which are sent by extension + $flashMessages = t3lib_FlashMessageQueue::renderFlashMessages(); + if (!empty($flashMessages)) { + $flashMessages = '
' . $flashMessages . '
'; + } + // add CSS needed by + if (!empty($flashMessages)) { + $style .= ' '; + + // need to use replace to inject style needed by flash messages + $this->content = str_replace('', $style.'', $this->content); + } + // need to search for body tag and inject the flash messages right after the body tag + preg_match('/(<(body)[^>]*>)/',$this->content,$matches); + $this->content = str_replace($matches[0],$matches[0].$flashMessages,$this->content); + // Tidy up the code, if flag... if ($this->TYPO3_CONF_VARS['FE']['tidy_option'] == 'output') { $GLOBALS['TT']->push('Tidy, output','');