Module Unicaen Renderer
Description
Le module unicaen/renderer est en charge du stockage des templates et des macros associées. Ainsi que les rendus générés à partir des templates et macros.
Le module fournit un menu dans Administration > Contenus permettant d'accéder aux instances créées : Macros, Templates et Rendus. Dans ces menus, il est possible de gérer ceux-ci.
Dépendances
Utilisation de tinyMCE (v4.+) pour la partie WYSIWYG (qualité de vie).
Description du fonctionnement
Les macros
Les macros reposent sur un code unique permettant au service RenduService de les substituer plus tard dans le texte. Les macros font référence à :
- une variable qui doit être passé au préalable dans un tableau
- une méthode (retournant une chaine de caratères) que doit possèder cette variable.
Les templates
Les templates stockent les textes avec macros qui seront transformés en rendu. On retrouve trois blocs de textes :
- la partie sujet pour le sujet du courrier ou le titre d'un document (et le nom du fichier)
- la partie corps pour le corps du rendu
- la partie css qui est fcaultive qui correpond à un morceau de css qui est apposé au rendu généré
La génération de rendus
La génération passe par l'utilisation de la méthode generateRenduByTemplate(Template, array)
qui prend en argument :
- un template
- un tableau de variables utilisés par les macros
Alternativement, la fonction generateRenduByTemplateCode(string, array)
permet la génération avec seulement le code du template et renvoi une exception si le code n'est associé à aucun template.
// Préparation du tableau de variables
$vars = [
'truc' => $truc,
'machin' => $machin,
'UrlService' => $urlService,
];
// generation du rendu
$rendu = $this->getRenduService()->generateRenduByTemplateCode('MON_TEMPLATE', $vars);
L'utilisation du rendu peut être fait directement via l'usage des accésseurs de Rendu
que cela soit pour : un affichage directe, un export PDF ou la génération d'un courrier électronique.
<dl>
<dt> Sujet </dt>
<dd> <?php echo $rendu->getSujet(); ?> </dd>
<dt> Sujet </dt>
<dd> <?php echo $rendu->getCorps(); ?> </dd>
</dl>
Remarque 1 !!! Les rendus générés sont sauvegardés en base de données.
Remarque 2 !!! La génération d'URLs, passant par l'appel d'helpers particuliers, la méthode la plus simple est de fournir un service générant celles-ci.
Aides de vue founies
'view_helpers' => [
'invokables' => [
'rendu' => RenduViewHelper::class,
],
],
$this->rendu($monRendu)
: Affiche un rendu généré avec description à gauche et texte générée à droite.
Configuration
Pas de configuration locale
Tables pour les données du modules
N.B. Le script permettant de créer les tables est fourni dans le fichier [renderer/SQL/001_tables.sql]
- unicaen_renderer_macro : table stockant les macros
Column | Type | Obligatoire | Unique | Description |
---|---|---|---|---|
id | int | true | true | identifiant numerique de la macro |
code | varchar(256) | true | true | identifiant texte de la macro |
description | text | false | false | description associée à la macro |
variable_name | varchar(256) | true | false | variable utilisée par la macro |
methode_name | varchar(256) | true | false | méthode utilisée par la macro |
- unicaen_renderer_template : table stockant les templates
Column | Type | Obligatoire | Unique | Description |
---|---|---|---|---|
id | int | true | true | identifiant numerique de la macro |
code | varchar(256) | true | true | identifiant texte de la macro |
description | text | false | false | description associée à la macro |
document_type | varchar(256) | true | false | description du type de document généré |
document_sujet | text | true | false | template de l'élément 'sujet' |
document_corps | text | true | false | template de l'élément 'corps' |
document_css | text | false | false | css associé au template |
- unicaen_renderer_rendu : table stockant les rendus générés
Column | Type | Obligatoire | Unique | Description |
---|---|---|---|---|
id | int | true | true | identifiant numerique de la macro |
template_id | int | false | false | identifiant du template utilisé pour la génération |
date_generation | timestamp | true | false | date de génération |
sujet | text | true | false | sujet généré |
corps | text | true | false | corps généré |
Privilèges associés au module
N.B. Le script permettant de créer les tables est fourni dans le fichier [renderer/SQL/002_privileges.sql]
1 - Macro
const DOCUMENTMACRO_INDEX = 'documentmacro-documentmacro_index';
const DOCUMENTMACRO_AJOUTER = 'documentmacro-documentmacro_ajouter';
const DOCUMENTMACRO_MODIFIER = 'documentmacro-documentmacro_modifier';
const DOCUMENTMACRO_SUPPRIMER = 'documentmacro-documentmacro_supprimer';
2 - Template
const DOCUMENTTEMPLATE_INDEX = 'documenttemplate-documenttemplate_index';
const DOCUMENTTEMPLATE_AFFICHER = 'documenttemplate-documenttemplate_afficher';
const DOCUMENTTEMPLATE_AJOUTER = 'documenttemplate-documenttemplate_ajouter';
const DOCUMENTTEMPLATE_MODIFIER = 'documenttemplate-documenttemplate_modifier';
const DOCUMENTTEMPLATE_SUPPRIMER = 'documenttemplate-documenttemplate_supprimer';
3 - Rendu
const DOCUMENTCONTENU_INDEX = 'documentcontenu-documentcontenu_index';
const DOCUMENTCONTENU_AFFICHER = 'documentcontenu-documentcontenu_afficher';
const DOCUMENTCONTENU_SUPPRIMER = 'documentcontenu-documentcontenu_supprimer';
Attention !!! Penser à donner les privilèges aux rôles adéquats.
Dépendance à UnicaenPrivilege
-
Dans vendor/unicaen/renderer/config/merged/index.config.php, vendor/unicaen/renderer/config/merged/macro.config.php, vendor/unicaen/renderer/config/merged/rendu.config.php, vendor/unicaen/renderer/config/merged/template.config.php :
UnicaenPrivilege\Guard\PrivilegeController
pour les gardes liées aux actions. Peut être directement remplacer par l'equivalent fournit parunicaen/auth
. -
Dans vendor/unicaen/renderer/src/UnicaenRenderer/Provider/Privilege/DocumentcontenuPrivileges.php, vendor/unicaen/renderer/src/UnicaenRenderer/Provider/Privilege/DocumentmacroPrivileges.php, vendor/unicaen/renderer/src/UnicaenRenderer/Provider/Privilege/DocumenttemplatePrivileges.php :
UnicaenPrivilege\Provider\Privilege\Privileges
classe mère des privilèges du module. Peut être directement remplacer par l'equivalent fournit parunicaen/auth
. -
Utiliser UnicaenRenderer dans le cadre de UnicaenAuth, il faut écraser la config gérant les gardes de bjyauthoryze en ajoutant une config dans Application (par example
unicaen-renderer.config.php
)
<?php
use UnicaenAuth\Guard\PrivilegeController;
use UnicaenRenderer\Controller\IndexController;
use UnicaenRenderer\Controller\MacroController;
use UnicaenRenderer\Controller\RenduController;
use UnicaenRenderer\Controller\TemplateController;
use UnicaenRenderer\Provider\Privilege\DocumentcontenuPrivileges;
use UnicaenRenderer\Provider\Privilege\DocumentmacroPrivileges;
use UnicaenRenderer\Provider\Privilege\DocumenttemplatePrivileges;
return [
'bjyauthorize' => [
'guards' => [
PrivilegeController::class => [
[
'controller' => IndexController::class,
'action' => [
'index',
],
'privileges' => [
DocumentcontenuPrivileges::DOCUMENTCONTENU_INDEX,
DocumentmacroPrivileges::DOCUMENTMACRO_INDEX,
DocumenttemplatePrivileges::DOCUMENTTEMPLATE_INDEX
],
],
[
'controller' => MacroController::class,
'action' => [
'index',
'generer-json'
],
'privileges' => [
DocumentmacroPrivileges::DOCUMENTMACRO_INDEX,
],
],
[
'controller' => MacroController::class,
'action' => [
'ajouter',
],
'privileges' => [
DocumentmacroPrivileges::DOCUMENTMACRO_AJOUTER,
],
],
[
'controller' => MacroController::class,
'action' => [
'modifier',
],
'privileges' => [
DocumentmacroPrivileges::DOCUMENTMACRO_MODIFIER,
],
],
[
'controller' => MacroController::class,
'action' => [
'supprimer',
],
'privileges' => [
DocumentmacroPrivileges::DOCUMENTMACRO_SUPPRIMER,
],
],
[
'controller' => RenduController::class,
'action' => [
'index',
],
'privileges' => [
DocumentcontenuPrivileges::DOCUMENTCONTENU_INDEX,
],
],
[
'controller' => RenduController::class,
'action' => [
'afficher',
],
'privileges' => [
DocumentcontenuPrivileges::DOCUMENTCONTENU_AFFICHER,
],
],
[
'controller' => RenduController::class,
'action' => [
'supprimer',
],
'privileges' => [
DocumentcontenuPrivileges::DOCUMENTCONTENU_SUPPRIMER,
],
],
[
'controller' => TemplateController::class,
'action' => [
'index',
],
'privileges' => [
DocumenttemplatePrivileges::DOCUMENTTEMPLATE_INDEX,
],
],
[
'controller' => TemplateController::class,
'action' => [
'afficher',
],
'privileges' => [
DocumenttemplatePrivileges::DOCUMENTTEMPLATE_AFFICHER,
],
],
[
'controller' => TemplateController::class,
'action' => [
'ajouter',
],
'privileges' => [
DocumenttemplatePrivileges::DOCUMENTTEMPLATE_AJOUTER,
],
],
[
'controller' => TemplateController::class,
'action' => [
'modifier',
],
'privileges' => [
DocumenttemplatePrivileges::DOCUMENTTEMPLATE_MODIFIER,
],
],
[
'controller' => TemplateController::class,
'action' => [
'detruire',
],
'privileges' => [
DocumenttemplatePrivileges::DOCUMENTTEMPLATE_SUPPRIMER,
],
],
],
],
],
];