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

Merge branch 'master' of https://git.unicaen.fr/lib/unicaen/renderer into HEAD

parents d56e8596 cb4c094c
Loading
Loading
Loading
Loading
Loading
+75 −14
Original line number Diff line number Diff line
@@ -4,36 +4,97 @@ Module Unicaen Evenement
Description
-----------

Dépendances
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.

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

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

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

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

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

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

Tables pour les données du modules 
==================================
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.

Privilèges associés au module
=============================
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é"                  |

Dépendances
===========

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
**5.0.5**  
+ Ajout de la notion de namespace au template pour facilitité l'exploitation

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

avec la 5.0.5
**5.0.5**
```sql
alter table unicaen_renderer_template add namespace varchar(1024);
```
+11 −1
Original line number Diff line number Diff line
@@ -6,18 +6,28 @@ use Laminas\Http\Request;
use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\View\Model\ViewModel;
use UnicaenRenderer\Service\Rendu\RenduServiceAwareTrait;
use UnicaenRenderer\Service\Template\TemplateServiceAwareTrait;

class RenduController extends AbstractActionController
{
    use RenduServiceAwareTrait;
    use TemplateServiceAwareTrait;

    public function indexAction(): ViewModel
    {
        $rendus = $this->getRenduService()->getRendus();
        $templates = $this->getTemplateService()->getTemplates();

        $template = $this->params()->fromQuery('template');
        $date = $this->params()->fromQuery('date');

        $rendus = $this->getRenduService()->getRendusByTemplateAndDate($template, $date);

        return new ViewModel([
            'title' => 'Gestions des rendus',
            'rendus' => $rendus,
            'templates' => $templates,
            'template' => $template,
            'date' => $date,
        ]);
    }

+4 −0
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@ use Interop\Container\ContainerInterface;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
use UnicaenRenderer\Service\Rendu\RenduService;
use UnicaenRenderer\Service\Template\TemplateService;

class RenduControllerFactory
{
@@ -20,11 +21,14 @@ class RenduControllerFactory
    {
        /**
         * @var RenduService $contenuService
         * @var TemplateService $templateService
         */
        $contenuService = $container->get(RenduService::class);
        $templateService = $container->get(TemplateService::class);

        $controller = new RenduController();
        $controller->setRenduService($contenuService);
        $controller->setTemplateService($templateService);
        return $controller;
    }
}
 No newline at end of file
+10 −22
Original line number Diff line number Diff line
@@ -20,34 +20,22 @@ class TemplateController extends AbstractActionController

    public function indexAction(): ViewModel
    {
        $selected = $this->params()->fromQuery('namespace');
        $namespace = $this->params()->fromQuery('namespace');
        $namespace = ($namespace !== '')?$namespace:null;
        $type = $this->params()->fromQuery('type');
        $type = ($type !== '')?$type:null;

        $allTemplates = $this->getTemplateService()->getTemplates();

        $namespaces = [];
        foreach ($allTemplates as $template) {
            $namespace = $template->getNamespace();
            $namespaces[$namespace][] = $template;
        }

        $templates = [];
        foreach ($allTemplates as $template) {
            if ($selected === null or $selected === "") {
                $templates[] = $template;
            } else {
                if ($selected === TemplateController::SANS_NAMESPACE) {
                    if ($template->getNamespace() === null) $templates[] = $template;
                } else {
                    if ($template->getNamespace() === $selected) $templates[] = $template;
                }
            }
        }
        $templates = $this->getTemplateService()->getTemplatesByTypeAndNamespaces($type, $namespace);
        $namespaces = $this->getTemplateService()->getNamespaces();
        $types = $this->getTemplateService()->getTypes();

        return new ViewModel([
            'title' => 'Gestion des templates',
            'templates' => $templates,
            'namespaces' => $namespaces,
            'selected' => $selected,
            'types' => $types,
            'namespace' => $namespace,
            'type' => $type,
        ]);
    }

+6 −0
Original line number Diff line number Diff line
@@ -18,9 +18,15 @@ class Template implements ResourceInterface
        return self::RESOURCE_ID;
    }


    const TYPE_TXT = 'texte';
    const TYPE_PDF = 'pdf';
    const TYPE_MAIL = 'mail';
    const TYPES = [
        self::TYPE_MAIL => "Template de mail",
        self::TYPE_PDF => "Template de pdf",
        self::TYPE_TXT => "Template de texte",
    ];

    private ?int $id = null;
    private ?string $code = null;
Loading