Présentation

L'export maquette est disponible au format DOC et XLS.

Il existe une version différentielle de ce rapport.

Un fichier est généré pour chaque formation, il est possible de le lancer directement depuis une formation, mais aussi de générer toutes les maquettes de formation d'une composante.

Surcharge

Cet export se base sur une vue nommée report-maquette. Cette vue est disponible dans chacun des types de contenu de l'ODF.

Il est possible d'ajouter et d'enlever des données de l'export via cette vue mais cela n'est pas suffisant. Il est également nécessaire de surcharger les XSL de rendu.

Organisation des XSL

Les XSL de rendus peuvent être surchargées dans le dossier WEB-INF/stylesheets/pilotage/report.

Il y a plusieurs fichiers disponibles :

  • maquette2doc.xsl : Rendu DOC de l'export des maquettes
  • maquette2xls.xsl : Rendu XLS de l'export des maquettes
  • maquettediff2doc.xsl : Rendu DOC de l'export des maquettes différentiel (basé sur l'export simple)
  • maquettediff2xls.xsl : Rendu XLS de l'export des maquettes différentiel (basé sur l'export simple)
  • maquette/legende2doc.xsl : Légende pour le format DOC
  • maquette/legende2xls.xsl : Légende pour le format XLS
  • params/maquette.xsl : Paramétrage commun comme les tables de référence prise en compte pour l'affichage dans la légende par exemple

Pour chacune des XSL surchargées, il est nécessaire d'importer son équivalent noyau :

<xsl:import href="plugin:odf-pilotage://stylesheets/pilotage/report/[chemin restant de la XSL]"/>

Structure principale

Chaque rendu est composé de deux parties : les données (match="program") et la légende (name="legende").

Dans la partie données, il y a :

  • des variables pour définir le nombre de colonnes (pour les fusions de colonnes) :
    • nbColumnsBefore : nombre de colonnes avant les heures d'enseignement
    • nbColumnsAfter : nombre de colonnes après les heures d'enseignement
    • titleColumnPosition : position de la colonne contenant le titre, à garder à jour pour permettre de bons alignements
  • des entêtes intermédiaires : formation (match="program"), parcours (match="subProgram"), conteneur de type année (match="container[nature/code = 'annee']"), et autre conteneur (match="container")
  • un tableau pour chaque liste de premier niveau (match="courseList") avec :
    • les entêtes de colonnes (name="table-head") dont :
      • les colonnes affichées avant les heures d'enseignement (name="before-course-parts")
      • les colonnes des heures d'enseignement
      • les colonnes affichées après les heures d'enseignement (name="after-course-parts")
    • les données (name="table-body") dont chaque sous élément est exploré (mode="child")
      • chaque type de liste d'ELP peut définir une ligne spécifique (mode="courselist-header")
      • et les ELP définissent les cellules affichées sur leur ligne (match="course")

Comment procéder ?

Ajouter ou supprimer les données de la ou les vues report-maquette de chaque type de contenu.

Pour modifier un entête, il faut aller modifier également le template concerné par l'entête : match="program" ou match="subProgram" ou match="container[nature/code = 'annee']" ou match="container"

Pour modifier les colonnes du tableau, il faut modifier les templates before-course-parts ou after-course-parts en fonction de là où est la colonne afin d'ajouter / modifier / supprimer l'entête. Attention aux largeurs des colonnes dans la version DOC.
Et également modifier les cellules traitées par chaque ELP. Dans le cas d'une suppression de colonne, il est recommandé de vider le template concernant la donnée directement : match="course" mode="cell-*". Dans le cas d'un ajout de colonne, il faudra surcharger le template match="course" pour ajouter le template de traitement de la donnée.

Enfin, les variables nbColumnsBeforenbColumnsAfter et titleColumnPosition doivent être mises à jour si nécessaire.

Pour compléter, il est possible de mettre à jour la légende.

Exemple

Imaginons le cas d'ajout d'une colonne pour afficher le nombre d'heures saisi sur l'ELP.

Il faut déjà ajouter la donnée à la vue report-maquette voir même ici à report-maquette-compare (qui sont les données comparables) dans le fichier WEB-INF/param/content-types/_override/org.ametys.plugins.odf.Content.course.xml :

<?xml version="1.0" encoding="UTF-8"?>
<content-type>
    <view name="report-maquette-compare" override="true">
        <item ref="nbHours"/>
    </view>
</content-type>

