Code des contenus ODF


A partir de Ametys ODF 4.9

  1. Nomenclature des codes
    1. Personnaliser la nomenclature
  2. Code d'affichage
    1. Personnaliser le code d'affichage

Nomenclature des codes

Ametys ODF 4.9, permet de choisir dans les paramètres de configuration, la nomenclature à utiliser pour les objets ODF créés dans le back-office (formation, parcours, conteneur, liste, ELP, heure d'enseignements, composante):

Par défaut 2 nomenclatures sont possibles:

  • Code aléatoire: code aléatoire basé sur le temps système en millisecondes
  • Code incrémental préfixé en fonction du type: FOR1, FOR2, .. PAR1, PAR2, ... CTN1, CTN2, ...LST1, LST2, .., ELP1, ELP2, ..., CMP1, CMP2, ..., HE1, HE2, ...

Personnaliser la nomenclature

Il est possible de définir sa propre nomenclature en définissant une nouvelle extension de type "org.ametys.odf.content.code.UniqueCodeGeneratorExtensionPoint"

Pensez à déclarer l'extension dans une feature "safe" pour pouvoir sélectionner votre extension dans les paramètres de configuration en safe mode

Exemple 1: Définir ces propres préfixes en fonction des objets ODF

Cet exemple permet de définir une nouvelle nomenclature avec ses propres préfixes par type et code incrémental

<feature name="custom.code.generator" safe="true">
        <extensions>
        <extension id="custom-code-generator"
                       point="org.ametys.odf.content.code.UniqueCodeGeneratorExtensionPoint"
                       class="org.ametys.odf.content.code.PrefixedIncrementalCodeGenerator">
              <label i18n="false">Ma nomenclature</label>
             <prefix type="org.ametys.plugins.odf.Content.program">PR</prefix>
             <prefix type="org.ametys.plugins.odf.Content.subProgram">SP</prefix>
             <prefix type="org.ametys.plugins.odf.Content.container">CT</prefix>
             <prefix type="org.ametys.plugins.odf.Content.courseList">CL</prefix>
             <prefix type="org.ametys.plugins.odf.Content.course">CO</prefix>
             <prefix type="org.ametys.plugins.odf.Content.orgunit">OU</prefix>
             <prefix type="org.ametys.plugins.odf.Content.coursepart">CP</prefix>
            </extension>
        </extensions>
    </feature>

Exemple 2: nomenclature basée sur une classe java

<feature name="custom.code.generator" safe="true">
        <extensions>
        <extension id="custom-code-generator"
                       point="org.ametys.odf.content.code.UniqueCodeGeneratorExtensionPoint"
                     class="fr.ametys.project.CustomCodeGenerator">
              <label i18n="false">Ma nomenclature</label>
            </extension>
        </extensions>
    </feature>

Votre classe devra étendre la classe "org.ametys.odf.content.code.AbstractUniqueCodeGenerator" et implémenter sa propre méthode generateUniqueCode(String cTypeId)

Attention vous devez vous assurer que le code généré est unique !

Code d'affichage

A partir de Ametys ODF 4.9, il est possible dans les paramètres de configuration de choisir le code des contenus ODF utilisés pour l'affichage (maquette, outils de recherche, tableaux de bord, ...) et dans les exports ou extractions.

Ametys propose par défaut 5 codes d'affichage possibles:

  • Code Ametys : il s'agit du code interne, unique. Son format dépend de la nomenclature choisie (cf. plus haut).
  • Code de synchronisation Apogée (apogeeSyncCode)
  • Code de synchronisation Pégase (pegaseSyncCode)
  • Code de synchronisation CDMfr (cdmfrSyncCode)
  • Code Apogée
    Ce dernier est composé des codes Apogée apportés par le plugin Pilotage:
    • pour les formations et parcours il est composé des champs Code DIP (codeDIP) et Code VDI (codeVSRVDI) séparé par un "-"
    • pour les conteneurs il est composé des champs Code ETP (etpCode) et Code VET (vsrEtpCode) séparé par un "-"
    • pour les ELP il est égal au champ Code ELP (elpCode)

Si le code choisi pour l'affichage est vide, c'est le code Ametys qui sera utilisé.

Dans les moteurs de recherche, le critère "Code" permet de rechercher à la fois sur le code d'affichage sélectionné et le code Ametys.
Pour que la recherche soit fonctionnelle, une réindexation totale est nécessaire à chaque modification du paramètre de configuration "Code d'affichage)

Personnaliser le code d'affichage

Il est possible de définir son propre fournisseur pour le code d'affichage en définissant une nouvelle extension de type "org.ametys.odf.content.code.DisplayCodeProviderExtensionPoint"

Pensez à déclarer l'extension dans une feature "safe" pour pouvoir sélectionner votre extension dans les paramètres de configuration en safe mode

Exemple 1: Code basé sur un ou plusieurs champs du modèle

Pour chaque type de contenu, lister les champs devant composer le code comme dans les 2 exemples ci-dessous:

<feature name="custom.display.code" safe="true">
        <extensions>
        <extension id="custom-display-code"
                     point="org.ametys.odf.content.code.DisplayCodeProviderExtensionPoint"
                     class="org.ametys.odf.content.code.AttributeBasedDisplayCodeProvider">
              <label i18n="false">Mon code projet</label>
                <!-- Tous les contenus ODF -->
                <type id="org.ametys.plugins.odf.Content.odfContent">
                <item ref="customCode"/>
                </type>
            </extension>
        </extensions>
    </feature>
<feature name="custom.display.code" safe="true">
 <extensions>
 <extension id="custom-display-code"
                     point="org.ametys.odf.content.code.DisplayCodeProviderExtensionPoint"
                     class="org.ametys.odf.content.code.AttributeBasedDisplayCodeProvider">
              <label i18n="false">Mon code projet</label>
            <!-- Formation et parcours -->
                <type id="org.ametys.plugins.odf.Content.abstractProgram">
                <item ref="customProgramCode1"/>
                <item ref="customProgramCode2"/>
                </type>
         <!-- Conteneurs -->
                <type id="org.ametys.plugins.odf.Content.container">
                <item ref="customContainerCode"/>
                </type>
          <!-- ELP -->
                <type id="org.ametys.plugins.odf.Content.course">
                <item ref="customCourseCode"/>
                </type>
            </extension>
 </extensions>
</feature>

Exemple 2: Code d'affichage basé sur un algorithme java

Vous pouvez définir votre classe java lorsque que le calcul du code d'affichage est plus complexe

<feature name="custom.display.code" safe="true">
        <extensions>
        <extension id="custom-display-code"
                     point="org.ametys.odf.content.code.DisplayCodeProviderExtensionPoint"
                   class="fr.ametys.project.CustomCodeProvider">
              <label i18n="false">Mon code projet</label>
            </extension>
        </extensions>
    </feature>

Votre classe devra étendre la classe "org.ametys.odf.content.code.AbstractStaticProgramItemDisplayCodeProvider" et implémenter sa propre méthode getDisplayCode(Content content)

Retour en haut

Présentation générale d'Ametys ODF