Ce guide traite de la migration technique de votre application Ametys CMS d'une version 4.3.x à 4.4.0.
Reportez-vous également au guide de migration graphique.
Reportez-vous au tableau de compatibilité des plugins et incrémentez les versions de vos plugins (prendre pour chaque plugin la version la plus récente compatible 4.4)
Dans le fichier runtime.xml supprimez la ligne suivante:
<org.ametys.cms.repository.comment.CommentManagerExtensionPoint>org.ametys.web.repository.comment.WebCommentManagerExtensionPoint</org.ametys.cms.repository.comment.CommentManagerExtensionPoint>
Dans le répertoire WEB-INF/param/workflows de votre application, pour tous les fichiers de définition des workflow contenant des actions de copie (en général 111 et 222) :
<function type="avalon"> <arg name="role">org.ametys.XXX.CreateYYYByCopyFunction</arg> </function> <function type="avalon"> <arg name="role">org.ametys.cms.workflow.EditContentFunction</arg> </function>
Par ailleurs, il y a eu renommage, à impacter par rechercher/remplacer dans les fichiers de workflow :
De plus, les fichiers de définition des workflow des utilisateurs user.xml et des entités de l'annuaire udorgunit.xml doivent être retouchés.
Dans l'action 200, ajoutez la pre-fonction ici après entre la section <restrict-to> et la section <results> :
<pre-functions> <function type="avalon"> <arg name="role">org.ametys.cms.workflow.EditContentFunction</arg> </function> </pre-functions>
Vous devez posséder ces fichiers si votre application utilise le plugin Annuaire (user-directory).
Les types multilingual_string et rich_text utilisés dans la définition des attribut des types de contenus ont été renommés respectivement en multilingual-string et rich-text.
Recherchez dans la définition de vos types de contenus toutes les occurrences de type="multilingual_string" et type="rich_text" pour les remplacer.
Dans la définition d'un type de contenu, il n'est plus possible d'avoir 2 versions (view + edition) d'une vue avec le même nom.
La migration concerne tous vos types de contenus (spécifiques ou surchargés) et la vue "main". Deux cas de figure peuvent se présenter :
Les paramètres de requêtes nommés metadataSetName, fallbackMetadataSetName et isEditionMetadataSet ont été respectivement renommés en viewName, fallbackViewName et isEdition
Recherchez toutes les occurrences de metadataSetName, fallbackMetadataSetName et isEditionMetadataSet dans vos fichier sitemap.xmap, vos sources java et vos fichiers JS pour les remplacer.
Les paramètres d'un I18nizableText sont maintenant des I18nizableTextParameter, il peut donc y avoir des erreurs de compilation, faciles à résoudre.
Dans la méthode #validate à trois arguments avec la Map de valeurs venant du formulaire, les valeurs seront maintenant toujours encapsulées dans une SynchronizableValue, pour simplifier.
Une façon simple de récupérer la valeur réelle est de passer par DataHolderHelper.getValueToValidate(value)
Les points d'extensions portant la classe org.ametys.plugins.contentio.synchronize.clientsideelement.CollectionSelectionAwareAddTaskClientSideElement doivent désormais prendre la classe org.ametys.core.ui.SelectionAwareAddTaskClientSideElement et sous la balise class, les balises suivantes doivent être ajoutées :
<class> [...] <schedulable-param-name>collectionId</schedulable-param-name> <selection-target-id>^synchronizableContentsCollection$</selection-target-id> [...] </class>
Recherchez dans vos fichiers plugin.xml des éventuelles réferences à CollectionSelectionAwareAddTaskClientSideElement.
Dans le template web de demo, le plugin default-content a été supprimé.
Dans le template data de demo, le plugin default-content a été renommé "demo-content".
Ce plugin apporte un exemple de type de contenu ("Contenu simple").
Si vous possédez ce plugin dans votre application, vérifiez que ce type de contenu n'est pas utilisé (org.ametys.cms.default.Content.simple), et si c'est bien le cas, ce plugin peut-être supprimé.
Le plugin welcome a été supprimé des templates.
L'outil "Accueil" est désormais apportée par le noyau.
La personnalisation de cet outil (c'est à dire le texte qu'il contient) est lui apporté par chaque projet :
Pour migrer ce plugin vous avez donc 3 possibilités :
Cas des applications ODF utilisant la charte ODF noyau
La charte ODF noyau apporte son propre message d'accueil.
En vous contentant de supprimer le plugin welcome, vous aurez par défaut un message d'accueil adapté à l'application ODF et à la charte ODF.
Vous pouvez personnaliser si besoin ce message dans votre charte qui étend la charte ODF noyau.
Vous trouverez une exemple de surcharge dans la charte "demo-odf" du template ODF web.
Dans vos XSL index_**.xsl vous avez désormais la possibilité :
- d'utiliser les méthodes du helper XSL org.ametys.web.transformation.xslt.AmetysXSLTHelper
- d'utiliser des clés i18n
Le plugin default-sitemap a été supprimé des templates.
Les icônes et décorateurs du plan du site peuvent être apportées :
L'ancien fichier WEB-INF/param/sitemap-icons.xml n'est plus utilisé.
Il contenait :
Désormais, les icones/décorateurs de fonctionnalités sont apportés par le noyau et les plugins ; et les icônes de chartes doivent être apportés par les chartes graphiques.
Dans votre fichier sitemap-icons.xml, si vous aviez des icônes et/ou décorateurs propres à des étiquettes de charte (ex: SECTION, SUBSECTION, DIRECTACCESS, vous devrez créer dans chacune de vos chartes utilisant ces étiquettes :
Les icones et décorateur liées à des plugins sont déjà importés automatiquement (type de page container, link ou node ; exclusion des SEO, invisible, accès limité, traduction, publication programmée). Vous ne devez donc pas simplement déplacer votre ancien fichier, mais bien en filtrer le contenu.
Vos fichiers skins/[SKIN]/conf/sitemap-*.xml ne doivent donc contenir que des éléments liées à la skin.
Dans le template, ces fichiers ne comportent donc plus que très peu de règles : icones et décorateurs liés aux SECTION,SUBSECTION et DIRECTACCESS.
Exemple de fichier sitemap-icons.xml:
<icons> <!-- Validated sections --> <icon> <order>5</order> <glyph>ametysicon-file94 validated</glyph> <conditions> <tags> <tag>SECTION</tag> </tags> <live /> </conditions> </icon> <!-- Sections --> <icon> <order>6</order> <glyph>ametysicon-file94</glyph> <conditions> <tags> <tag>SECTION</tag> </tags> </conditions> </icon> </icons>
Exemple de fichier sitemap-decorators.xml:
<decorators> <!-- Direct access --> <decorator id="direct_access"> <label i18n="true">PLUGINS_WEB_SITEMAP_DECORATOR_DIRECT_ACCESS</label> <glyph>ametysicon-link23</glyph> <conditions> <tags> <tag>DIRECTACCESS</tag> </tags> </conditions> </decorator> </decorators>
Supprimez ensuite le fichier WEB-INF/param/sitemap-icons.xml ainsi que le plugin default-sitemap.
En supprimant le plugin default-sitemap vous allez perdre les clefs i18n en "plugin.default-sitemap:". Pensez donc à les déplacer dans les chartes graphiques d'abord.
Si votre charte est une charte qui étend la charte ODF noyau, il est inutile de créer les fichiers skin/[SKIN]/conf/sitemap-icons.xml et skin/[SKIN]/conf/sitemap-decortors.xml.
Ils sont en effet inclus dans la charte ODF.
Le plugin default-editionstyle des templates a été supprimé.
Cas des applications web et non-web
Dans le fichier WEB-INF/param/runtime.xml supprimez la lignes suivantes:
<org.ametys.cms.clientsideelement.styles.HTMLEditorStyleExtensionPoint>org.ametys.cms.clientsideelement.styles.StaticHTMLEditorStyleExtension</org.ametys.cms.clientsideelement.styles.HTMLEditorStyleExtensionPoint>
Cas des applications data (non-web) seulement
Déplacez le fichier WEB-INF/param/edition-styles.xml dans le répertoire WEB-INF/param/edition-styles.
Dans ce fichier supprimez toutes les occurrences de : plugin.default-editionstyle et plugin="default-editionstyle"
Déplacez les répertoires i18n et resources du plugin default-editionstyle dans WEB-INF/param/edition-styles
Enfin, supprimez le plugin default-editionstyle.
Le plugin default-ctypes a été supprimé du template web de demo. Il s'agissait d'un plugin uniquement présent à des fins de démonstration.
Si vous l'avez dans vos projets, il est probablement inutile et peut être supprimé.
Ce plugin apportait les resources et clé i18n liés à l'ajout des vues 2 et 3 colonnes sur les articles et les actualités et d'une vue "diaporama" pour les galeries photos. Ces 3 vues ont été supprimées et remplacées par des paramètres de vues.
Si votre application est une application Ametys ODF, suivez le guide de migration de la version 4.3 à la version 4.4 de l'ODF.
Suivant les plugins Ametys que vous utilisez, vous devez suivre les migrations techniques et/ou graphiques propres à chaque plugin :
Le serveur Solr doit être réinstallé.
Télécharger la version 4.4 http://releases.ametys.org/release/org.ametys/solr-app/4.4.x/4.4.0/zips/
Vérifier que le fichier setenv-solr.sh positionne Java 11 dans SOLR_JAVA_HOME (ou la jvm par défaut qui serait java11)
Après redémarrage du serveur Solr puis Ametys, lancez une indexation totale.
Le connecteur JDBC MySQL est passé en version 8. La compatibilité annoncée avec les versions de MySQL ne changent pas mais dans la pratique vous aurez peut-être un souci de timezones (essayez sans rien faire, mais si ça plante, Ametys ne démarre pas, vous le verrez vite).
Sous Windows, il faut aller modifier la conf dans C:\ProgramData\MySQL\MySQL Server 5.7\my.ini (ou qq soit votre version) et rajouter par exemple :
default-time-zone = '+01:00'
Sous Linux ça se passe dans la conf de mysql (my.cnf ou équivalent suivant votre distrib) avec le paramètre :
default_time_zone = '+01:00'
La valeur de default-time-zone peut aussi se référer à une chaîne de caractères du style 'Europe/Paris' mais pour ce faire, il faut suivre les instructions de https://dev.mysql.com/doc/refman/8.0/en/time-zone-support.html
Il est possible de le faire au niveau d'Ametys dans la configuration de la source de données en ajoutant : serverTimezone=Europe/Paris, Ce qui donne par exemple :
jdbc:mysql://localhost/Ametys_CMS?useSSL=false&serverTimezone=Europe/Paris