Commit edfe45f7 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Generation de la Convention de MEL avec unicaen/renderer

parent f6be4823
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
Journal des modifications
=========================

10.3.0 ???
------
- Nouvelle charte de dépôt et diffusion des thèses.
- La convention de MEL possède désormais son template Twig modifiable (via unicaen/renderer).

10.2.1
------
- Module Soutenance : Amélioration du workflow dans la pré-soutenance
+537 −0
Original line number Diff line number Diff line
# Version 8.6.0

## 1. Sur le serveur d'application

- Placez-vous dans le répertoire de l'application puis lancez la commande suivante
  pour installer la nouvelle version :

  ```bash
  git fetch --tags && git checkout --force 8.6.0 && bash ./install.sh
  ```

- Rechargez le moteur PHP, exemple :

  ```bash
  systemctl reload php8.0-fpm
  ```

## 2. Dans la base de données

```sql
INSERT INTO unicaen_renderer_macro (id, code, description, variable_name, methode_name)
VALUES (
            nextval('unicaen_renderer_macro_id_seq'),
            'UrlFichier#LogoEtablissementComue',
            '<p>Retourne le chemin absolu sur disque du logo (fichier) de la COMUE éventuelle.</p>',
            'UrlFichier',
            'getLogoEtablissementComue'
       );
INSERT INTO unicaen_renderer_macro (id, code, description, variable_name, methode_name)
VALUES (
           nextval('unicaen_renderer_macro_id_seq'),
           'UrlFichier#LogoEtablissementCed',
           '<p>Retourne le chemin absolu sur disque du logo (fichier) du Collège des Ecoles Doctorales éventuel.</p>',
            'UrlFichier',
           'getLogoEtablissementCed'
       );
INSERT INTO unicaen_renderer_macro (id, code, description, variable_name, methode_name)
VALUES (
           nextval('unicaen_renderer_macro_id_seq'),
           'UrlFichier#LogoEtablissementInscr',
           '<p>Retourne le chemin absolu sur disque du logo (fichier) de l''établissement d''inscription pour la thèse.</p>',
            'UrlFichier',
           'getLogoEtablissementInscr'
       );

INSERT INTO unicaen_renderer_macro (id, code, description, variable_name, methode_name)
VALUES (
           nextval('unicaen_renderer_macro_id_seq'),
           'Doctorant#prenom',
           '<p>Retourne le 1er prénom du doctorant.</p>',
           'doctorant',
           'getPrenom'
       );
INSERT INTO unicaen_renderer_macro (id, code, description, variable_name, methode_name)
VALUES (
           nextval('unicaen_renderer_macro_id_seq'),
           'Doctorant#nomPatronymique',
           '<p>Retourne le nom patronymique du doctorant.</p>',
           'doctorant',
           'getNomPatronymique'
       );
INSERT INTO unicaen_renderer_macro (id, code, description, variable_name, methode_name)
VALUES (
           nextval('unicaen_renderer_macro_id_seq'),
           'Doctorant#nomUsuel',
           '<p>Retourne le nom d''usage du doctorant.</p>',
           'doctorant',
           'getNomUsuel'
       );

INSERT INTO unicaen_renderer_macro (id, code, description, variable_name, methode_name)
VALUES (
           nextval('unicaen_renderer_macro_id_seq'),
           'These#DateFinConfidentialite',
           '<p>Retourne la date de fin de confidentialité éventuelle de la thèse.</p>',
           'these',
           'getDateFinConfidentialite'
       );
INSERT INTO unicaen_renderer_macro (id, code, description, variable_name, methode_name)
VALUES (
           nextval('unicaen_renderer_macro_id_seq'),
           'These#DateSoutenanceReelleOuPrevisionnelle',
           '<p>Retourne la date réelle de soutenance ou sinon la date prévisionnelle, attachée à la thèse. Inclut l''intitulé de la date.</p>',
           'these',
           'getDateSoutenanceReelleOuPrevisionnelle'
       );

INSERT INTO unicaen_renderer_template (code, namespace, engine, description, document_type, document_sujet, document_corps, document_css)
    VALUES ('DEPOT_CONVENTION_DE_MISE_EN_LIGNE__TWIG', 'Depot\Provider\Template', 'twig',
            '<p>Convention de mise en ligne d''une thèse</p>', 'pdf', 'Convention de mise en ligne de la thèse', e'<div style="text-align: center; margin-bottom: 30px;">
    <h1>CONVENTION DE MISE EN LIGNE<br>D\'UNE THÈSE SOUTENUE</h1>

    <img src="{{ UrlFichier.getLogoEtablissementComue }}" height="3cm" alt="Logo de Normandie Université" />
</div>

<p>
    En application de la Charte de dépôt et de diffusion des thèses votée par le
    Conseil Académique de Normandie Université le 28/11/2016, il est convenu ce qui suit
    entre Normandie Université, représentée par le chef d\'établissement,
    et l’auteur identifié ci-dessous :
</p>
<p>
    <strong>Nom :</strong> {{ these.doctorant.individu.nomUsuel }}<br>
    <strong>Prénom :</strong> {{ these.doctorant.individu.prenom }}<br>
    <strong>Etablissement de préparation :</strong> {{ these.getEtablissement }}<br>

    {% if these.getDateSoutenance %}
        <strong>Date de soutenance :</strong> {{ these.getDateSoutenanceToString }}<br>
    {% else %}
        <strong>Date prévisionnelle de soutenance :</strong> {{ these.getDatePrevisionSoutenanceToString }}<br>
    {% endif %}

    {% if these.getDateFinConfidentialite %}
        <strong>Date de fin de confidentialité :</strong> {{ these.getDateFinConfidentialiteToString }}<br>
    {% endif %}

    <strong>Titre de la thèse :</strong> {{ these.getTitre ?: "(Aucun titre)" }} <br>
</p>

<div class="attestations">
    <h2>Attestations</h2>
    <div class="attestations-item">
        <div class="attestations-item-value">
            ☑ &nbsp;&nbsp;L’auteur certifie avoir pris connaissance de la charte de dépôt et de diffusion des thèses de Normandie Université
        </div>
    </div>
    <div class="attestations-item">
        <div class="attestations-item-value">
            ☑ &nbsp;&nbsp;L’auteur certifie que la version déposée sous forme numérique constitue la version de référence de la thèse
        </div>
    </div>
    <div class="attestations-item">
        <div class="attestations-item-value">
            ☑ &nbsp;&nbsp;L’auteur certifie que l’exemplaire imprimé fourni est conforme à la version numérique déposée
        </div>
    </div>
</div>

<div class="diffusion">
    <h2>Autorisation de mise en ligne</h2>

    <div class="diffusion-item">
        {% if diffusion.getAutorisMel == constant(\'\\\\Depot\\\\Entity\\\\Db\\\\Diffusion::AUTORISATION_OUI_IMMEDIAT\')
            or diffusion.getAutorisMel == constant(\'\\\\Depot\\\\Entity\\\\Db\\\\Diffusion::AUTORISATION_OUI_EMBARGO\') %}
            L’auteur autorise la mise en ligne de la version de diffusion de la thèse sur Internet (après, le cas échéant, la fin de la période de confidentialité décidée par l’établissement) :
        {% else %}
            L\'auteur n\'autorise pas la mise en ligne de la version de diffusion de la thèse sur Internet.
        {% endif %}

        <div class="diffusion-item-value">
            {% if diffusion.getAutorisMel == constant(\'\\\\Depot\\\\Entity\\\\Db\\\\Diffusion::AUTORISATION_OUI_IMMEDIAT\') %}
                ☑ &nbsp;&nbsp; Oui, immédiatement
            {% elseif diffusion.getAutorisMel == constant(\'\\\\Depot\\\\Entity\\\\Db\\\\Diffusion::AUTORISATION_OUI_EMBARGO\') %}
                ☑ &nbsp; Oui, avec embargo après soutenance d\'une durée de : {{ diffusion.getAutorisEmbargoDuree }}
                <div class=\'autoris-diffusion-motif-div\'>Motif :</div>
                <div class=\'autoris-diffusion-motif-div\'>
                    <p class=\'autoris-diffusion-motif\'>
                        {{ diffusion.getAutorisMotif }}
                    </p>
                </div>
            {% else %}
                <div class=\'autoris-diffusion-motif-div\'>
                    <p>Motif :</p>
                    <p class="autoris-diffusion-motif">
                        {{ diffusion.getAutorisMotif }}
                    </p>
                </div>
            {% endif %}
        </div>
    </div>
</div>

<pagebreak>

<div class="droits">
    <h2>Droits d\'auteur</h2>

    <div class="droits-item">
        <div class="droits-item-value">
            {% if diffusion.getDroitAuteurOk == true %}
                {% set checkbox1 = \'\' %}
                {% set checkbox2 = \'\' %}
            {% else %}
                {% set checkbox1 = \'\' %}
                {% set checkbox2 = \'\' %}
            {% endif %}
            <p>{{ checkbox1 }} &nbsp;&nbsp; L\'auteur garantit que tous les documents de la thèse sont libres de droits ou
                qu\'il a acquis les droits afférents pour la reproduction et la représentation sur tous supports.</p>
            <p>{{ checkbox2 }} &nbsp;&nbsp; À défaut, l\'auteur déclare fournir en outre lors du dépôt une version numérique
                spécifique excluant ces oeuvres tierces (version de diffusion).</p>
        </div>
    </div>
</div>

<hr>

<div>
    {% if diffusion.getAutorisMel == null %}
        <!-- RAS -->
    {% elseif diffusion.getAutorisMel == constant(\'\\\\Depot\\\\Entity\\\\Db\\\\Diffusion::AUTORISATION_OUI_IMMEDIAT\') %}
        <p>
            La loi applicable à cette présente convention est la loi française. Le tribunal compétent pour juger de tout contentieux lié au
            présent contrat est le tribunal administratif dans le ressort duquel l\'établissement de préparation du doctorat a son siège.
        </p>
    {% elseif diffusion.getAutorisMel == constant(\'\\\\Depot\\\\Entity\\\\Db\\\\Diffusion::AUTORISATION_OUI_EMBARGO\')
        or diffusion.getAutorisMel == constant(\'\\\\Depot\\\\Entity\\\\Db\\\\Diffusion::AUTORISATION_NON\') %}
        <p>
            La thèse est disponible en version imprimée au service de documentation de l’établissement d’accueil et en PDF pour l\'ensemble
            de la communauté universitaire (en intranet ou dans le cadre du Prêt Entre Bibliothèques).
        </p>
        <p>
            La loi applicable à cette présente convention est la loi française. Le tribunal compétent pour juger de tout contentieux lié au
            présent contrat est le tribunal administratif dans le ressort duquel l\'établissement de préparation du doctorat a son siège.
        </p>
    {% endif %}
</div>

<table class="signatures">
    <tr>
        <td>Date,</td>
        <td>Date,</td>
    </tr>
    <tr>
        <td>L\'auteur</td>
        <td>Le chef d\'établissement</td>
    </tr>
</table>', e'body {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 13px;
}

h1 {
    font-size: 22px;
}

h2 {
    font-size: 18px;
    margin-top: 15px;
    font-variant: small-caps;
}

hr {
    margin: 30px 0;
}

dl dt {
    font-weight: bold;
    margin-top: 10px;
}

.attestations {
    margin: 0;
}

.diffusion {
    margin: 0;
}

.signatures {
    margin: 30px auto;
    width: 90%;
}

.signatures td {
    width: 50%;
    height: 30px;
}

address {
    font-style: normal;
    font-size: 8px;
}

.attestations-item {
}

.attestations-item .attestations-item-value {
    margin-bottom: 5px;
}

.diffusion-item {
    margin-top: 10px;
    margin-bottom: 15px;
}

.diffusion-item .diffusion-item-value {
    margin-top: 10px;
}

.diffusion-item .autorisation-laius {
    margin-top: 0;
    font-size: 80%;
}

.autoris-diffusion-motif-div {
    margin-left: 30px;
    margin-top: 3px;
}

p.autoris-diffusion-motif {
    margin: 0 0 0 10px;
}

.droits-item .droits-item-value {
    margin-bottom: 10px;
}');
INSERT INTO unicaen_renderer_template (code, namespace, engine, description, document_type, document_sujet, document_corps, document_css)
    VALUES ('DEPOT_CONVENTION_DE_MISE_EN_LIGNE__LAMINAS', 'Depot\Provider\Template', 'twig',
            'Convention de mise en ligne d''une thèse', 'pdf', 'Convention de mise en ligne de la thèse', e'<?php

use Application\\Service\\Message\\DiffusionMessages;
use Depot\\Entity\\Db\\Diffusion;

/**
 * @var \\Application\\View\\Renderer\\PhpRenderer $this
 * @var \\These\\Entity\\Db\\These $these
 * @var \\Depot\\Entity\\Db\\Diffusion $diffusion
 * @var Fichier\\Service\\Url\\UrlService $UrlFichier
 */
?>

<div style="text-align: center; margin-bottom: 30px;">
    <h1>CONVENTION DE MISE EN LIGNE<br>D\'UNE THÈSE SOUTENUE</h1>

    <img src="<?php echo $UrlFichier->getLogoEtablissementComue() ?>" height="3cm" alt="Logo de Normandie Université" />
</div>

<p>
    En application de la Charte de dépôt et de diffusion des thèses votée par le
    Conseil Académique de Normandie Université le 28/11/2016, il est convenu ce qui suit
    entre Normandie Université, représentée par le chef d\'établissement,
    et l’auteur identifié ci-dessous :
</p>
<p>
    <strong>Nom :</strong> <?php echo $these->getDoctorant()->getIndividu()->getNomUsuel() ?> <br>
    <strong>Prénom :</strong> <?php echo $these->getDoctorant()->getIndividu()->getPrenom() ?> <br>
    <strong>Etablissement de préparation :</strong> <?php echo $these->getEtablissement() ?> <br>

    <?php if ($these->getDateSoutenance()): ?>
        <strong>Date de soutenance :</strong> <?php echo $these->getDateSoutenanceToString() ?><br>
    <?php else: ?>
        <strong>Date prévisionnelle de soutenance :</strong> <?php echo $these->getDatePrevisionSoutenanceToString() ?: "" ?><br>
    <?php endif ?>

    <?php if ($these->getDateFinConfidentialite() !== null): ?>
        <strong>Date de fin de confidentialité :</strong> <?php echo $these->getDateFinConfidentialiteToString() ?> <br>
    <?php endif ?>

    <strong>Titre de la thèse :</strong> <?php echo $these->getTitre() ?: "(Aucun titre)" ?> <br>
</p>

<div class="attestations">
    <h2>Attestations</h2>
    <div class="attestations-item">
        <div class="attestations-item-value">
            ☑ &nbsp;&nbsp;L’auteur certifie avoir pris connaissance de la charte de dépôt et de diffusion des thèses de Normandie Université
        </div>
    </div>
    <div class="attestations-item">
        <div class="attestations-item-value">
            ☑ &nbsp;&nbsp;L’auteur certifie que la version déposée sous forme numérique constitue la version de référence de la thèse
        </div>
    </div>
    <div class="attestations-item">
        <div class="attestations-item-value">
            ☑ &nbsp;&nbsp;L’auteur certifie que l’exemplaire imprimé fourni est conforme à la version numérique déposée
        </div>
    </div>
</div>

<div class="diffusion">
    <h2>Autorisation de mise en ligne</h2>

    <div class="diffusion-item">
        <?php if ($diffusion->getAutorisMel() === Diffusion::AUTORISATION_OUI_IMMEDIAT || $diffusion->getAutorisMel() === Diffusion::AUTORISATION_OUI_EMBARGO): ?>
            L’auteur autorise la mise en ligne de la version de diffusion de la thèse sur Internet (après, le cas échéant, la fin de la période de confidentialité décidée par l’établissement) :
        <?php else: ?>
            L\'auteur n\'autorise pas la mise en ligne de la version de diffusion de la thèse sur Internet.
        <?php endif; ?>

        <div class="diffusion-item-value">
            <?php if ($diffusion->getAutorisMel() === Diffusion::AUTORISATION_OUI_IMMEDIAT): ?>
                ☑ &nbsp;&nbsp; Oui, immédiatement
            <?php elseif ($diffusion->getAutorisMel() === Diffusion::AUTORISATION_OUI_EMBARGO): ?>
                ☑ &nbsp; Oui, avec embargo après soutenance d\'une durée de : <?php echo $diffusion->getAutorisEmbargoDuree() ?>
                <div class=\'autoris-diffusion-motif-div\'>Motif :</div>
                <div class=\'autoris-diffusion-motif-div\'>
                    <p class=\'autoris-diffusion-motif\'>
                        <?php echo $diffusion->getAutorisMotif() ?>
                    </p>
                </div>
            <?php else: ?>
                <div class=\'autoris-diffusion-motif-div\'>
                    <p>Motif :</p>
                    <p class=\\"autoris-diffusion-motif\\">
                        <?php echo $diffusion->getAutorisMotif() ?>
                    </p>
                </div>
            <?php endif; ?>
        </div>
    </div>
</div>

<pagebreak>

<div class="droits">
    <h2>Droits d\'auteur</h2>

    <div class="droits-item">
        <div class="droits-item-value">
            <?php if ($diffusion->getDroitAuteurOk() === true) {
                $checkbox1 = \'\';
                $checkbox2 = \'\';
            } else {
                $checkbox1 = \'\';
                $checkbox2 = \'\';
            } ?>
            <p><?php echo $checkbox1 ?> &nbsp;&nbsp; L\'auteur garantit que tous les documents de la thèse sont libres de droits ou
                qu\'il a acquis les droits afférents pour la reproduction et la représentation sur tous supports.</p>
            <p><?php echo $checkbox2 ?> &nbsp;&nbsp; À défaut, l\'auteur déclare fournir en outre lors du dépôt une version numérique
                spécifique excluant ces oeuvres tierces (version de diffusion).</p>
        </div>
    </div>
</div>

<hr>

<div>
    <?php if ($diffusion->getAutorisMel() === null): ?>
        <!-- RAS -->
    <?php elseif ($diffusion->getAutorisMel() === Diffusion::AUTORISATION_OUI_IMMEDIAT): ?>
        <p>
            La loi applicable à cette présente convention est la loi française. Le tribunal compétent pour juger de tout contentieux lié au
            présent contrat est le tribunal administratif dans le ressort duquel l\'établissement de préparation du doctorat a son siège.
        </p>
    <?php elseif ($diffusion->getAutorisMel() === Diffusion::AUTORISATION_OUI_EMBARGO || $diffusion->getAutorisMel() === Diffusion::AUTORISATION_NON): ?>
        <p>
            La thèse est disponible en version imprimée au service de documentation de l’établissement d’accueil et en PDF pour l\'ensemble
            de la communauté universitaire (en intranet ou dans le cadre du Prêt Entre Bibliothèques).
        </p>
        <p>
            La loi applicable à cette présente convention est la loi française. Le tribunal compétent pour juger de tout contentieux lié au
            présent contrat est le tribunal administratif dans le ressort duquel l\'établissement de préparation du doctorat a son siège.
        </p>
    <?php endif; ?>
</div>

<table class="signatures">
    <tr>
        <td>Date,</td>
        <td>Date,</td>
    </tr>
    <tr>
        <td>L\'auteur</td>
        <td>Le chef d\'établissement</td>
    </tr>
</table>', e'body {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 13px;
}

h1 {
    font-size: 22px;
}

h2 {
    font-size: 18px;
    margin-top: 15px;
    font-variant: small-caps;
}

hr {
    margin: 30px 0;
}

dl dt {
    font-weight: bold;
    margin-top: 10px;
}

.attestations {
    margin: 0;
}

.diffusion {
    margin: 0;
}

.signatures {
    margin: 30px auto;
    width: 90%;
}

.signatures td {
    width: 50%;
    height: 30px;
}

address {
    font-style: normal;
    font-size: 8px;
}

.attestations-item {
}

.attestations-item .attestations-item-value {
    margin-bottom: 5px;
}

.diffusion-item {
    margin-top: 10px;
    margin-bottom: 15px;
}

.diffusion-item .diffusion-item-value {
    margin-top: 10px;
}

.diffusion-item .autorisation-laius {
    margin-top: 0;
    font-size: 80%;
}

.autoris-diffusion-motif-div {
    margin-left: 30px;
    margin-top: 3px;
}

p.autoris-diffusion-motif {
    margin: 0 0 0 10px;
}

.droits-item .droits-item-value {
    margin-bottom: 10px;
}');
```
 No newline at end of file
