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/WfamPlatBehavior.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 Cogip\Restauratec\SmartStructures\Plat\PlatWorkflows\WfamPlatWorkflow\WfamPlatTransitionRender;
use DocHisto;
use SmartStructure\Wdoc;
/**
* Workflow Behavior of WFAM_PLAT elements
*/
class WfamPlatBehavior 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
Et ensuite ?
Comment ajouter une vérification spécifique avant le passage de transition d’un cycle de vie