Migration graphique 4.2 vers 4.3


Ce guide traite de la migration graphique de vos chartes d'une version Ametys 4.2.x à 4.3.0.
Reportez-vous également au guide de migration technique et au guide de migration des données.

  1. Encodage d'URL
  2. Décodage d'URL
  3. Service de recherche
  4. Plugins

Encodage d'URL

Attention, risque de régressions sur ce sujet

L'encodage d'URL utilisé jusqu'à présent traitait correctement les caractères accentués, mais mal les caractères spéciaux. Certains (comme ':', '/', ';') faisaient carrément planter l'affichage. Et la spec de l'encodage de caractères était globalement mal respectée.

Du coup, on a revu la gestion de l'encodage des URL : la classe org.ametys.core.util.URLEncoder que vous utilisiez n'existe plus, elle a été remplacée par org.ametys.core.util.URIUtils et gère maintenant le décodage également.

Mais le plus important c'est que la sémantique a également été revue, et là c'est du cas par cas.

Exemple dans la charte ODF :

AVANT :

xmlns:url="org.ametys.core.util.URLEncoder"      

...      

<!-- Url of PDF -->      
<xsl:param name="pdfUrl" select="concat($uri-prefix,      
                                 '/plugins/odf-web/',      
                                 $site,      
                                 '/_content/',      
                                 /view/content/@name,      
                                 '/',      
                                 url:encodePath(/view/content/@title), '.pdf')"/>      

<a href="{$pdfUrl}"/>      

Le code ci-dessus ne peut pas fonctionner avec des caractères spéciaux, il faut encoder séparément le nom pouvant potentiellement comporter des caractères spéciaux et l'URL entière :

APRES :

xmlns:url="org.ametys.core.util.URIUtils"      
xmlns:filename="org.ametys.core.util.FilenameUtils"      

...      

<!-- Url of PDF -->      
<xsl:param name="pdfUrl" select="concat($uri-prefix,    
                                 '/plugins/odf-web/',    
                                 $site,    
                                 '/_content/',    
                                 /view/content/@name,    
                                 '/',    
                                 filename:encodeName(/view/content/@title), '.pdf')"/>      

<a href="{url:encodePath($pdfUrl)}"/>      

Pour la migration, il faut rechercher l'ensemble des créations de liens créés manuellement dans vos XSL (ce qui se télécharge notamment) et voir s'ils sont impactés.

 

Décodage d'URL

Suppression de la classe org.ametys.cms.transformation.xslt.URIDecoder. Cette classe était utilisée à tort la plupart du temps.

Ca a des impacts dans toutes les XSL dans lesquelles elle est utilisée. Il faut faire une recherche pour tous les identifier. Puis supprimer le "xmlns" qui la référence, ainsi que le "exclude" correspondant, en général juste en dessous.

Ensuite il faut remplacer tous les appels à ce namespace (en général "decoder:decode") dans la XSL en question. Ca peut être n'importe où, mais souvent dans docbook2html ou dans des exports FO. Là on retrouve plusieurs cas de figure :

  • Si c'était utilisé par le htmlexpert, on va souvent avoir la construction : htmlexpertresolver:parseAndResolve(decoder:decode(.)). Il faut simplement enlever decoder:decode : htmlexpertresolver:parseAndResolve(.)
  • Si c'était utilisé par le plugin forms (notamment dans html:textarea), il faut utiliser un nouvel Helper : xmlns:forms="org.ametys.plugins.forms.xslt.FormsXSLTHelper" et remplacer decoder:decode par forms:decode
  • Dans les autres cas, il peut être nécessaire de continuer à décoder, dans ce cas, il faut utiliser URIUtils.decode avec le namespace org.ametys.core.util.URIUtils 

 

Service de recherche

Dans le rendu par défaut des critères de recherche, le template XSL nommé "criterion-enumeration-options" a été remplacé par un template de type "match" avec le mode "criterion-enumeration-options".

Dans surcharges éventuelles du rendu du service de recherche, faites les modifications suivantes:

Remplacez

<xsl:call-template name="criterion-enumeration-options">         
       <xsl:with-param name="value" select="$value"/>           
</xsl:call-template>           

par

<xsl:apply-templates select="." mode="criterion-enumeration-options">         
       <xsl:with-param name="value" select="$value"/>           
</xsl:apply-templates>           

Remplacez

<xsl:template name="criterion-enumeration-options">         
   ...           
</xsl:template>           

par

<xsl:template match="criterion[enumeration]" mode="criterion-enumeration-options">         
   ...           
</xsl:template>           

Plugins

Suivant les plugins Ametys que vous utilisez, vous devez suivre les migrations graphiques propres à chaque plugin :

Retour en haut