Migration graphique de la 3.7 vers la 3.8

  1. Bandeau d'acceptation des cookies (recommandation de la CNIL)
  2. Suppression de l'étiquette de page INVISIBLE (depuis le 30/03/16)
  3. Service de recherche avec résultats sur une carte
  4. Remontée de contenus avec résultats sur une carte

Bandeau d'acceptation des cookies (recommandation de la CNIL)

Ametys intègre à partir de la version 3.8 un système standardisé pour présenter au visiteur un bandeau pour l'informer et lui proposer d'accepter ou refuser l'utilisation de cookies. Ce système est activé par défaut, et désactivable par site via le paramètre de configuration "Toujours accepter les cookies" (rubrique "Services > Cookies").

Les changements à apporter lors de la migration d'une skin sont les suivants :

  • Le fichier jquery.cookie.js se trouve maintenant dans le plugin web, et est chargé automatiquement par le template XSL standard head-js-jquery. Il faut donc supprimer les balises <script> incluant ce fichier dans la skin.
<!-- A rechercher et supprimer -->
<script type="text/javascript" src="{ametys:skinURL('js/jquery.cookie.js')}"></script>
  • Styler le bandeau d'acceptation des cookies. Un exemple peut être trouvé dans le fichier cookiebanner.css de la skin de démonstration (inclus dans le template common-css du fichier head.xsl).

Suppression de l'étiquette de page INVISIBLE (depuis le 30/03/16)

Ametys inclut désormais la notion de page visible/invisible. Une page invisible n'apparaitra pas dans la navigation du site (plan du site, menus, ...).

Si dans votre charte graphique, vous utilisez une étiquette de page à cet effet, il est conseillé de supprimer la définition de l'étiquette dans conf/tags.xml ainsi que les clefs i18n associées. Dans vos XSL remplacez : @PLUGIN_TAGS_INVISIBLE par @sitemap:invisible='true'.

Pour migrer automatiquement vos pages, vous pouvez exécuter le script suivant, en personnalisant le nom de votre étiquette (tagName):

var tagName = "INVISIBLE";

var qm = session.getWorkspace().getQueryManager();
var query = qm.createQuery("//element(*, ametys:page)[@ametys-internal:tags = '" + tagName + "']", javax.jcr.query.Query.XPATH);
var nodes = query.execute().getNodes();

var count = 0;
while (nodes.hasNext())
{
    var page = nodes.next();
    var updatedTags = [];
  
    var values = page.getProperty("ametys-internal:tags").getValues();
    for (var i=0; i < values.length; i++)
    {
        var v = values[i].getString();
        if (v != tagName)
        {
            updatedTags.push(v);
        }
    }
  
    var tagArray = java.lang.reflect.Array.newInstance(java.lang.String, updatedTags.length);
    for (var i=0; i < updatedTags.length; i++)
    {
        tagArray[i] = updatedTags[i];
    }
  
    org.ametys.workspaces.repository.ConsoleHelper.setProperty(page, "ametys-internal:tags", tagArray); 
    page.setProperty("ametys-internal:visible", false);
    
    page.save();
    count++
}
print (count + " pages have been migrated");   

Si vous utilisez le décorateur pour les pages cachées (fichier WEB-INF/param/sitemap-icons.xml), basé sur l'étiquette INVISIBLE, vous devez le modifier votre décorateur comme ci-dessous:

<decorator id="hidden">
    <label i18n="true">plugin.default-sitemap:PLUGIN_DEFAULT_SITEMAP_DECORATOR_INVISIBLE</label>
    <image plugin="default-sitemap">img/decorators/hidden.png</image>
            
    <conditions>
    	<properties>
        	<property name="ametys-internal:visible">false</property>
       	</properties>
    </conditions>
</decorator>

Une migration technique est nécessaire pour ajouter le bouton "Visiblité de la page": Migration technique 3.7 vers 3.8

 

Service de recherche avec résultats sur une carte

