AmetysXSLTHelper

Le CMS Ametys met à disposition des intégrateurs de nombreuses méthodes accessibles à partir des fichiers XSLT, facilitant l'intégration des chartes graphique.

Pour plus d'informations, cliquez ici.

  1. Comment utiliser ces méthodes ?
  2. Référence
    1. Préfixes URL / Contexte de l'application
      1. uriPrefix
      2. absoluteUriPrefix
      3. siteUriPrefix
      4. absoluteSiteUriPrefix
    2. Skin
      1. skin
      2. skinURL
      3. skinResources
      4. skinImageBase64
      5. template
      6. templateURL
      7. zone
    3. Page
      1. site
      2. lang
      3. pagePath
      4. pageId
      5. pageTitle
      6. pageLongTitle
      7. pageMetadata
      8. pageHasRestrictedAccess
      9. pageIsVisible (à partir de v3.8.1 seulement)
      10. findPagesIdsByTag
      11. isCacheable
      12. referencedPages
      13. accessibleReferencedPages
    4. Contenu
      1. contentAttachments
      2. contentTags
      3. findContentsIdsByTag
      4. contentMetadata
    5. Explorateur de ressources
      1. resourcesById
      2. resourcesByPath
    6. Etiquettes
      1. tagLabel
      2. tagDescription
      3. tagVisibility
      4. tagParent
    7. Divers
      1. renderingContext
      2. escapeJS
      3. splitText
      4. getValueFromJsonObject
      5. pluginResourceURL
      6. pluginImageBase64
      7. sitemap
      8. user
      9. groups
    8. Paramètres
      1. config
      2. siteParameter
      3. serviceParameter
      4. serviceParameters
      5. requestParameter

 

Comment utiliser ces méthodes ?

Ajouter ce code dans l'entête des fichiers XSL:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"            
         ...            
         xmlns:ametys="org.ametys.web.transformation.xslt.AmetysXSLTHelper"            
         ...            
         extension-element-prefixes="... ametys ...">            

De sorte à pouvoir appeler n'importe quelle fonction définie ci-dessous, en utilisant "ametys:functionName(argument1, argument2)"
Par exemple :

<xsl:if test="ametys:zone() = 'default'">            
    <!-- We are in the default zone -->            
    ...            
</xsl:if>            

Référence

Préfixes URL / Contexte de l'application

uriPrefix

Description :
Retourne le contexte de l'application en fonction du contexte de rendu, par exemple '/cms', '/cms/preview'.
Cette fonction peut être utilisée pour accéder au serveur via des requêtes AJAX.
Le résultat peut être vide si le contexte de l'application correspond à la racine du domaine.

Signature :
String uriPrefix()

Exemple :

$j.post("<xsl:value-of select="ametys:uriPrefix()"/>/plugins/cms/comments/add-comment", data, result);            
absoluteUriPrefix

Description :
Identique à uriPrefix mais en ajoutant le protocole et le nom du serveur pour obtenir une adresse aboslue, par exemple 'http://www.ametys.org' or 'http://www.ametys.org/cms' or 'http://www.ametys.org/cms/preview'.

Signature :
String absoluteUriPrefix()

siteUriPrefix

Description :
Retourne le contexte du site indiqué en paramètre (site courant si pas de paramètre) en fonction du contexte de rendu, par exemple '/cms/www', '/cms/preview/www'.
Cette fonction peut être utilisée pour construire un chemin vers une page.
Le résultat peut être vide si le contexte du site correspond à la racine du domaine.

Signature :
String siteUriPrefix()

Exemple :

<a href="{ametys:siteUriPrefix()}/{ametys:lang()}/index.html">Accueil</a>            
absoluteSiteUriPrefix

Description :
Identique à siteUriPrefix mais renvoie une valeur absolue, par exemple 'http://www.ametys.org' or 'http://www.ametys.org/cms/www' or 'http://www.ametys.org/cms/preview/www'.
Utile pour obtenir l'URL du site (pour créer le bouton "I like facebook" par exemple).

Signature :
String absoluteUriPrefix()
String absoluteUriPrefix(String siteName)

Arguments :

Nom

Type

Description

siteName

String

Nom du site

Skin

skin

Description :
Retourne le nom de la charte graphique utilisée par le site courant.
Comme il n'est pas possible de charger une XSL avec une variable, utiliser le protocole skin : <xsl:import href="skin://stylesheets/common.xsl"/>

Signature :
String skin()

skinURL

Description :
Retourne le chemin vers le fichier ressource de la charte graphique.

Signature :
String skinURL(String path)

Arguments :

Nom

Type

Description

path

String

Chemin vers une ressource de la charte graphique

Exemple :
Insérer une image placée dans le répertoire cms/skins/[skinName]/resources/img/[imageName].png.

<img src="{ametys:skinURL('img/[imageName].png')}"/>            
skinResources

Description :
Retourne un nœud DOM représentant le sous-répertoire du répertoire resources de la charte graphique en cours d'utilisation.
Cela permet notamment de faire un diaporama de l'ensemble des images d'un répertoire sans connaître les noms de tous les fichiers.

Voir resourcesById pour voir la description du DOM.

Signature :
Node skinResources(String path)

Arguments :

Nom

Type

Description

path

String

Chemin dans le répertoire resources de la charte graphique

Exemple :

<ul>            
 <xsl:for-each select="ametys:skinResources('img/slideshow')/resource">            
 <img src="{ametys:skinURL(concat('img/slideshow/', @name))}"/>            
 </xsl:for-each>            
</ul>            
skinImageBase64

Description :
Retourne une image de la charte graphique encodée en base 64. L'image est alors intégrée directement dans le corps HTML de la page.

Signature :
String skinImageBase64(String path)

Arguments :

Nom

Type

Description

path

String

Chemin de l'image dans le répertoire resources de la charte graphique

Exemple :

<img src="{ametys:skinImageBase64('img/header.jpg')}" />            
template

Description :
Retourne le nom du gabarit en cours d'utilisation.

Signature :
String template()

templateURL

Description :
Retourne le chemin vers la ressource mise en argument contenue dans le gabarit courant de la charte graphique.

Signature :
String templateURL(String path)

Arguments :

Nom

Type

Description

path

String

Chemin vers une ressource du gabarit de la charte graphique

Exemple :
Insérer une image placée dans le répertoire cms/skins/[skinName]/templates/[currentTemplateName]/resources/img/[imageName].png".

<img src="ametys:templateURL('img/[imageName].png')"/>            
zone

Description :
Retourne le nom de la zone en cours d'utilisation. Utile pour le rendu d'un contenu ou d'un service.
Attention, le rendu d'un contenu peut aussi être visualisé en dehors d'une page avec aucune zone associée, il faut donc passer en paramètre une valeur par défaut.

Signature :
String zone (String defaultValue)

Arguments :

Nom

Type

Description

defaultValue

String

Valeur par défaut si aucune zone n'est en cours d'utilisation

Exemple :

<xsl:variable name="zone" select="ametys:zone('default')"/>            
<xsl:choose>            
    <xsl:if test="$zone = 'default'">            
        <!-- Nous sommes dans la zone 'default' -->            
        ...            
    </xsl:when>            
    <xsl:when test="$zone = 'right'">            
        <!-- Nous sommes dans la zone 'right' -->            
        ...            
    </xsl:when>            
    <xsl:otherwise>            
        <!-- Nous sommes dans la zone 'left' -->            
        ...            
    </xsl:otherwise>            
</xsl:choose>            

Page

site

Description :
Retourne l'identifiant du site contenant la page courante.

Signature :
String site()
String site(String pageId)

Arguments :

Aucun

Nom

Type

Description

pageId

String

Identifiant unique de page

lang

Description :
Retourne le code de la langue de la page en cours d'utilisation.

Signature :
String lang()
String lang(String pageId)

Arguments :

Aucun

Nom

Type

Description

pageId

String

Identifiant unique de page

Exemple :

<a href="{ametys:siteUriPrefix()}/{ametys:lang()}/index.html">Accueil</a>            
pagePath

Description :
Retourne le chemin de la page courante. Ce chemin est relatif au plan du site.

Signature :
String pagePath()

pageId

Description :
Retourne l'identifiant unique de la page courante (sous la forme page://...).

Signature :
String pageId()

pageTitle

Description :
Retourne le titre de la page.

Signature :
String pageTitle(String sitename, String lang, String path)
String pageTitle(String pageId)

Arguments : 