Ensuite, il faut surcharger le rendu DOC avec WEB-INF/stylesheets/pilotage/report/maquette2doc.xsl en modifiant le nombre de colonnes avant les heures d'enseignement nbColumnsBefore, en ajoutant l'entête de colonne dans le template before-course-parts et en modifiant le template match="course" mode="cell-shared" pour ajouter les cellules manquantes :

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:i18n="http://apache.org/cocoon/i18n/2.1">

    <xsl:import href="plugin:odf-pilotage://stylesheets/pilotage/report/maquette2doc.xsl"/>

    <xsl:variable name="nbColumnsBefore" select="6"/>

    <xsl:template name="before-course-parts">
        <td style="width: 20mm;" class="codeAmetys"><i18n:text i18n:catalogue="plugin.odf-pilotage" i18n:key="PLUGINS_ODF_PILOTAGE_MAQUETTE_CODE_AMETYS"/></td>
        <td/>
        <td style="width: 15mm;"><i18n:text i18n:catalogue="plugin.odf-pilotage" i18n:key="PLUGINS_ODF_PILOTAGE_MAQUETTE_NATURE"/></td>
        <td style="width: 10mm;"><i18n:text i18n:catalogue="plugin.odf-pilotage" i18n:key="PLUGINS_ODF_PILOTAGE_MAQUETTE_ECTS"/></td>
        <td style="width: 10mm;"><i18n:text i18n:catalogue="plugin.odf-pilotage" i18n:key="PLUGINS_ODF_PILOTAGE_MAQUETTE_PARTAGE_ABREV"/></td>
        <td style="width: 10mm;">Nombre d'heures</td>
    </xsl:template>

    <xsl:template match="course" mode="cell-shared">
        <xsl:param name="suffix"/>

        <xsl:variable name="occurences" select="count(parentCourseLists)"/>
        <td class="border{$suffix}">
            <xsl:if test="$occurences > 1">X (<xsl:value-of select="$occurences"/>)</xsl:if>
        </td>
        <td class="border{$suffix}">
            <xsl:value-of select="nbHours"/>
         </td>
    </xsl:template>
</xsl:stylesheet>

Et le rendu XLS WEB-INF/stylesheets/pilotage/report/maquette2xls.xsl de la même manière :

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:i18n="http://apache.org/cocoon/i18n/2.1">

    <xsl:import href="plugin:odf-pilotage://stylesheets/pilotage/report/maquette2xls.xsl"/>

    <xsl:variable name="nbColumnsBefore" select="7"/>

    <xsl:template name="before-course-parts">
        <td style="width: 20mm;"><i18n:text i18n:catalogue="plugin.odf-pilotage" i18n:key="PLUGINS_ODF_PILOTAGE_MAQUETTE_CODE_AMETYS"/></td>
        <td style="width: 100mm;"/>
        <td style="width: 15mm;"><i18n:text i18n:catalogue="plugin.odf-pilotage" i18n:key="PLUGINS_ODF_PILOTAGE_MAQUETTE_NATURE"/></td>
        <td style="width: 10mm;"><i18n:text i18n:catalogue="plugin.odf-pilotage" i18n:key="PLUGINS_ODF_PILOTAGE_MAQUETTE_ECTS"/></td>
        <td style="width: 10mm;"><i18n:text i18n:catalogue="plugin.odf-pilotage" i18n:key="PLUGINS_ODF_PILOTAGE_MAQUETTE_PARTAGE_ABREV"/></td>
<td style="width: 10mm;"><i18n:text i18n:catalogue="plugin.odf-pilotage" i18n:key="PLUGINS_ODF_PILOTAGE_MAQUETTE_OCCURRENCE_ABREV"/></td>
        <td style="width: 10mm;">Nombre d'heures</td>
    </xsl:template>

    <xsl:template match="course" mode="cell-shared">
        <xsl:param name="suffix"/>

        <xsl:variable name="occurences" select="count(parentCourseLists)"/>
        <td class="border{$suffix}">
            <xsl:if test="$occurences > 1">X</xsl:if>
        </td>
        <td class="border{$suffix}">
            <xsl:if test="$occurences > 1"><xsl:value-of select="$occurences"/></xsl:if>
        </td>
        <td class="border{$suffix}">
            <xsl:value-of select="nbHours"/>
        </td>
    </xsl:template>
</xsl:stylesheet>

 

Retour en haut

Installation, administration et paramétrage d'Ametys ODF