Exclusion de l'action "Modification des PJ" du ruban
L'action "Modification des PJ" apparaît dans le ruban si vous n'avez pas mis à jour votre workflow en prenant modèle sur celui du template ODF ou ODF-Web selon votre cas.
L'action 12 doit être exclue des boutons avec l'identifiant org.ametys.odf.course.workflow.WorkflowSteps, org.ametys.odf.program.workflow.WorkflowSteps, org.ametys.odf.subprogram.workflow.WorkflowSteps dans la balise workflow-actions si elle est en mode exclude.
Bouton de republication CDM-fr des formations sur les portails ou dossiers partagés
Cette migration n'est nécessaire que si vous voulez ajouter un bouton de republication CDM-fr des formations vers les portails ou dossiers partagés ou bien si vous souhaitez remplacer un bouton de republication que vous aviez défini au niveau du projet par ce qui est proposé au niveau du noyau.
Cette option est automatiquement désactivée si la configuration n'envoie pas le CDM-fr à un serveur distant ou ne dépose pas les fichiers CDM-fr dans un dossier.
Pour en bénéficier, il faut faire les actions suivantes :
Dans le fichier plugin.xml du plugin default-odf-workflow, ajouter les deux features suivantes (La première définit le bouton, la seconde appelle le ribbon qui place le bouton au bon endroit) :
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.
Dans les fichiers I18N du plugin default-odf-workflow (i18n/messages_*.xml), ajouter les clefs suivantes (français et anglais) utiles à l'action de workflow additionnelle (voir ci-après) :
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.
<message key="WORKFLOW_ACTION_REPUBLISH">Republier</message>
<message key="WORKFLOW_ACTION_REPUBLISH_DESCRIPTION">Force la republication du contenu sur le portail distant.</message>
<message key="WORKFLOW_ACTION_REPUBLISH_ACTION_DESCRIPTION"><strong>{user}</strong> a republié le contenu sur le portail.</message>
<message key="WORKFLOW_ACTION_REPUBLISH">Republier</message>
<message key="WORKFLOW_ACTION_REPUBLISH_DESCRIPTION">Force la republication du contenu sur le portail distant.</message>
<message key="WORKFLOW_ACTION_REPUBLISH_ACTION_DESCRIPTION"><strong>{user}</strong> a republié le contenu sur le portail.</message>
<message key="WORKFLOW_ACTION_REPUBLISH">Republier</message>
<message key="WORKFLOW_ACTION_REPUBLISH_DESCRIPTION">Force la republication du contenu sur le portail distant.</message>
<message key="WORKFLOW_ACTION_REPUBLISH_ACTION_DESCRIPTION"><strong>{user}</strong> a republié le contenu sur le portail.</message>
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.
<message key="WORKFLOW_ACTION_REPUBLISH">Republish</message>
<message key="WORKFLOW_ACTION_REPUBLISH_DESCRIPTION">Republish the selected content(s) on portal.</message>
<message key="WORKFLOW_ACTION_REPUBLISH_ACTION_DESCRIPTION"><strong>{user}</strong> has republished the content.</message>
<message key="WORKFLOW_ACTION_REPUBLISH">Republish</message>
<message key="WORKFLOW_ACTION_REPUBLISH_DESCRIPTION">Republish the selected content(s) on portal.</message>
<message key="WORKFLOW_ACTION_REPUBLISH_ACTION_DESCRIPTION"><strong>{user}</strong> has republished the content.</message>
<message key="WORKFLOW_ACTION_REPUBLISH">Republish</message>
<message key="WORKFLOW_ACTION_REPUBLISH_DESCRIPTION">Republish the selected content(s) on portal.</message>
<message key="WORKFLOW_ACTION_REPUBLISH_ACTION_DESCRIPTION"><strong>{user}</strong> has republished the content.</message>
Enfin, dans le workflow des formations nommé program.xml ou workflow-program.xml dans WEB-INF/param[/workflows], il est nécessaire d'ajouter l'action de republication 9001 dans l'état validé 3 :
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.
Les données totalDurationOf* ont totalement disparues, toutes les références à celles-ci doivent être migrées. Cela veut notamment dire que si vous avez surchargé le type de contenu ELP (course), il faut supprimer les références vers les données totalDurationOf* et les remplacer par une référence vers la métadonnée courseParts.
Données
La migration des données se fait automatiquement via une classe d'initialisation.
Elle est désactivable une fois que les données ont été migrées, c'est la feature odf-web/init.course-part, mais ce n'est pas indispensable. Reconstruire les index et le live après le premier démarrage en M3.
Workflow
Il y a un nouveau worfklow, le workflow des heures d'enseignement (ou CoursePart), c'est le fichier workflows/course-part.xml. Il faut aussi ajouter son libellé dans application.xml :
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.
Le workflow des ELP (workflows/course.xml) a été mis à jour pour ajouter après la validation d'un contenu de type ELP, la validation des heures d'enseignement qui y sont rattachées. Il faut donc ajouter dans workflows/course.xml, après chaque appel à la fonction org.ametys.odf.workflow.ValidateODFContentFunction, l'appel à la fonction org.ametys.odf.workflow.MoveLiveTagOnCoursePartFunction :
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.
Pour les imports CDM-fr non Ametys ou antérieurs à Ametys v4.2 (ODF 4.1), Si dans la synchronisation CDM-fr, vous avez surchargé les templates nommés course-totalDurationOf*, ils faut les modifier pour qu'ils importent des CoursePart sous la forme suivante :
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.
Pour faire de l'import Ametys v4.2 (ODF 4.1), il faudra utiliser le template nommé course-courseParts.
Import Apogée
Une requête a été ajoutée au fichier apogee-requests.xml :
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.
<select id="getCourseParts" parameterType="java.util.Map" resultType="map">
<include refid="Functions.isNotBlank" />
SELECT DISTINCT
COD_TYP_HEU,
NBR_HEU_ELP
FROM ELP_CHG_TYP_HEU
WHERE upper(COD_ELP)=upper(#{apogeeSyncCode})
<if test="#fn = isNotBlank, #fn(year)">
AND (COD_ANU IS NULL OR COD_ANU = #{year})
</if>
</select>
<select id="getCourseParts" parameterType="java.util.Map" resultType="map">
<include refid="Functions.isNotBlank" />
SELECT DISTINCT
COD_TYP_HEU,
NBR_HEU_ELP
FROM ELP_CHG_TYP_HEU
WHERE upper(COD_ELP)=upper(#{apogeeSyncCode})
<if test="#fn = isNotBlank, #fn(year)">
AND (COD_ANU IS NULL OR COD_ANU = #{year})
</if>
</select>
<select id="getCourseParts" parameterType="java.util.Map" resultType="map">
<include refid="Functions.isNotBlank" />
SELECT DISTINCT
COD_TYP_HEU,
NBR_HEU_ELP
FROM ELP_CHG_TYP_HEU
WHERE upper(COD_ELP)=upper(#{apogeeSyncCode})
<if test="#fn = isNotBlank, #fn(year)">
AND (COD_ANU IS NULL OR COD_ANU = #{year})
</if>
</select>
Et en parallèle de cela, la requête remontant les données d'un ELP dont les volumes horaires a été simplifiée. Les volumes horaires ne sont plus stockés au même endroit et peuvent maintenant être multiples pour une même nature d'enseignement. Toutes les références à la table ELP_CHARGE_ENS ont donc été supprimées de la requête searchCourses.
Le mapping associé présent dans apogee-mapping.xml également :
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.
Donc si vous avez surchargé apogee-mapping.xml et/ou apogee-requests.xml, il faudra les comparer aux nouvelles versions noyau.
Copie de catalogue
Une nouvelle action de workflow allégée a été faite pour la copie de catalogue (et la traduction) afin de réduire le temps de copie. Il faut rajouter l'action 210 à l'étape 1 des workflow program, subprogram, container, courselist, course et course-part :
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.
Cette action est une interne qui doit être exclue des menus de workflows. Pour cela dans le plugin.xml de votre plugin default-odf-workflow, ajoutez <action>210</action> dans la section <workflow-actions mode="exclude"> pour la déclaration des menus suivants :
org.ametys.odf.course.workflow.WorkflowSteps
org.ametys.odf.program.workflow.WorkflowSteps
org.ametys.odf.subprogram.workflow.WorkflowSteps
org.ametys.odf.container.workflow.WorkflowSteps
org.ametys.odf.courselist.workflow.WorkflowSteps
En cas de doute, reportez-vous aux plugin default-odf-workflow des templates ODF et ODF web.
Catégories des tables de référence hiérarchiques avec titre multilingue
Les titres des catégories des tables de référence sont maintenant multilingues.
Exécutez le script suivant pour migrer les catégories existantes:
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.
var count = 0;
function _titleMigration(content)
{
var titleProp = content.getNode().getProperty("ametys:title");
var title = titleProp.getString();
titleProp.remove();
content.getMetadataHolder().setMetadata("title", title, new java.util.Locale("fr"));
count++;
}
jcrXPathQuery("//element(*, ametys:content)[(@ametys-internal:contentType = 'odf-enumeration.CodeErasmusCategory' or @ametys-internal:contentType = 'odf-enumeration.CodeFapCategory' or @ametys-internal:contentType = 'odf-enumeration.EnseignementNatureCategory') and @ametys:title]")
.forEach(function (content)
{
migrateContent(
content,
[_titleMigration],
true /* old versions incompatible */,
null /* no tag */,
false /* not verbose */
);
}
);
print(count + " reference table entries have been migrated");
var count = 0;
function _titleMigration(content)
{
var titleProp = content.getNode().getProperty("ametys:title");
var title = titleProp.getString();
titleProp.remove();
content.getMetadataHolder().setMetadata("title", title, new java.util.Locale("fr"));
count++;
}
jcrXPathQuery("//element(*, ametys:content)[(@ametys-internal:contentType = 'odf-enumeration.CodeErasmusCategory' or @ametys-internal:contentType = 'odf-enumeration.CodeFapCategory' or @ametys-internal:contentType = 'odf-enumeration.EnseignementNatureCategory') and @ametys:title]")
.forEach(function (content)
{
migrateContent(
content,
[_titleMigration],
true /* old versions incompatible */,
null /* no tag */,
false /* not verbose */
);
}
);
print(count + " reference table entries have been migrated");
var count = 0;
function _titleMigration(content)
{
var titleProp = content.getNode().getProperty("ametys:title");
var title = titleProp.getString();
titleProp.remove();
content.getMetadataHolder().setMetadata("title", title, new java.util.Locale("fr"));
count++;
}
jcrXPathQuery("//element(*, ametys:content)[(@ametys-internal:contentType = 'odf-enumeration.CodeErasmusCategory' or @ametys-internal:contentType = 'odf-enumeration.CodeFapCategory' or @ametys-internal:contentType = 'odf-enumeration.EnseignementNatureCategory') and @ametys:title]")
.forEach(function (content)
{
migrateContent(
content,
[_titleMigration],
true /* old versions incompatible */,
null /* no tag */,
false /* not verbose */
);
}
);
print(count + " reference table entries have been migrated");
Migration des services
Les services ODF comme tous les autres services nécessitent une migration suite à des modifications sur le format de stockage. Exécutez le script de la page dédiée à la migration des services
Dossier d'export CDM-fr
Si vous avez activé l'export CDM-fr sur le disque lors de la validation des formations (dans les paramètres de configuration), le dossier d'export n'est plus configurable.
Les fichiers CDM-fr sont maintenant déposés dans le dossier $AMETYS_HOME/data/odf/cdmfr.
Vous pouvez déplacer vos fichiers existants dans l'ancien répertoire d'export, dans ce nouveau dossier.
Attention, si vous avez une application tierce qui exploite ce dossier, pensez à modifier cette application.
Modification des urls des pages de formations et parcours
Avant les URLs des pages virtuelles étaient formées du titre de la formation, suivi du nom du contenu (unique dans Ametys). Par exemple : catalogue/master-XB/droit-economie-gestion-DEG/master-droit-program-fruai07517h489j10u.html
Désormais elles sont construites à partir du titre de la formation, suivi du code de la formation ou parcours (tout comme les ELPs) Par exemple : catalogue/master-XB/droit-economie-gestion-DEG/master-droit-h489j10u.html
Vos anciennes URL seront automatiquement redirigées vers les nouvelles URL.
En conséquence, le tiret "-" est interdit dans le code des formations et des parcours. Pour s'assurer que le code est correct pour ces éléments, passez le script suivant, qui les modifiera le cas échéant.