Nom

Type

Description

sitename

String

Identifiant du site
langStringCode de la langue du site
pathStringChemin de la page dans le plan du site

Nom

Type

Description

pageId

String

Identifiant unique de page

Exemple : 
Ceci retournera le titre de la page d'accueil : "Home" ou "Accueil".

<xsl:value-of select="ametys:pageTitle(ametys:site(), ametys:lang(), 'index')"/>            
pageLongTitle

Description :
Identique à pageTitle excepté qu'il retourne le titre long.
Noter que s'il n'y a pas de titre long, c'est le titre qui est retourné.

Signature :
String longPageTitle(String sitename, String lang, String path)
String longPageTitle(String pageId)

Arguments : 

Nom

Type

Description

sitename

String

Identifiant du site

langStringCode de la langue du site
pathStringChemin de la page dans le plan du site

Nom

Type

Description

pageId

String

Identifiant unique de page

pageMetadata

Description :
Retourne la valeur d'une métadonnée de page sous forme de chaîne de caractères.

Signature : 
String pageMetadata (String sitename, String lang, String path, String metadataName)
String pageMetadata (String pageId, String metadataName)

Arguments :

Nom

Type

Description

sitename

String

Identifiant du site

langStringCode de la langue du site
pathStringChemin de la page dans le plan du site
metadateNameStringNom de la metadonnée. Utiliser le caractère '/' pour accéder à une métadonnée composite.

Nom

Type

Description

pageId

String

Identifiant unique de page

metadataNameStringNom de la metadonnée. Utiliser le caractère '/' pour accéder à une métadonnée composite.
pageHasRestrictedAccess

Description :
Retourne le statut de la page selon si elle est restreinte ou non : false si la page est public, sinon true.

Signature :
boolean pageHasRestrictedAccess(String sitename, String lang, String path) // A partir de 3.8.2 seulement
boolean pageHasRestrictedAccess(String pageId) 

Arguments :

Nom

Type

Description

sitename

String

Identifiant du site

langStringCode de la langue du site
pathStringChemin de la page dans le plan du site

Nom

Type

Description

pageId

String

Identifiant unique de page

pageIsVisible (à partir de v3.8.1 seulement)

Description :
Détermine si une page est visible. Si false, elle ne doit pas apparaitre des élements de navigation.

Signature :
boolean pageIsVisible (String sitename, String lang, String path) // A partir de 3.8.2 seulement
boolean pageIsVisible (String pageId)

Arguments :

Nom

Type

Description

sitename

String

Identifiant du site

langStringCode de la langue du site
pathStringChemin de la page dans le plan du site

Nom

Type

Description

pageId

String

Identifiant unique de page

findPagesIdsByTag

Description :
Retour une liste d'identifiant de pages correspondant à une recherche par tag, sous la forme :

<page id="page://xxxx-xxxx-xxxxxxxxx"/>            
...            

Signature :

Node findPagesIdsByTag(String tag) 
Node findPagesIdsByTag(String sitename, String lang, String tag)  

Arguments :

Nom

Type

Description

tag

String

Identifiant de l'étiquette de page dans le site et la langue courrants

Nom

Type

Description

sitename

String

Nom du site. Par exemple 'www'.
La valeur '*' permet de chercher dans tous les sites.

langStringCode de la langue. Par exemple 'fr'.
La valeur '*' permet de chercher dans toutes les langues.
tagString

Identifiant de l'étiquette de page.

Exemple :

Pour créer une liste de lien vers les pages portant l'étiquette TEST.

<xsl:variable name="testPages" select="ametys:findPagesIdsByTag('TEST')"/>            
<xsl:if test="$testPages">            
 <ul>            
 <xsl:for-each select="$testPages">            
 <li>            
    <a href="{resolver:resolve('page', @id)}"><xsl:value-of select="ametys:pageLongTitle(@id)"/></a>            
 </li>            
 </xsl:for-each>            
 </ul>            
</xsl:if>            
isCacheable

Description :
Détermine si le service, le contenu ou la page sur lequel on se trouve est cacheable, c'est à dire peut être mis dans le cache.

Si isCacheable est appelée depuis le rendu d'un service, la méthode retourne le statut du service vis à vis du cache.
Si isCacheable est appelée depuis le rendu d'un contenu, la méthode retourne le statut du contenu vis à vis du cache.
Si isCacheable est appelée dans la skin, la méthode retourne le statut de la page vis à vis du cache.

