Skip to content
Snippets Groups Projects
Select Git revision
  • main default protected
  • 6.1.3
  • 6.1.2
  • 6.1.1
  • 6.1.0
  • 6.0.9
  • 6.0.8
  • 6.0.7
  • 6.0.6
  • 6.0.5
  • 6.0.4
  • 6.0.3
  • 6.0.2
  • 6.0.1
  • 6.0.0
  • 5.0.1
  • 5.0.0
  • 4.0.1
  • 4.0.0
  • 0.1.0
20 results

parametre

  • Clone with SSH
  • Clone with HTTPS
  • 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 :

    1. un template
    2. 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]

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

    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
    
    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,
                        ],
                    ],
                ],
            ],
        ],
    ];