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.= 'EMPTY! |
';
+ $result.= 'EMPTY! |
';
} else {
+ $i = 0;
foreach ($array_in as $key => $val) {
- $result.= '
- '.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.= ' |
';
+ $i++;
}
}
$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','');