Signature :
boolean isCacheable()

referencedPages

Description :

Retourne la liste des pages référencés par un contenu, c'est à dire les pages sur lesquelles est affiché le contenu, avec la vue utilisée pour le rendu du contenu

<page id="page://xxxx-xxxx-xxxx" metadataSetName="main"/>            
<page id="page://yyyy-yyyy-yyyy" metadataSetName="main"/>            
<page id="page://zzzz-zzzz-zzzz" metadataSetName="abstract"/>            

Signature:
NodeList referencedPages (String contentId)

Arguments:

Nom

Type

Description

contentId

String

Identifiant unique du contenu

accessibleReferencedPages

Description :

Retourne la liste des pages référencés par un contenu, c'est à dire les pages sur lesquelles est affiché le contenu, avec la vue utilisée pour le rendu du contenu et pour lesquelles l'utilisateur front-office a les droits d'accès.

<page id="page://xxxx-xxxx-xxxx" metadataSetName="main"/>            
<page id="page://yyyy-yyyy-yyyy" metadataSetName="main"/>            
<page id="page://zzzz-zzzz-zzzz" metadataSetName="abstract"/>            

Attention
Cette méthode n'est à utiliser que sur des pages ne pouvant être mises en cache

Signature:
NodeList accessibleReferencedPages (String contentId)

Arguments:

Nom

Type

Description

contentId

String

Identifiant unique du contenu

Contenu

contentAttachments

Description :
Retourne un nœud DOM correspondant aux fichiers joints du contenu courant ou du contenu spécifié.

Voir resourcesById pour voir la description du DOM.

Signature :
Node contentAttachments()
Node contentAttachments(String contentId)

Arguments :

Nom

Type

Description

contentId

String

Identifiant unique du contenu

contentTags

Description :
Retourne un nœud DOM contenant les étiquettes appliquées au contenu courant ou à un contenu donné

Le nœud renvoyé a la forme suivante :

<tag name="TAGNAME"/>            
...            

Signature :
NodeList contentTags() 
NodeList contentTags(String contentId) (à partir de Ametys 4.2)

Arguments :

Nom

Type

Description

contentId

String

Identifiant unique du contenu

findContentsIdsByTag

A partir de Ametys 4.2

Description :
Retour une liste d'identifiant de contenus correspondant à une recherche par tag, sous la forme :

<content id="defaultWebContent://xxxx-xxxx-xxxxxxxxx"/>            
...            

Signature :

Node findContentsIdsByTag(String tag) 
Node findContentsIdsByTag(String sitename, String lang, String tag)  

Arguments :

Nom

Type

Description

tag

String

Identifiant de l'étiquette de contenu dans le site et la langue courrante

Nom

Type

Description

sitename

String

Nom du site. Par exemple 'www'.
La valeur '*' permet de chercher les contenus de n'importe quel site, ou sans site.

La valeur '+' permet de chercher les contenus de n'importe quel site.

La valeur '^' permet de chercher les contenus sans site.

langStringCode de la langue. Par exemple 'fr'.
La valeur '*' permet de chercher dans toutes les langues.
tagString

Identifiant de l'étiquette de contenu.

Exemple :

Pour créer une liste de lien vers les contenus portant l'étiquette TEST.

<xsl:variable name="testContents" select="ametys:findContentsIdsByTag('TEST')"/>            
<xsl:if test="$testContents">            
 <ul>            
 <xsl:for-each select="$testContents">            
 <li>            
    <a href="{resolver:resolve('content', @id)}"><xsl:value-of select="ametys:contentMetadata(@id, 'title', $lang)"/></a>            
 </li>            
 </xsl:for-each>            
 </ul>            
</xsl:if>   
contentMetadata

Description :
Retourne la valeur "string" d'une métadonnée.

2 signatures possibles:

  • Pour une métadonnée de type simple (string, date, long, double)
    String contentMetadata(String contentId, String metadataPath)
  • Pour une métadonnée multlingue (multilingual_string)
    String contentMetadata(String contentId, String metadataPath, String lang)

Arguments:

 Nom

Type

Description

contentId

 String

Identifiant du contenu

metadataPath

 String

Chemin de la métadonnée

lang (optionel)

String

Langue à utiliser si la métadonnée est une métadonnée de type multilingue

 

Explorateur de ressources

resourcesById

Description :
Retourne un nœud DOM correspondant à un répertoire de l'explorateur de ressources et son contenu. Le répertoire est récupéré par son identifiant unique.

Le nœud renvoyé a la forme suivante :

<collection name="DIRECTORYNAME" id="DIRECTORYID">            
 <collection name="SUBDIRECTORY" id="SUBDIRECTORYID">            
 ...            
 </collection>            
 ...            
 <resource name="FILENAME" id="FILEID" length="LENGTHINBYTES"/>            
 ...            
</collection>            

Optionnellement, une ressource peut avoir la donnée suivante :

last-modified="YYYY-MM-DD'T'hh:mm:ss'Z'"            

Signature :
Node resourcesById(String collectionId)

Arguments :  

Nom

Type

Description

collectionId

String

Identifiant unique d'un répertoire de l'explorateur de ressources

Exemple :

<xsl:for-each select="ametys:resourcesById($resourcesId)/resource">            
...            
</xsl:for-each>            
resourcesByPath

Description :
Identique à resourcesById mais en utilisant le chemin local (arborescence des répertoires) dans l'explorateur de ressources du site courant.

Voir resourcesById pour voir la description du DOM.

Signature :
Node resourcesByPath(String path)

Arguments :

Nom

Type

Description

path

String

Chemin du répertoire de l'explorateur de ressources

Exemple :

<xsl:if test="ametys:resourcesByPath('Fonds')/resource[@name = 'default.jpg']">            
  <img src="{resolver:resolve('explorer', ametys:resourcesByPath('Fonds')/resource[@name = 'default.jpg']/@id)}"/>            
</xsl:if>            

Etiquettes

tagLabel

Description :
Retourne le libellé traduit d'une étiquette donnée.

Signature :
String tagLabel(String siteName, String tagName, String lang)

Arguments :

Nom

Type

Description

siteName

String

Identifiant du site

tagNameStringNom de l'étiquette
langStringCode de la langue utilisée pour traduire le libellé si c'est possible. Les étiquettes de contributeur (personnalisées) ne sont disponibles que dans une seule langue, mais les étiquettes apportées par les plugins ou la charte sont en principe internationalisées.

Exemple :
Ce code renvoi le libellé traduit de l'étiquette SECTION ('Section', 'Rubrique'...)

<xsl:value-of select="ametys:tagLabel(ametys:site(), 'SECTION', ametys:lang())"/>            
tagDescription

Description :
Retourne la description traduite d'une étiquette donnée.

Signature :
String tagDescription(String siteName, String tagName, String lang)

Arguments : 

Nom

Type

Description

siteName

String

Identifiant du site

tagNameStringNom de l'étiquette
langStringCode de la langue utilisée pour traduire la description si c'est possible. Les étiquettes de contributeur (personnalisées) ne sont disponibles que dans une seule langue, mais les étiquettes apportées par les plugins ou la charte sont en principe internationalisées.
tagVisibility

Description :
Retourne la visibilité ('private' ou 'public') d'une étiquette donnée.

Signature :
String tagVisibility(String siteName, String tagName)

Arguments : 

Nom

Type

Description

siteName

String

Identifiant du site

tagNameStringNom de l'étiquette
tagParent

Description :
Retourne l'identifiant de l'étiquette parente.
Si l'étiquette n'a pas de d'étiquette parente, la chaine vide est retournée.

Signature :
String tagParent(String siteName, String tagName) 

Arguments :

Nom

Type

Description

siteName

String

Identifiant du site

tagNameStringNom de l'étiquette

Divers

renderingContext

Description :
Retourne le contexte du rendu courant :

  • "back" - si le rendu est fait dans le backoffice
  • "preview" - si le rendu est fait en mode preview ou live
  • "front" - si le rendu est fait à partir du site

Cela peut permettre d'afficher des messages d'alerte lors de la prévisualisation sans qu'ils soient affichés au visiteur final.

Signature :
String renderingContext()

Exemple :

