Skip to content
Snippets Groups Projects
Commit cc9947b4 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Nouvelle aide de vue ToggleDetails : génère un icone (?) cliquable permettant...

Nouvelle aide de vue ToggleDetails :  génère un icone (?) cliquable permettant d'afficher/masquer un conteneur.

Exemple :
<?php echo $this->toggleDetails($detailsDivId = uniqid("details-")) ?>
<p style="display: none" id="<?php echo $detailsDivId ?>">
    ...
</p>
parent b195f86a
Branches master
Tags 6.4.6
No related merge requests found
...@@ -194,6 +194,7 @@ class Module implements ...@@ -194,6 +194,7 @@ class Module implements
'messenger' => 'UnicaenApp\View\Helper\Messenger', 'messenger' => 'UnicaenApp\View\Helper\Messenger',
'modalAjaxDialog' => 'UnicaenApp\View\Helper\ModalAjaxDialog', 'modalAjaxDialog' => 'UnicaenApp\View\Helper\ModalAjaxDialog',
'confirm' => 'UnicaenApp\View\Helper\ConfirmHelper', 'confirm' => 'UnicaenApp\View\Helper\ConfirmHelper',
'toggleDetails' => 'UnicaenApp\View\Helper\ToggleDetails',
'multipageFormFieldset' => 'UnicaenApp\Form\View\Helper\MultipageFormFieldset', 'multipageFormFieldset' => 'UnicaenApp\Form\View\Helper\MultipageFormFieldset',
'multipageFormNav' => 'UnicaenApp\Form\View\Helper\MultipageFormNav', 'multipageFormNav' => 'UnicaenApp\Form\View\Helper\MultipageFormNav',
'multipageFormRow' => 'UnicaenApp\Form\View\Helper\MultipageFormRow', 'multipageFormRow' => 'UnicaenApp\Form\View\Helper\MultipageFormRow',
......
<?php
namespace UnicaenApp\View\Helper;
use Exception;
use UnicaenApp\Util;
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 ToggleDetails extends AbstractHelper
{
/**
* @var string
*/
protected $detailsDivId = null;
/**
* @var string
*/
protected $iconClass = 'glyphicon-question-sign';
/**
* Helper entry point.
*
* @return self
*/
public function __invoke($detailsDivId, $iconClass = null)
{
$this->detailsDivId = $detailsDivId;
if ($iconClass) {
$this->iconClass = $iconClass;
}
return $this;
}
/**
* Retourne le code HTML généré par cette aide de vue.
*
* @return string
*/
public function __toString()
{
try {
return $this->render();
}
catch (Exception $exc) {
var_dump($exc->getMessage(), Util::formatTraceString($exc->getTraceAsString()));die;
}
}
/**
* Génère le code HTML.
*
* @return string
*/
protected function render()
{
$html = <<<EOS
<a href="#" class="toggle-details" data-target="#{$this->detailsDivId}" title="Cliquez pour afficher/masquer les détails">
<span class="glyphicon {$this->iconClass}" aria-hidden="true"></span>
</a>
EOS;
$js = <<<EOS
$(function() {
$(".toggle-details").click(function() {
var target = $($(this).data('target'));
target.slideToggle();
});
});
EOS;
$this->getView()->inlineScript()->offsetSetScript(100, $js);
return $html . PHP_EOL;
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment