readme.md 5.62 KB
Newer Older
Jean-Philippe Metivier's avatar
Jean-Philippe Metivier committed
1
2
Module Unicaen Renderer
=======================
3
------------------------
Jean-Philippe Metivier's avatar
Jean-Philippe Metivier committed
4

5
6
Description
-----------
Jean-Philippe Metivier's avatar
Jean-Philippe Metivier committed
7
Le module **unicaen/renderer** est en charge du stockage des templates et des macros associées.
8
Ainsi que les contenus générés à partir des templates et macros.
Jean-Philippe Metivier's avatar
Jean-Philippe Metivier committed
9

10
11
Le module fournit un menu dans Administration > Contenu permettant d'accéder aux instances créées : Macros, Templates et Contenu.
Dans ces menus, il est possible de gérer ceux-ci.
12

13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
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 **ContenuService** 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 contenu.
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 contenu
- la partie **css** qui est fcaultive qui correpond à un morceau de css qui est apposé au contenu généré

La génération de contenus
-------------------------

La génération passe par l'utilisation de la méthode `generateContenu(Template|string, array)` qui prend en argument :
1. un template ou le code d'un template
2. un tableau de variables utilisés par les macros

```php

// Préparation du tableau de variables 
$vars = [
    'truc' => $truc,
    'machin' => $machin, 
    'UrlService' => $urlService,
];
// generation du contenu
$contenu = $this->getContenuService()->generateContenu('MON_TEMPLATE', $vars);
```

L'utilisation du contenu peut être fait directement via l'usage des accésseurs de `Contenu` que cela soit pour : un affichage directe, un export PDF ou la génération d'un courrier électronique.

```phtml
<dl>
    <dt> Sujet </dt>
    <dd> <?php echo $contenu->getSujet(); ?> </dd>
    <dt> Sujet </dt>
    <dd> <?php echo $contenu->getCorps(); ?> </dd>
</dl>
```

***Remarque 1 !!!*** Les contenus 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.  

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] 

1. **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 |

2. **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 |

3.  **unicaen_renderer_contenu** : table stockant les contenus 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

```php
const DOCUMENTMACRO_INDEX = 'documentmacro-documentmacro_index';
const DOCUMENTMACRO_AJOUTER = 'documentmacro-documentmacro_ajouter';
const DOCUMENTMACRO_MODIFIER = 'documentmacro-documentmacro_modifier';
const DOCUMENTMACRO_HISTORISER = 'documentmacro-documentmacro_historiser';
const DOCUMENTMACRO_SUPPRIMER = 'documentmacro-documentmacro_supprimer';
```

2 - Template

```php
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_HISTORISER   = 'documenttemplate-documenttemplate_historiser';
const DOCUMENTTEMPLATE_SUPPRIMER    = 'documenttemplate-documenttemplate_supprimer';
```

3 - Contenu

```php
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.