La vue a évoluée pour répondre aux issues CMS-6862 et ODF-1227, il est nécessaire de mettre à jour la XSL suivante dans votre skin services/web/pages/services/search/search-map.xsl

Le code a fortement évolué, soyez prudent si jamais vous aviez effectués des modifications sur ce fichier.

Le HTML englobant les icônes à côté des résultats (pointeurs de carte) a été légèrement modifié pour pouvoir afficher plusieurs icônes pour un seul résultat. Assurez-vous que cela n'a pas impacté le rendu de votre skin si vous utilisez cette vue.
La règle css suivante a été ajoutée au fichier css/services/search.css de la skin de démo et sera vraisemblablement nécessaire dans votre skin :

.search.search-map div.results li.hit.page div.geoloc-entry
{
	display: inline-block;
} 

Il est maintenant possible de définir quelles seront les métadonnées "geocode" à afficher dans la vue. Cela se fait à l'aide d'une variable XSL à définir dans le fichier search-map.xsl de votre skin.
<xsl:variable name="geocodeMetadataPath">content/path/to/metadata</xsl:variable>
Cette variable doit commencer par "content/" (pour des raisons techniques), et doit être suivie d'un chemin vers la métadonnées geocode de votre choix.
Par défaut cette variable pointe sur la metadonnées "geolocation"
Exemples
- Pour une métadonnée simple ayant pour nom "geolocation" : content/geolocation
- Pour afficher les métadonnées "place" de toutes les entrées d'un repeater "places" : content/places/*/place
- Pour n'afficher "place" que pour la première entrée du repeater "places" : content/places/entry[@name=1]/place
- Il est aussi possible de choisir un ensemble de métadonnées (avec l'opérateur union de Xpath) par exemple: content/geolocation|content/places/entry[@name=1]/place

Attention, toute métadonnées geocode à afficher doit avoir été ajoutée au metadata set "index". 

 

Remontée de contenus avec résultats sur une carte

Tout comme pour la service de recherche, la vue avec résultats sur une carte pour la remontée de contenus a évoluée,  il est nécessaire de mettre à jour la XSL suivante dans votre skin services/web/pages/services/filtered-contents/map-list.xsl

Le code a fortement évolué, soyez prudent si jamais vous aviez effectués des modifications sur ce fichier.

Le HTML englobant les icônes à côté des résultats (pointeurs de carte) a été légèrement modifié pour pouvoir afficher plusieurs icônes pour un seul résultat. Assurez-vous que cela n'a pas impacté le rendu de votre skin si vous utilisez cette vue.
La règle css suivante a été ajoutée au fichier css/services/filtered-contents-map.css de la skin de démo et sera vraisemblablement nécessaire dans votre skin :

.filtered-contents.map-list div.ametys-cms-content div.geoloc-entry
{
	display: inline-block;
}

Auparavant seule la première valeur d'une métadonnée de type geocode était affichée. Il est maintenant possible de définir quelles seront les métadonnées "geocode" seront affichées dans la vue.
Cela se fait à l'aide d'une variable XSL à définir dans le fichier map-list.xsl de votre skin.
<xsl:variable name="geocodeMetadataSeparator">path/to/metadata</xsl:variable>
Cette variable doit contenir le chemin vers la métadonnées geocode de votre choix (voir les exemples ci-dessous pour plus d'information).
Par défaut toutes les metadonnées de type geocode présentent dans le metadata set choisi sont affichées.
Exemples
- Pour une métadonnée simple ayant pour nom "geolocation" : geolocation
- Pour afficher les métadonnées "place" des entrées d'un repeater "places" : places/entry/place
- Pour afficher toutes les métadonnées géocode (comportement par défaut), la variable doit avoir une valeur de String vide.
Contrairement au service de recherche, il n'est pas possible de filtrer certaines entrées de repeater ou de réaliser des unions de metadonnées.

Attention, seule les métadonnées appartenant au metadata set choisi (paramètre 'vue' du service) ne pourront être affichées.