- <?php
- /**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
- * @license http://framework.zend.com/license/new-bsd New BSD License
- */
-
- namespace Zend\View\Helper;
-
- use Zend\Mvc\Controller\Plugin\FlashMessenger as PluginFlashMessenger;
- use Zend\ServiceManager\ServiceLocatorAwareInterface;
- use Zend\ServiceManager\ServiceLocatorInterface;
- use Zend\I18n\View\Helper\AbstractTranslatorHelper;
-
- /**
- * Helper to proxy the plugin flash messenger
- */
- class FlashMessenger extends AbstractTranslatorHelper implements ServiceLocatorAwareInterface
- {
- /**
- * Default attributes for the open format tag
- *
- * @var array
- */
- protected $classMessages = array(
- PluginFlashMessenger::NAMESPACE_INFO => 'info',
- PluginFlashMessenger::NAMESPACE_ERROR => 'error',
- PluginFlashMessenger::NAMESPACE_SUCCESS => 'success',
- PluginFlashMessenger::NAMESPACE_DEFAULT => 'default',
- );
-
- /**
- * Templates for the open/close/separators for message tags
- *
- * @var string
- */
- protected $messageCloseString = '</li></ul>';
- protected $messageOpenFormat = '<ul%s><li>';
- protected $messageSeparatorString = '</li><li>';
-
- /**
- * Html escape helper
- *
- * @var EscapeHtml
- */
- protected $escapeHtmlHelper;
-
- /**
- * Flash messenger plugin
- *
- * @var PluginFlashMessenger
- */
- protected $pluginFlashMessenger;
-
- /**
- * Service locator
- *
- * @var ServiceLocatorInterface
- */
- protected $serviceLocator;
-
- /**
- * Returns the flash messenger plugin controller
- *
- * @param string|null $namespace
- * @return FlashMessenger|PluginFlashMessenger
- */
- public function __invoke($namespace = null)
- {
- if (null === $namespace) {
- return $this;
- }
- $flashMessenger = $this->getPluginFlashMessenger();
-
- return $flashMessenger->getMessagesFromNamespace($namespace);
- }
-
- /**
- * Proxy the flash messenger plugin controller
- *
- * @param string $method
- * @param array $argv
- * @return mixed
- */
- public function __call($method, $argv)
- {
- $flashMessenger = $this->getPluginFlashMessenger();
- return call_user_func_array(array($flashMessenger, $method), $argv);
- }
-
- /**
- * Render Messages
- *
- * @param string $namespace
- * @param array $classes
- * @return string
- */
- public function render($namespace = PluginFlashMessenger::NAMESPACE_DEFAULT, array $classes = array())
- {
- $flashMessenger = $this->getPluginFlashMessenger();
- $messages = $flashMessenger->getMessagesFromNamespace($namespace);
-
- if (empty($messages)) {
- return '';
- }
-
- // Prepare classes for opening tag
- if (empty($classes)) {
- if (isset($this->classMessages[$namespace])) {
- $classes = $this->classMessages[$namespace];
- } else {
- $classes = $this->classMessages[PluginFlashMessenger::NAMESPACE_DEFAULT];
- }
- $classes = array($classes);
- }
-
- // Flatten message array
- $escapeHtml = $this->getEscapeHtmlHelper();
- $messagesToPrint = array();
-
- $translator = $this->getTranslator();
- $translatorTextDomain = $this->getTranslatorTextDomain();
-
- array_walk_recursive($messages, function ($item) use (&$messagesToPrint, $escapeHtml, $translator, $translatorTextDomain) {
- if ($translator !== null) {
- $item = $translator->translate(
- $item,
- $translatorTextDomain
- );
- }
- $messagesToPrint[] = $escapeHtml($item);
- });
-
- if (empty($messagesToPrint)) {
- return '';
- }
-
- // Generate markup
- $markup = sprintf($this->getMessageOpenFormat(), ' class="' . implode(' ', $classes) . '"');
- $markup .= implode(sprintf($this->getMessageSeparatorString(), ' class="' . implode(' ', $classes) . '"'), $messagesToPrint);
- $markup .= $this->getMessageCloseString();
-
- return $markup;
- }
-
- /**
- * Set the string used to close message representation
- *
- * @param string $messageCloseString
- * @return FlashMessenger
- */
- public function setMessageCloseString($messageCloseString)
- {
- $this->messageCloseString = (string) $messageCloseString;
- return $this;
- }
-
- /**
- * Get the string used to close message representation
- *
- * @return string
- */
- public function getMessageCloseString()
- {
- return $this->messageCloseString;
- }
-
- /**
- * Set the formatted string used to open message representation
- *
- * @param string $messageOpenFormat
- * @return FlashMessenger
- */
- public function setMessageOpenFormat($messageOpenFormat)
- {
- $this->messageOpenFormat = (string) $messageOpenFormat;
- return $this;
- }
-
- /**
- * Get the formatted string used to open message representation
- *
- * @return string
- */
- public function getMessageOpenFormat()
- {
- return $this->messageOpenFormat;
- }
-
- /**
- * Set the string used to separate messages
- *
- * @param string $messageSeparatorString
- * @return FlashMessenger
- */
- public function setMessageSeparatorString($messageSeparatorString)
- {
- $this->messageSeparatorString = (string) $messageSeparatorString;
- return $this;
- }
-
- /**
- * Get the string used to separate messages
- *
- * @return string
- */
- public function getMessageSeparatorString()
- {
- return $this->messageSeparatorString;
- }
-
- /**
- * Set the flash messenger plugin
- *
- * @param PluginFlashMessenger $pluginFlashMessenger
- * @return FlashMessenger
- */
- public function setPluginFlashMessenger(PluginFlashMessenger $pluginFlashMessenger)
- {
- $this->pluginFlashMessenger = $pluginFlashMessenger;
- return $this;
- }
-
- /**
- * Get the flash messenger plugin
- *
- * @return PluginFlashMessenger
- */
- public function getPluginFlashMessenger()
- {
- if (null === $this->pluginFlashMessenger) {
- $this->setPluginFlashMessenger(new PluginFlashMessenger());
- }
-
- return $this->pluginFlashMessenger;
- }
-
- /**
- * Set the service locator.
- *
- * @param ServiceLocatorInterface $serviceLocator
- * @return AbstractHelper
- */
- public function setServiceLocator(ServiceLocatorInterface $serviceLocator)
- {
- $this->serviceLocator = $serviceLocator;
- return $this;
- }
-
- /**
- * Get the service locator.
- *
- * @return ServiceLocatorInterface
- */
- public function getServiceLocator()
- {
- return $this->serviceLocator;
- }
-
- /**
- * Retrieve the escapeHtml helper
- *
- * @return EscapeHtml
- */
- protected function getEscapeHtmlHelper()
- {
- if ($this->escapeHtmlHelper) {
- return $this->escapeHtmlHelper;
- }
-
- if (method_exists($this->getView(), 'plugin')) {
- $this->escapeHtmlHelper = $this->view->plugin('escapehtml');
- }
-
- if (!$this->escapeHtmlHelper instanceof EscapeHtml) {
- $this->escapeHtmlHelper = new EscapeHtml();
- }
-
- return $this->escapeHtmlHelper;
- }
- }
# |
Change |
User |
Description |
Committed |
|
#1
|
18334 |
Liz Lam |
initial add of jambox |
9 years ago
|
|