<xsl:variable name="dest">            
 <xsl:choose>            
 <xsl:when test="ametys:renderingContext() = 'back'">            
 <xsl:text>javascript:alert("Cette fonctionnalité ne peut pas être utilisée dans le back-office. Ouvrez la prévisualisation pour l'utiliser.");</xsl:text>            
 </xsl:when test>            
 <xsl:otherwise>            
 <xsl:value-of select="@href"/>            
 </xsl:otherwise>            
 </xsl:choose>            
</xsl:variable>            
<a href="{$dest}>Ouvrir</a>            
escapeJS

Description :
Échappe les caractères spéciaux d'une chaîne pour être compatible en JavaScript.
Par exemple, le saut de ligne devient \n, la " devient \", etc.

Signature :
String escapeJS(String value)

Arguments :

Nom

Type

Description

value

String

Valeur à échapper

Exemple :
Pour initialiser une variable JavaScript avec une valeur provenant du XML, ne pas l'affecter directement car certains caractères (comme le guillemet ou le retour à la ligne) ne seront pas valides en JavaScript.

<script type="text/javascript">            
 var name = "<xsl:value-of select="ametys:escapeJS(@name)"/>";            
</script>            
splitText

Description:
Scinde le texte à la prochaine occurrence d'un caractère parmi le jeu de caractères donné, en tenant compte d'un taille minimum du texte retourné.

Signature:
String splitText (String textToSplit, String tokenizers, int startIndex)

Arguments:

NomTypeDescription
textToSplitStringTexte à scinder
tokenizersStringCaractères délimiteurs
startIndexintIndice dans la chaine de caractères à partir de laquelle commencer la recherche d'un caractère délimiteur.
Correspond de ce fait à la taille minimum de la chaine de retour. 

 

Exemple:

<xsl:value-of select="ametys:splitText ('Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quoniam, si dis placet, ab Epicuro loqui discimus.', ',.;', 70)"/>            

La chaîne retournée est "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quoniam, si dis placet"

getValueFromJsonObject

A partir de Ametys 4.1

Description:
Permet d'extraire la valeur associée à une clé depuis un object Map au format JSON
La valeur attendue doit être une chaine de caractère, un entier, un décimal ou une date.

Signature :
String getValueFromJsonObject(String jsonString, String key)

Arguments :

Nom

Type

Description

jsonString

String

représentation JSON de l'objet Map

keyStringclé de la valeur à récupérer

Exemple:

Dans l'exemple ci-dessous, la variable JS 'groupId' vaut 'a27f45sd'

<script type="text/javascript">         
  <xsl:variable name="group">{"groupId": "a27f45sd", "groupDirectory": "group-sql"}</xsl:variable>         
  <xsl:variable name="groupId" select="ametys:getValueFromJsonObject($group, 'groupId')"/>         
  var groupId = "<xsl:value-of select="$groupId"/>"         
</script>         
pluginResourceURL

Description :
Retourne le chemin vers un fichier de ressource stocké dans un plugin.

Signature :
String pluginResourceURL(String plugin, String path)

Arguments :

Nom

Type

Description

plugin

String

Nom du plugin

pathStringChemin dans le répertoire de ressources du plugin

Exemple :

<script type="text/javascript" src="{ametys:pluginResourceURL('web', 'js/jquery.treeview.min.js')}"/>            
pluginImageBase64

Description :
Retourne une image encodée en base 64 stocké dans un plugin.

Signature :
String pluginImageBase64(String plugin, String path)

Arguments :

Nom

Type

Description

plugin

String

Nom du plugin

pathStringChemin de l'image dans le répertoire de ressources du plugin

Exemple :

<img src="{ametys:pluginResourceURL('myplugin', 'img/image.png')}"/>            
sitemap

Description :
Retourne le plan du site courant ou le partie de plan du site sous la page indiquée en paramètre. Les pages visibles sont celles que l'utilisateur peut voir s'il y a une limitation d'accès. Les sous-pages invisibles ne sont pas renvoyées (sauf si explicitement demandé à partir de Ametys 4.1.1)

L'arbre DOM retourné a la forme suivante :

<sitemap sitemap:site="www" sitemap:lang="fr" xmlns:sitemap="http://www.ametys.org/inputdata/sitemap/3.0">            
 <page sitemap:id="page://uniqueid" sitemap:name="index" sitemap:title="Accueil" sitemap:long-title="Accueil" sitemap:path="index">            
         <page .../>            
 ...            
 </page>            
 ...            
</sitemap>            

Sur la balise page, se trouvent les attributs suivants selon le type de la page :

sitemap:type="CONTAINER" sitemap:container="true"            
OR sitemap:type="NODE"            
OR sitemap:type="LINK" sitemap:link="http://www.ametys.org" sitemap:link-type="WEB"            
OR sitemap:type="LINK" sitemap:link="page://uniqueid" sitemap:link-type="PAGE"            

Sur la balise page, se trouvent les attributs suivants qui dépendent de la page en cours de visualisation :

sitemap:in-path="true" // si la page est dans le fil d'ariane (peut être la page courant)            
sitemap:current="true" // si la page est la page courante            

Sur la balise page, se trouvent les étiquettes appliquées à celle-ci préfixées de PLUGIN_TAGS_ :

PLUGIN_TAGS_SECTION="empty" // if the page has the "SECTION" tag            

Sur la balise page, si la page est en accès limité, se trouve l'attribut sitemap:restricted

sitemap:restricted="true" // if the page has a restricted access            

A partir de v4.1.1, sur la balise page, si la page est invisible (cachée des éléments de navigation), se trouve l'attribut sitemap:invisible

sitemap:invisible="true" // if the page should be hidden from menus            

Sur la balise page, se trouvent toutes les méta-données de la page (sauf celles de type composite, binary ou richtext et celles à valeurs multiples)

metadataName="value"            

Pour accéder aux attributs, pensez à déclarer le namespace suivant sur votre xsl : xmlns:sitemap="http://www.ametys.org/inputdata/sitemap/3.0"

Signature :
Node sitemap()
Node sitemap(boolean includeInvisiblePages) (à partir de Ametys 4.1.1)
Node sitemap (String pageId)
Node sitemap (String pageId, boolean includeInvisiblePages) (à partir de Ametys 4.1.1)

Arguments :

Nom

Type

Description

pageId

String

Identifiant de la page

Nom

Type

Description

includeInvisiblePages

boolean

Affiche les sous-pages invisibles

Nom

Type

Description

pageId

String

Identifiant de la page

includeInvisiblePages

boolean

Affiche les sous-pages invisibles

Exemple :

<ul>            
 <xsl:for-each select="ametys:sitemap()/page">            
 <li><xsl:value-of select="@sitemap:title"/></li>            
 </xsl:for-each>            
</ul>            

Performances
Attention ! L'emploi de ametys:sitemap() est très couteux. Il est fortement conseillé de ne la déclarer qu'une seule fois en haut d'une XSL qui l'utilise.
Dans la mesure du possible utiliser la version avec pageId. Par exemple pour obtenir la page courante :

 

user

Description :
Retourne un noeud DOM correspondant à l'utilisateur connecté.
Cette méthode permet de savoir si un utilisateur est connecté.
Cette méthode ne doit pas être appelée dans un environnement cachable (service cachable, contenu, ...).

Le DOM retourné dépend du UsersManager utilisé (LDAP, SQL, autre...).

Voici une description de ce que peut renvoyer le StaticUsersManager (celui utilisé par la demo avec des utilisateurs codés en dur) ou le JDBCUsersManager (celui dont les utilisateurs sont stockés dans une base de données SQL) :

<user login="USERLOGIN" population="USERPOPULATION">            
 <firstname>FIRSTNAME</firstname>            
 <lastname>LASTNAME</lastname>            
 <email>EMAIL</email>            
    <fullname>FULLNAME</fullname>            
    <sortablename>SORTABLENAME</sortablename>            
    <populationLabel>POPULATIONLABEL</populationLabel>            
 </user>            

Signature :
Node user() 

Exemple :
Pour obtenir les valeurs retournées dans environnement donné, exécuter le code suivant sur une page limitée (pour éviter les problèmes de cache et ne pas avoir un résultat vide) et analyser la code source généré.

<MARKER><xsl:copy-of select="ametys:user()"/></MARKER>            

 

groups

Description : Retourne une liste de noeuds DOM correspondant aux groupes de l'utilisateur connecté ou d'un utilisateur donné. Cette méthode ne doit pas être appelée dans un environnement cachable (service cachable, contenu, ...).

 

