Commit fbacb22c authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Abandon de l'aide de vue FlashMessenger (car il y en a une dans ZF2 maintenant...

Abandon de l'aide de vue FlashMessenger (car il y en a une dans ZF2 maintenant qui n'a pas les mêmes fonctionnalités) : l'aide de vue Messenger permet désormais d'importer les messages du FlashMessenger pour les mettre en forme de la même manière.
parent ec21f0bf
<?php
namespace UnicaenApp\View\Helper;
use Zend\Mvc\Controller\PluginManager;
/**
* Aide de vue affichant les messages positionnés en session par le plugin de
* contrôleur 'FlashMessenger'.
*
* 2 formats possibles pour chaque message, exemples :
* - <code>array('warning'=>"La demande 12 est introuvable!")</code>
* - <code>"Ceci est un message d'information."</code>,
* équivalent à <code>array('info'=>"Ceci est un message d'information.")</code>
*
* @author Bertrand GAUTHIER <bertrand.gauthier@unicaen.fr>
*/
class FlashMessenger extends Messenger
{
/**
* @var PluginManager
*/
protected $pm;
/**
* Constructeur.
*
* @param PluginManager $pm
*/
public function __construct(PluginManager $pm)
{
$this->pm = $pm;
}
/**
* Helper entry point
*
* @param string $severity Ex: Messenger::INFO
* @return FlashMessenger fluent interface, returns self
*/
public function __invoke($severity = null)
{
/* @var $fm FlashMessenger */
$fm = $this->pm->get('flashMessenger');
$messages = array();
foreach ($fm->getMessages($severity) as $value) {
if (is_array($value)) {
$messages += $value;
}
else {
$messages[] = $value;
}
}
$this->setMessages($messages);
return $this;
}
}
......@@ -8,21 +8,23 @@ use Zend\View\Helper\AbstractHelper;
/**
* Aide de vue permettant de stocker une liste de messages d'information de différentes sévérités
* et de générer le code HTML pour les afficher (affublés d'un icône correspondant à leur sévérité).
*
* Possibilité d'importer les messages du FlashMessenger pour les mettre en forme de la même manière.
*
* @author Bertrand GAUTHIER <bertrand.gauthier@unicaen.fr>
*/
class Messenger extends AbstractHelper
{
const INFO = 'info';
const OK = 'ok';
const SUCCESS = 'success';
const WARNING = 'warning';
const ERROR = 'error';
protected $uiClasses = array( // CSS class, icon name
self::INFO => array('info', 'info-sign'),
self::OK => array('success', 'ok-sign'),
self::WARNING => array('warning', 'warning-sign'),
self::ERROR => array('error', 'exclamation-sign'),
self::INFO => array('info', 'info-sign'),
self::SUCCESS => array('success', 'ok-sign'),
self::WARNING => array('warning', 'warning-sign'),
self::ERROR => array('error', 'exclamation-sign'),
);
/**
......@@ -39,19 +41,43 @@ class Messenger extends AbstractHelper
/**
* Helper entry point
* Helper entry point.
*
* @param string $severity Ex: Messenger::INFO
* @return Messenger fluent interface, returns self
* @param bool $importFlashMessages
* @return self
*/
public function __invoke($severity = null)
public function __invoke($importFlashMessages = false)
{
if ($severity) {
$this->severity = $severity;
if ($importFlashMessages) {
$this->importFlashMessages();
}
return $this;
}
/**
* Importe les messages du FlashMessenger.
*
* @return self
*/
protected function importFlashMessages()
{
/* @var $fm \Zend\View\Helper\FlashMessenger */
$fm = $this->getView()->flashMessenger();
foreach ($fm->getInfoMessages() as $message) {
$this->addMessage($message, self::INFO);
}
foreach ($fm->getErrorMessages() as $message) {
$this->addMessage($message, self::ERROR);
}
foreach ($fm->getSuccessMessages() as $message) {
$this->addMessage($message, self::SUCCESS);
}
return $this;
}
/**
* Retourne le code HTML généré par cette aide de vue.
*
......@@ -70,11 +96,11 @@ class Messenger extends AbstractHelper
}
/**
* Génère le code HTML
* Génère le code HTML.
*
* @return string
*/
public function render()
protected function render()
{
if (!$this->hasMessages()) {
return '';
......@@ -215,11 +241,12 @@ class Messenger extends AbstractHelper
$divId = $divId ? sprintf('id="%s"', $divId) : '';
$template = <<<EOT
<p class="messenger {$this->uiClasses[$severity][0]} text-{$this->uiClasses[$severity][0]}" {$divId}>
<i class="icon-{$this->uiClasses[$severity][1]}"></i>
<p class="messenger alert alert-{$this->uiClasses[$severity][0]}" {$divId}>
<button type="button" class="close" data-dismiss="alert">&times;</button>
<!--<i class="icon-{$this->uiClasses[$severity][1]}"></i>-->
$innerContainerTemplate
</p>
EOT;
return $template . PHP_EOL;
}
}
}
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment