Commit 73b626c0 authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Reprise des aides de vue de SyGAL

parent a633e2f6
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -5,6 +5,8 @@ use Doctrine\ORM\Mapping\Driver\XmlDriver;
use UnicaenUtilisateur\Event\UserRoleSelectedEventListener;
use UnicaenUtilisateur\ORM\Event\Listeners\HistoriqueListener;
use UnicaenUtilisateur\ORM\Event\Listeners\HistoriqueListenerFactory;
use UnicaenUtilisateur\View\Helper\UserConnection;
use UnicaenUtilisateur\View\Helper\UserConnectionFactory;
use UnicaenUtilisateur\View\Helper\UserCurrent;
use UnicaenUtilisateur\View\Helper\UserCurrentFactory;
use UnicaenUtilisateur\View\Helper\UserInfo;
@@ -17,6 +19,8 @@ use UnicaenUtilisateur\View\Helper\UserProfileSelectRadioItem;
use UnicaenUtilisateur\View\Helper\UserProfileSelectRadioItemFactory;
use UnicaenUtilisateur\View\Helper\UserStatus;
use UnicaenUtilisateur\View\Helper\UserStatusFactory;
use UnicaenUtilisateur\View\Helper\UserUsurpationHelper;
use UnicaenUtilisateur\View\Helper\UserUsurpationHelperFactory;

return [
    'doctrine' => [
@@ -68,12 +72,14 @@ return [
            'userProfileSelectRadioItem' => UserProfileSelectRadioItem::class,
        ],
        'factories' => [
            UserConnection::class             => UserConnectionFactory::class,
            UserCurrent::class                => UserCurrentFactory::class,
            UserStatus::class                 => UserStatusFactory::class,
            UserProfile::class                => UserProfileFactory::class,
            UserInfo::class                   => UserInfoFactory::class,
            UserProfileSelect::class          => UserProfileSelectFactory::class,
            UserProfileSelectRadioItem::class => UserProfileSelectRadioItemFactory::class,
            UserUsurpationHelper::class       => UserUsurpationHelperFactory::class,
        ],
    ],
];
+4 −1
Original line number Diff line number Diff line
@@ -12,6 +12,9 @@ use Zend\I18n\View\Helper\AbstractTranslatorHelper;
 */
abstract class UserAbstract extends AbstractTranslatorHelper
{
    /**
     * @var UserContext
     */
    protected $userContext;

    /**
@@ -22,7 +25,7 @@ abstract class UserAbstract extends AbstractTranslatorHelper
    /**
     * Constructeur.
     *
     * @param UserContext $userContext
     * @param UserContext|null $userContext
     */
    public function __construct(UserContext $userContext = null)
    {
+64 −0
Original line number Diff line number Diff line
<?php
namespace UnicaenUtilisateur\View\Helper;

/**
 * Aide de vue de génération du lien de connexion/déconnexion à l'appli selon qu'un 
 * utilisateur est connecté ou pas.
 *
 * @author Bertrand GAUTHIER <bertrand.gauthier@unicaen.fr>
 */
class UserConnection extends UserAbstract
{
    /**
     * Point d'entrée.
     *
     * @return UserConnection
     */
    public function __invoke()
    {
        return $this;
    }

    /**
     * Retourne le code HTML généré par cette aide de vue.
     *
     * @return string
     */
    public function __toString()
    {
        $template = '%s';
        $out = sprintf($template, $this->createConnectionLink());

        return $out;
    }

    /**
     * 
     * @return string
     */
    protected function createConnectionLink()
    {
        $identity = $this->getIdentity();

        $urlHelper = $this->getView()->plugin('url');

        $template = '<a class="navbar-link user-connection" href="%s" title="%s">%s</a>';
        if (!$identity) {
            $href  = $urlHelper('zfcuser/login');
            $lib   = "Connexion";
            $title = "Affiche le formulaire d'authentification";
        }
        else {
            $href  = $urlHelper('zfcuser/logout');
            $lib   = "Déconnexion";
            $title = "Supprime les informations de connexion";
        }
        if ($this->getTranslator()) {
            $lib   = $this->getTranslator()->translate($lib, $this->getTranslatorTextDomain());
            $title = $this->getTranslator()->translate($title, $this->getTranslatorTextDomain());
        }
        $link = sprintf($template, $href, $title, $lib);

        return $link;
    }
}
 No newline at end of file
+27 −0
Original line number Diff line number Diff line
<?php

namespace UnicaenUtilisateur\View\Helper;

use Interop\Container\ContainerInterface;
use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;

/**
 * Description of UserConnectionFactory
 *
 * @author Bertrand GAUTHIER <bertrand.gauthier at unicaen.fr>
 */
class UserConnectionFactory implements FactoryInterface
{
    public function createService(ServiceLocatorInterface $helperPluginManager)
    {
        return $this->__invoke($helperPluginManager, '?');
    }

    public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
    {
        $authUserContext = $container->get('authUserContext');

        return new UserConnection($authUserContext);
    }
}
 No newline at end of file
+17 −13
Original line number Diff line number Diff line
@@ -35,24 +35,30 @@ class UserCurrent extends UserAbstract
     * 
     * @return string 
     */
    public function __toString()
    public function __toString(): string
    {
        $id = 'user-current-info';
        $userStatusHelper      = $this->getView()->plugin('userStatus');
        $identification        = $userStatusHelper(false) . "";

        $userStatusHelper = $this->getView()->plugin('userStatus'); /* @var $userStatusHelper UserStatus */
        $status = $userStatusHelper(false);

        $userProfileSelectable = true;
        
        if ($this->getIdentity()) {
            if ($userProfileSelectable) {
		        // DS : cas où aucun rôle n'est sélectionné, on affiche le rôle "user"
		        $role = $this->getUserContext()->getSelectedIdentityRole() ?: $this->getUserContext()->getIdentityRole('user');
                $status = sprintf("<small>%s</small>", !method_exists($role, '__toString') ? $role->getRoleId() : $role);
		        $role = $this->getUserContext()->getSelectedIdentityRole();
                // cas où aucun rôle n'est sélectionné : on affiche le 1er rôle sélectionnable ou sinon "user"
		        if ($role === null) {
		            $selectableRoles = $this->getUserContext()->getSelectableIdentityRoles();
                    $role = current($selectableRoles) ?: $this->getUserContext()->getIdentityRole('user');
                }
                $status .= sprintf(", <small class='role-libelle'>%s</small>", !method_exists($role, '__toString') ? $role->getRoleId() : $role);
            }
        
            $userProfileHelper = $this->getView()->plugin('userProfile');
            $userProfileHelper = $this->getView()->plugin('userProfile'); /* @var $userProfileHelper UserProfile */
            $userProfileHelper->setUserProfileSelectable($userProfileSelectable);
            
            $userInfoHelper = $this->getView()->plugin('userInfo');
            $userInfoHelper = $this->getView()->plugin('userInfo'); /* @var $userInfoHelper UserInfo */
            
            $content = $userProfileHelper . $userInfoHelper($this->getAffectationFineSiDispo());
        }
@@ -78,15 +84,13 @@ class UserCurrent extends UserAbstract
   data-toggle="popover" 
   data-html="true" 
   data-content="$content" 
   href="#">
    <table style="color:var(--header-color);background: var(--header-background);"><tr><td>$identification</td></tr><tr><td style="text-align: right">$status</td></tr></table>
    </a>
   href="#">$status<span class="caret"></span></a>
EOS;
        $out .= PHP_EOL;
        
        $js = <<<EOS
$(function() {
    $("#$id").popover({ html: true, container: '#navbar' });
    $("#$id").popover({ html: true, sanitize: false, container: '#navbar' });
});
EOS;
        $this->getView()->plugin('inlineScript')->offsetSetScript(1000, $js);
Loading