Commit d560c610 authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

init

parent 399275f8
Loading
Loading
Loading
Loading
Loading

.gitignore

0 → 100644
+3 −0
Original line number Diff line number Diff line
.idea/
vendor/
.sass-cache/

.gitlab-ci.yml

0 → 100644
+14 −0
Original line number Diff line number Diff line
image: registre.unicaen.fr:5000/unicaen-dev-php7.3-apache

stages:
- publish

cache:
  key: ${CI_COMMIT_REF_SLUG}
  paths:
  - vendor/

update-satis:
  stage: publish
  script:
    - curl https://gest.unicaen.fr/packagist/update

composer.json

0 → 100755
+22 −0
Original line number Diff line number Diff line
{
  "name": "unicaen/enquete",
  "description": "Module de gestion d'enquête",
  "repositories": [
    {
      "type": "composer",
      "url": "https://gest.unicaen.fr/packagist"
    }
  ],
  "require": {
    "php": "^8.0",
    "unicaen/utilisateur": "^6.0",
    "unicaen/privilege": "^6.0"
  },
  "minimum-stability": "dev",
  "prefer-stable": true,
  "autoload": {
    "classmap": [
      "./Module.php"
    ]
  }
}

readme.md

0 → 100755
+253 −0
Original line number Diff line number Diff line
Module Unicaen Evenement
=======================

Description
-----------

La bibliothèque `unicaen/renderer` est en charge de la génération de contenus "génériques" basés sur des `templates` et `macros`. 

Utilisation de la bibliothèque
-----------
Le service `RenduService` fournit une méthode `generateRenduByTemplateCode` en charge de générer un contenu avec le code d'un temmplate et un tableau de variables qui seront exploitées par les macros.
Le troisième paramètre permet de controller l'enregistrement du rendu en base de données.

```php
$vars = ['variable1' => $variable1, ...];
$rendu = $this->getRenduService()->generateRenduByTemplateCode(Templates::MON_TEMPLATE, $vars, false);

echo $rendu->getSujet();
echo $rendu->getCorps();
```

Aides de vue founies
--------------------

La biliothèque fournit un `ViewHelper` pour l'affichage d'un rendu

```php
echo $this->rendu($rendu); 
```

Administration
--------------

La biliothèque fournit des interfaces d'administration pour le paramètre des macros et templates et le listing des rendus.
Le fichier `config/unicae-renderer.global.dist.php` contient la déclaration des différents menus d'administration.

Tables et privilèges associés
============================

Les tables et les privilèges sont fournis dans les fichiers suivants : `SQL/001_tables.sql` et `SQL/002_privileges.sql`.

Macro
-----

| Colonne       | Attribut     | Type         | Descriptions                             |
|---------------|--------------|--------------|------------------------------------------|
| id            | $id          | serial PK    |                                          |
| code          | $code        | varchar(256) | identifiant de la macro                  |
| description   | $description | text         |                                          |
| variable_name | $variable    | varchar(256) | nom de la variable utilisée par la macro |
| methode_name  | $methode     | varchar(256) | nom de la méthode utilisée par la macro  |

_Remarque :_ 
+ `variable_name` est recherchée dans le tableau de variable (si non trouvée alors un warning est mis dans le rendu `variable non trouvée`).
+ `methode_name` est appelé sur la variable `variable_name` comme suit `$variable_name->methode_name()` (si non trouvée alors un warning est mis dans le rendu `méthode non trouvée`).

Template
----

| Colonne        | Attribut     | Type         | Descriptions                        |
|----------------|--------------|--------------|-------------------------------------|
| id             | $id          | serial PK    |                                     |
| code           | $code        | varchar(256) | identifiant de la macro             |
| description    | $description | text         |                                     |
| namespace      | $namespace   | varchar(256) | Espace de "nom" du template         |
| document_type  | $type        | text         | un type parmi 'text', 'mail', 'pdf' |
| document_sujet | $sujet       | text         | Le sujet ou le nom du fichier       |
| document_corps | $corps       | text         | Le corps ou le contenu du fichier   |
| document_css   | $css         | text         | Un snipet CSS pour la mise en forme |

Rendu
----

| Colonne         | Attribut  | Type       | Descriptions                    |
|-----------------|-----------|------------|---------------------------------|
| id              | $id       | serial PK  |                                 |
| template_id     | $template | integer FK | identifiant du template utilisé |
| date_generation | $date     | timestamp  |                                 |
| sujet           | $sujet    | text       | Sujet "généré"                  |
| corps           | $corps    | text       | Corps "généré"                  |


CHANGELOG
=========

**6.0.3** (19/09/2023)
+ Ajout du filtre des types de template sur l'index des template
+ Ajout du filtre sur l'index des rendus (date + template)
+ Amélioration de la documentation

**5.0.5**  
+ Ajout de la notion de namespace au template pour facilitité l'exploitation

Modification du schéma
----------------------

**5.0.5**
```sql
alter table unicaen_renderer_template add namespace varchar(1024);
```

Dépendance à **UnicaenPrivilege**
----------------------------------

1. 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 par `unicaen/auth`.
   
2. 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 par `unicaen/auth`.

3. 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
<?php

use UnicaenPrivilege\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,
                    ],
                ],
            ],
        ],
    ],
];
```