+4 −0
Original line number Diff line number Diff line
@@ -317,6 +317,7 @@ return array(
//            'UnicaenApp\Service\EntityManagerAwareInitializer',
//        ],
    ],

    'public_files' => [
        'head_scripts' => [
            '040_tinymce' => "/vendor/tinymce-6.3.0/js/tinymce/tinymce.min.js",
@@ -330,10 +331,13 @@ return array(
        'inline_scripts' => [
            '070_bootstrap-select' => '/vendor/bootstrap-select-1.14.0-beta3/js/bootstrap-select.min.js',
            '070_bootstrap-select-fr' => '/vendor/bootstrap-select-1.14.0-beta3/js/i18n/defaults-fr_FR.js',
            '080_select2' => 'vendor/select2-4.0.13/dist/js/select2.min.js',
            '902_tinymce' => '/vendor/tinymce_7.6.0/js/tinymce/tinymce.min.js',
        ],
        'stylesheets'           => [
            '050_bootstrap-theme' => false,
            '066_charte' => '/css/charte.css',
            '080_select2' => 'vendor/select2-4.0.13/dist/css/select2.min.css',
            '200_fa' => '/vendor/fontawesome-free-5.12.0-web/css/all.min.css',
            '300_bs' => '/vendor/bootstrap-select-1.14.0-beta3/css/bootstrap-select.min.css',
            '400_faa' => '/vendor/font-awesome-animation.min.css',
+19 −0
Original line number Diff line number Diff line
<?php

namespace Application\Renderer;

/**
 * Classe mère des "adapters" destinés à alimenter des macros de la bibliothèque "unicaen/renderer".
 *
 * Hériter de cette classe et créer les méthodes utiles seulement dans le cadre
 * de macros, pour ne pas polluer les classes métiers ou les services avec des choses orientées "affichage".
 */
abstract class AbtractRendererAdapter implements RendererAdapterInterface
{
    protected array $context = [];

    public function setContext(array $context): void
    {
        $this->context = $context;
    }
}
 No newline at end of file
+14 −0
Original line number Diff line number Diff line
<?php

namespace Application\Renderer;

/**
 * Interface des "adapters" destinés à alimenter des macros de la bibliothèque "unicaen/renderer".
 *
 * Implémenter cette interface dans une classe pour y implémenter les méthodes utiles seulement dans le cadre
 * de macros, pour ne pas polluer les classes métiers ou les services avec des choses orientées "affichage".
 */
interface RendererAdapterInterface
{
    public function setContext(array $context);
}
 No newline at end of file
Loading