Index: extbase/Classes/MVC/Controller/FlashMessage.php =================================================================== --- extbase/Classes/MVC/Controller/FlashMessage.php (revision 0) +++ extbase/Classes/MVC/Controller/FlashMessage.php (revision 0) @@ -0,0 +1,167 @@ + 'notice', + self::INFO => 'information', + self::OK => 'ok', + self::WARNING => 'warning', + self::ERROR => 'error', + ); + + /** + * @var DateTime The message's creation date + */ + protected $time; + + /** + * Default constructor + * + * @param string $message The message + * @param integer $severity Optional severity, must be either of Tx_Extbase_MVC_Controller_FlashMessage::NOTICE, Tx_Extbase_MVC_Controller_FlashMessage::INFO, Tx_Extbase_MVC_Controller_FlashMessage::OK, Tx_Extbase_MVC_Controller_FlashMessage::WARNING or Tx_Extbase_MVC_Controller_FlashMessage::ERROR. Default is Tx_Extbase_MVC_Controller_FlashMessage::OK. + * @return void + */ + public function __construct($message, $severity = self::OK) { + $this->setMessage($message); + $this->setSeverity($severity); + $this->setTime(new DateTime()); + } + + /** + * Gets the message + * + * @return string The message + */ + public function getMessage() { + return $this->message; + } + + /** + * Sets the message + * + * @param string $message The message + * @return void + */ + public function setMessage($message) { + $this->message = (string)$message; + } + + /** + * Gets the message' severity + * + * @return integer The message' severity, either of Tx_Extbase_MVC_Controller_FlashMessage::NOTICE, Tx_Extbase_MVC_Controller_FlashMessage::INFO, Tx_Extbase_MVC_Controller_FlashMessage::OK, Tx_Extbase_MVC_Controller_FlashMessage::WARNING or Tx_Extbase_MVC_Controller_FlashMessage::ERROR + */ + public function getSeverity() { + return $this->severity; + } + + /** + * Sets the message' severity + * + * @param integer $severity The severity, must be either of Tx_Extbase_MVC_Controller_FlashMessage::NOTICE, Tx_Extbase_MVC_Controller_FlashMessage::INFO, Tx_Extbase_MVC_Controller_FlashMessage::OK, Tx_Extbase_MVC_Controller_FlashMessage::WARNING or Tx_Extbase_MVC_Controller_FlashMessage::ERROR. Default is Tx_Extbase_MVC_Controller_FlashMessage::OK. + * @return void + */ + public function setSeverity($severity = self::OK) { + $this->severity = t3lib_div::intInRange( + $severity, + self::NOTICE, // minimum + self::ERROR, // maximum + self::OK // default if out of bounds + ); + } + + /** + * Gets the message' severity class name + * + * @return string The message' severity class name + */ + public function getClass() { + return 'message-' . $this->classes[$this->severity]; + } + + /** + * Gets the message's creation date + * + * @return DateTime The DateTime object indicating when this message was created. + */ + public function getTime() { + return $this->time; + } + + /** + * Sets the message's creation date + * + * @param DateTime The DateTime object indicating when this message was created. + * @return void + */ + public function setTime(DateTime $time) { + $this->time = $time; + } + + public function __toString() { + $severities = array( + self::NOTICE => 'NOTICE', + self::INFO => 'INFO', + self::OK => 'OK', + self::WARNING => 'WARNING', + self::ERROR => 'ERROR', + ); + + return $severities[$this->severity] . ': ' . $this->message; + } + +} +?> \ No newline at end of file Index: extbase/Classes/MVC/Controller/FlashMessages.php =================================================================== --- extbase/Classes/MVC/Controller/FlashMessages.php (revision 2527) +++ extbase/Classes/MVC/Controller/FlashMessages.php (working copy) @@ -39,7 +39,7 @@ /** * The array of flash messages - * @var array + * @var array */ protected $flashMessages = array(); @@ -60,14 +60,16 @@ /** * Add another flash message. * - * @param string $message + * @param string $message The message string. + * @param string $severity Use constants definied in Tx_Extbase_MVC_Controller_FlashMessage to set the value. Default: Tx_Extbase_MVC_Controller_FlashMessage::OK * @return void * @api */ - public function add($message) { + public function add($message, $severity = Tx_Extbase_MVC_Controller_FlashMessage::OK) { if (!is_string($message)) throw new InvalidArgumentException('The flash message must be string, ' . gettype($message) . ' given.', 1243258395); $this->initialize(); - $this->flashMessages[] = $message; + $flashMessage = t3lib_div::makeInstance('Tx_Extbase_MVC_Controller_FlashMessage', $message, $severity); + $this->flashMessages[] = $flashMessage; } /** Index: extbase/ext_autoload.php =================================================================== --- extbase/ext_autoload.php (revision 2527) +++ extbase/ext_autoload.php (working copy) @@ -40,6 +40,7 @@ 'tx_extbase_mvc_controller_argumentsvalidator' => $extensionClassesPath . 'MVC/Controller/ArgumentsValidator.php', 'tx_extbase_mvc_controller_controllercontext' => $extensionClassesPath . 'MVC/Controller/ControllerContext.php', 'tx_extbase_mvc_controller_controllerinterface' => $extensionClassesPath . 'MVC/Controller/ControllerInterface.php', + 'tx_extbase_mvc_controller_flashmessage' => $extensionClassesPath . 'MVC/Controller/FlashMessage.php', 'tx_extbase_mvc_controller_flashmessages' => $extensionClassesPath . 'MVC/Controller/FlashMessages.php', 'tx_extbase_mvc_exception_infiniteloop' => $extensionClassesPath . 'MVC/Exception/InfiniteLoop.php', 'tx_extbase_mvc_exception_invalidactionname' => $extensionClassesPath . 'MVC/Exception/InvalidActionName.php', Index: fluid/Classes/ViewHelpers/FlashMessagesViewHelper.php =================================================================== --- fluid/Classes/ViewHelpers/FlashMessagesViewHelper.php (revision 2527) +++ fluid/Classes/ViewHelpers/FlashMessagesViewHelper.php (working copy) @@ -79,7 +79,7 @@ if (count($flashMessages) > 0) { $tagContent = ''; foreach ($flashMessages as $singleFlashMessage) { - $tagContent .= '
  • ' . htmlspecialchars($singleFlashMessage) . '
  • '; + $tagContent .= '
  • ' . $singleFlashMessage->getMessage() . '
  • '; } $this->tag->setContent($tagContent); return $this->tag->render();