Comment personnaliser la fenêtre de transition d’un cycle de vie

Prérequis

Afin de pouvoir suivre ce guide, il faut préalablement avoir ajouté des paramètres à une transition d’un cycle de vie.

On souhaite configurer la barre d’outil de notre commentaire sur la fenêtre de transition créé précédement. Pour cela, nous allons configurer le rendu de notre fenêtre de transition.

Recommandations

Si vous n’êtes pas familer avec le concept de classe de rendu de transition, il est fortement conseillé de consulter la documentation associée disponible ici.

Comment procéder ?

Modifions la classe de comportement de notre cycle de vie pour configurer une classe de rendu pour la transition Valider :

src/vendor/Cogip/Restauratec/SmartStructures/Plat/PlatWorkflows/WfamPlatWorkflow/Wfam_platBehavior.php :
















 








































 
 
 
 
 
 
 
 
 



<?php

namespace Cogip\Restauratec\SmartStructures\Plat\PlatWorkflows\WfamPlatWorkflow;

use Anakeen\Core\AccountManager;
use Anakeen\Core\ContextManager;
use Anakeen\Ui\IRenderTransitionAccess;
use Anakeen\Ui\TransitionRender;
use Cogip\Restauratec\SmartStructures\Plat\PlatWorkflows\WfamPlatWorkflow\WfamPlatGraphConstant;
use DocHisto;
use SmartStructure\Wdoc;

/**
 * Workflow Behavior of WFAM_PLAT elements
 */
class Wfam_platBehavior extends Wdoc implements IRenderTransitionAccess
{
    public function __construct($dbaccess = '', $id = '', $res = '', $dbid = 0)
    {
        parent::__construct($dbaccess, $id, $res, $dbid);
        $this->useWorkflowGraph(__DIR__ . "/WfamPlatGraph.xml");

        $this->getTransition(WfamPlatGraphConstant::transition_t_plat_e1_e2)
            ->setM0(function () {
                $err = "";
                // Récupère la liste des rôles que l’utilisateur connecté possède
                $userRoles = ContextManager::getCurrentUser()->getRoleList();
                $isAuthorized = false;

                foreach ($userRoles as $role) {
                    // Si l’utilisateur possède le rôle ci-dessous, il est autorisé à effectuer la transition ...
                    if ($role->login == "role_direction") {
                        $isAuthorized = true;
                    }
                }

                // ... sinon cette dernière lui est bloquée
                if ($isAuthorized === false) {
                    $err = "Vous n’êtes pas autorisé à effectuer cette transition";
                }

                return $err;
            })
            ->setM2(function () {
                // Ajoute un message à l’historique du Smart Element ayant subit cette transition
                return $this->doc->addHistoryEntry("Mon message personnalisé", DocHisto::MESSAGE);
            })->setAsks(function () {
                return [
                    // Smart Field du Smart Element courant
                    $this->getSmartElement()->getAttribute("plat_validateur"),
                    // Paramètre du workflow
                    $this->getAttribute("wplat_commentaire")
                ];
            });
    }

    public function getTransitionRender($transitionId, Wdoc $workflow)
    {
        switch ($transitionId) {
            case WfamPlatGraphConstant::transition_t_plat_e1_e2:
                return new WfamPlatTransitionRender();
            default:
                return new TransitionRender();
        }
    }
}

Créer la classe de rendu de transition src/vendor/Cogip/Restauratec/SmartStructures/Plat/PlatWorkflows/WfamPlatWorkflow/WfamPlatTransitionRender.php :

<?php

namespace Cogip\Restauratec\SmartStructures\Plat\PlatWorkflows\WfamPlatWorkflow;

use Anakeen\Ui\HtmltextRenderOptions;
use Anakeen\Ui\TransitionRender;
use SmartStructure\Fields\Wfam_plat;

class WfamPlatTransitionRender extends TransitionRender
{

    public function getRenderOptions($transitionId)
    {
        $renderOptions = parent::getRenderOptions($transitionId);
        $renderOptions->htmltext(Wfam_plat::wplat_commentaire)->setToolbar(HtmltextRenderOptions::basicToolbar);
        return $renderOptions;
    }

}

Vous pouvez maintenant déployer vos modifications :

npx @anakeen/anakeen-cli deploy -c http://localhost:8080/control -s . -u admin -p anakeen --reinstall

Et voir le résultat sur un PLAT à l’état En test en étant connecté avec un utilisateur de la direction :

login: pope
password: cogip

customTransitionRender

Et ensuite ?

Comment ajouter une vérification spécifique avant le passage de transition d’un cycle de vie