Workflow Joomla! évolué avec Seblod 2/4

10006 vues
12 janvier 2015
Cyril
workflows-joomla-part2

 

Principes généraux

Ce tutoriel sur le CCK SEBLOD vous guide pour créer un workflow de validation complet avec Joomla et SEBLOD.
Il s'agit d'un second billet qui détaille un exemple de réalisation de workflow et qui fait suite à un premier article qui listait les éléments de workflow rendus disponibles par le couple Joomla / Seblod.


Le principe ici est que les 'auteurs' ne peuvent que créer des contenus sans les publier ou les dé publier. Les gestionnaires ont tout contrôle sur les contenus, alors que les administrateurs ont tout contrôle sur le site global.

 

Le processus de ce workflow est donc le suivant: Principe workflow

Gestion des groupes et acls

On définit d'abord un workflow de validation avec les groupes d'utilisateurs suivants: groupes d'utilisateurs Joomla! pour workflow

 

 

 

 

 

On définit les ACL suivantes: ACLs Joomla! pour workflow

 

 

 

 

 

l'ACL SPECIAL (accès en back office) est défini comme suit: Acl special pour le workflow

 

 

 

 

 

 

 

l'ACL Gestionnaire est défini comme suit: Acl gestionnaire pour le workflow

 

 

 

 

Champs nécessaires pour le workflow

Pour chaque type de contenu on ajoute les champs suivants (penser à masquer certains champs et mettre la valeur par défaut de pulsar_test_acl à 1): 

liste des champs seblod pour un workflow evolué sous Joomla! 

fin des champs seblod pour un workflow evolué sous Joomla!
ATTENTION: tous les champs "Pulsar" doivent être créés avec le cadenas ouvert et stockés dans le dossier d'applications rapide pour pouvoir être utilisé dans tous les types de contenu.

Le nom et l'email de l'auteur sont stockés en live value (bouton 2) dans les champs pulsar_content_creator_name et pulsar_content_creator_email (en précisant les valeurs name et email correspondant). Ces deux champs sont stockés dans la table commune #cck_store_item_content (stockage standard /article mais en cadenas ouvert).

Au delà de l'étape de création de contenu, on est obligé d'utiliser un champ code pour récupérer le nom et l'email de l'utilisateur qui modifie le contenu car les plugins de live value (bouton [2]) ne fonctionnent qu'à la création du contenu. Ici on a besoin de récuperer ces infos qui peuvent être différentes à chaque édition du contenu (ce n'est pas forcément l'auteur initial qui modifie le contenu). Les deux champs pulsar_content_user_email et pulsar_content_user_name sont stockés dans la table commune #cck_store_item_content.

Le contenu du champ code 'avant stockage doit etre':

$user = JFactory::getUser();

$fields[pulsar_content_user_email]->value=$user->email;

$fields[pulsar_content_user_name]->value=$user->name;

$config["storages"]["#__cck_store_item_content"]["pulsar_content_user_email"]= $user->email;

$config["storages"]["#__cck_store_item_content"]["pulsar_content_user_name"]= $user->name;

 

Le champ Pulsar_test_acl doit etre defini comme cela:  

configuration du champ pulsar_acl pour le workflow

 

 On utilise ce champ pulsar_test_acl comme un 'flag' qui est filtré par les ACLs. Si on est admin ou gestionnaire, le champ est bien actif et donc vaut 1. Dans le cas contraire le champ n'est pas présent et un test dessus renverra 0. On ne pouvait pas juste mettre une ACL 'gestionnaire' sur le champ STATE car on désire juste masquer ce champ tout en forçant sa valeur à 0.  Dans le cas d'un auteur, le champ pulsar_test_acl n'est pas actif et donc n'est pas positionné à 1. Les ACLs Joomla! activent ou désactivent un champ et ne se contentent pas de la masquer. C'est pourtant un masquage des champs STATE et ACCESS qu'on souhaite ici dans le cas d'un auteur avec en même temps l'affectation d'une valeur (0). Il faut donc passer par un état conditionnel sur ces champs.


Les accès sur certains champs doivent être positionnés: 

Accès sur les champs du workflow


L'état et l'accès du contenu ne doivent pas pouvoir être modifiés par les auteurs. On attache donc un état conditionnel sur chacun d'eux: 

état conditionnel sur les champs state et access du workflow


On positionne d'abord par défaut l’état de tous les contenus à DEPUBLIE:

état mis à 'dépublié' pour le workflow

Puis on n'affiche ces 2 champs Article State et Article Access que pour les niveaux 'gestionnaire' et au dessus (si pulsar_test_acl est bien positionné à 1): 

champ conditionnel sur l'état du contenu

Emails de notification

Notification à la création

On crée autant de champs mails qu'il peut y avoir de notifications. On configure ainsi le mail de notification pour la création de contenu (champ pulsar_content_creation_notif):

Configuration du champs email de notification

 Fin de la  configuration du champs email de notification
Notez que le mail n'est envoyé qu'à la soumission (création) du contenu.

Le contenu du message est: Avec la dernière version du champ email advanced on peut aussi ajouter un lien vers le back office du contenu à valider avec les lignes suivantes pour le corps du message:

ATTENTION il faut désactiver JCE (ou tout éditeur WYSIWYG) et activer l'éditeur non WYSIWYG de Joomla le temps d'écrire ce code!

Un nouveau contenu de type $cck->getValue('cck'); dont le nom est #art_title# a été créé sur le site web par #pulsar_content_creator_name#!

Veuillez vous connecter sur le back office pour le vérifier et le valider.

Merci

 

Notification à la modification avant validation

Quand un auteur modifie le contenu avant validation un email de notification est à nouveau renvoyé aux gestionnaires avec le champ pulsar_content_edition_notif.

C'est presque le même champ que pour la notification à la création mais cette fois il faut configurer le champ de telle sorte qu'il n'envoie le mail qu'à la modification du contenu.

le corps du message est aussi un peu modifié:

 Le contenu de type $cck->getValue('cck'); dont le nom est #art_title# a été modifié sur le site web par #pulsar_content_user_name#!

 Veuillez vous connecter sur le back office pour le vérifier et le valider.

 Voir le contenu



Merci

Notification à la validation

Cette fois on envoie un mail à l'auteur originel du contenu. Ce mail ne doit être envoyé qu'une seule fois quand le champ ARTICLE STATE vaut 1 et en s'assurant que le mail n'est pas déjà parti. C'est pour cette raison qu'on utilise un état conditionnel qui va activer et préremplir le champ seulement sur ces deux conditions:

Etat conditionnel sur le champ email de notification
Et le corps du message est cette fois:

Votre contenu de type $cck->getValue('cck'); dont le nom est #art_title# a été validé sur le site web par #pulsar_content_user_name#!

Merci

 

Dans notre prochain billet nous montrerons comment dans notre solution de GED Open Source FlexiGED nous permettons la construction très simplifiée de formulaires en ligne en vue frontale, sans passer par le back office, et selon un choix de workflows prédéfinis.