<group name="group1"/>            
<group name="group2"/>            

Signatures :

NodeList groups() 

NodeList groups(String login) 

 

Exemple : Pour obtenir les valeurs retournées dans environnement donné, exécuter le code suivant sur une page limitée (pour éviter les problèmes de cache et ne pas avoir un résultat vide) et analyser la code source généré.

<MARKER>            
<xsl:for-each select="ametys:groups()">            
 <GROUP><xsl:value-of select="@name"/></GROUP>            
</xsl:for-each>            
</MARKER>            

 

 

Paramètres

config

Description :
Retourne la valeur d'un paramètre de configuration.

Signature :
String config(String id)

Arguments :

Nom

Type

Description

id

String

Identifiant du paramètre

Exemple :

<script type="text/javascript">            
    alert("Vous allez recevoir un email de <xsl:value-of select="ametys:config('smtp.mail.from')"/>");            
</script>            
siteParameter

Description :
Retourne la valeur d'un paramètre de site.

Signature :
String siteParameter(String parameter)

Arguments :

Nom

Type

Description

parameter

String

Identifiant du paramètre

Exemple :

<script type="text/javascript">            
    var googleAnalyticsIdentifier = "<xsl:value-of select="ametys:siteParameter('site-param-google-web-property-id')"/>";            
</script>            
serviceParameter

Description :
Retourne le nœud DOM représentant la valeur du paramètre de service en cours de rendu.
Cette méthode doit uniquement être appelée lors du rendu d'un service.
Éventuellement, ajouter une valeur par défaut (facultatif).

Signature :
Node serviceParameter (String parameter)
Node serviceParamter (String parameter, String defaultValue)

Arguments :

Nom

Type

Description

parameter

String

Identifiant du paramètre de service

Nom

Type

Description

parameter

String

Identifiant du paramètre de service

defaultValueStringSi la valeur est vide, la valeur par défaut est renvoyée (cela peut notamment se produire lorsqu'un nouveau paramètre de service est ajouté pour rester compatible avec les données déjà existantes. Si le paramètre est de type composite, la valeur par défaut ne sera pas utilisée.

L'arbre DOM retourné pour un paramètre simple a la forme suivante :

<header name="header" type="string">Mon titre de service</header>            

L'arbre DOM retourné pour un paramètre composé a la forme suivante :

<search name="search" type="composite">            
 <_x0031_ name="1" type="composite">            
 <sites>www</sites>            
 <tags name="tags" type="string">TAG1</tags>            
 <lang-context name="lang-context" type="string">CURRENT</lang-context>            
  </_x0031>            
</search>            

Exemple :

<h1><xsl:value-of select="ametys:serviceParameter('header')"/><h1>            
<xsl:value-of select="ametys:serviceParameter('search')/*/tags"/>            
serviceParameters

Description : 
Retourne tous les paramètres du service en cours de rendu sous la forme d'un arbre DOM.
Cette méthode doit uniquement être appelée lors du rendu d'un service.

Signature :
Node serviceParameters ()

L'abre DOM retourné a la forme suivante :

<serviceParameters>            
     <header name="header" type="string">My title</header>            
     <nb-max name="nb-max" type="string">5</nb-max>            
     <search name="search" type="composite">            
           <_x0031_ name="1" type="composite">            
            <tags name="tags" type="string">TAG1,TAG2</tags>            
            <site name="site" type="string">www</site>            
    </_x0031>            
           <_x0032_ name="2" type="composite">            
            <tags name="tags" type="string">TAG3</tags>            
            <site name="site" type="string">blog</site>            
    </_x0032>            
     </search>            
</serviceParameters>            

Exemple :

<h1><xsl:value-of select="ametys:serviceParameters()/header"/></h1>            
requestParameter

Description :
Retourne la valeur d'un paramètre de requête.
Attention! Ceci ne doit être utilisé que dans des XSL non cachables (comme les services non cachables). Sinon, le résultat du premier visiteur sera utilisé pour tous les autres visiteurs...

Signature :
String requestParameter(String parameter)

Arguments :

Nom

Type

Description

parameter

String

Nom du paramètre

Exemple :
Pour l'URL suivante : http://www.ametys.org/fr/index.html?id=3

<input type="hidden" name="id" value="{ametys:requestParameter('id')}"/>