SEEWARNING Avant de créer votre site , il préférable de lire la documentation :Avant de commencer.


Cette fonction permet de gérer une ensemble de listes de valeurs, dédiées à une application XTEND, en complément des menus locaux.

Une liste de valeurs XTEND est associée à Token champ et fonctionne comme un menu local.

Chaque élément de la liste contient :

  • une valeur,
  • un libellé.

Comme pour les menus locaux, la valeur est accessible via le nom du Token champ et le libellé en ajoutant le suffixe _DESCR au nom du champ.

Contrairement aux menus locaux une liste de valeur sait gérer des données hiérarchiques (arborescence de catégories).

Le séparateur des catégories est le caractère /.

Les listes de valeurs peuvent être créées :

  • manuellement,
  • à partir de 'messages X3',
  • à partir de 'tables diverses',
  • à partir de traitement batch.

Les listes de valeurs sont sauvegardées dans le fichier MEN.xml du répertoire qui contient le dictionnaire du site XTEND (X_TEND/X_GEN/SITE/MEN.xml) sauf les listes créées par traitement batch qui sont stockées dans des répertoires bien identifiés.

Prise en main

Paramétrage

Le paramétrage dépend du mode de gestion de la liste.

Validez la fiche après l'avoir enregistrée pour qu'elle puisse être prise en compte par le serveur XTEND.

Forcez le rechargement du dictionnaire si les paramètres 'Vérification des mises à jour' du site ne sont pas actifs.

SEEREFERTTO Voir la fiche Site web.

Gestion manuelle

La liste est créée/modifiée dans le bloc graphique (DHTML) en bas de l'écran.

Création à partir de rien

On créez la première valeur :

  • clic droit sur l'icône gris dans le bloc graphique,
  • puis ajout les valeurs en ajoutant des 'fils' à la valeur créée.

La suppression et modification se fait par clic droit sur la valeur.

Création à partir d'une liste existante

Vous pouvez aussi construire une liste de valeurs à partir d'une liste existante créée à partir d'un mesSage X3, d'une table diverse ou d'une liste batch dont vous souhaitez modifier le contenu.

Dans ce cas :

  • créez ou dupliquer la liste de valeurs d'origine (basée sur un mesSage X3, une table diverse...),
  • et modifiez le paramètre Gestion pour le passer en Manuel.

Vous pouvez ensuite modifier le contenu comme indiqué ci-dessus.

La liste manuelle n'est pas synchronisée avec la liste d'origine.

SEEINFO La référence à la liste origine (menu, table divers...) est perdue après avoir passé le paramètre gestion à Manuel.

Ajout de valeurs

Lorsqu'on ajoute une valeur la fenêtre suivante est affichée.
Le but de cette fenêtre est de saisir la valeur et le libellé de l'entrée.

Sélection du libellé

  • Le libellé ne peut pas être saisi :il provient toujours d'un mesSage X3 ou d'une table diverse pour permettre les traductions.
  • Les paramètres ci-dessous permettent de saisir l'origine du libellé :
    • Origine (méthode de lecture du libellé),
    • Chapitre - Numéro : renseignez le chapitre et le numéro,
    • Table diverse - Numéro : renseignez le code de la table et de code de l'entrée

Le traitement de génération du fichier MEN.xml génère autant de libellés que de langues qui ont été définies pour le site.

Saisie de la valeur

Valeur : par défaut ce champ contient l'index du menu local ou le code de l'entrée de la table diverse utilisé pour le libellé. Il est généralement modifié pour associer des codes spécifiques lorsqu'on on crée un nouvelle liste de valeurs.

Cas des catégories hiérarchiques

Le 'champ lié' est vide par défaut. Il contient le champ de l'entité qui correspond au niveau de catégorie auquel est rattachée la valeur seulement si il est différent de celui défini par défaut dans le tableau 'Champ par défaut (entité)'.

SEEREFERTTO Voir le paragraphe sur les catégories hiérarchiques.

Gestion automatique

  • Créez une liste de valeurs à partir d'un mesSage X3 ou d'une table diverse.
  • Vous ne pouvez pas modifier le contenu de la liste.
  • Si vous modifiez le message ou la table diverse, validez à nouveau la liste de valeurs pour prendre en compte les modifications car les données sont recopiées dans le fichier dictionnaire MEN.xml.

Type
Origine de la liste Message ou Table diverse

Type Message

Chapitre
N° du chapitre

Type Table diverse

Table diverse
Code de la table diverse

Libellé court
Oui/Non

Liste hiérarchique

Dépendance
Non pour générer un liste simple.
Oui pour générer un liste hiérarchique à partir des dépendances entre tables diverses.

Le chainage des dépendances entre tables diverses est de type 'fils vers le parent' c'est à dire que le paramètre 'Table dépendance' de la fiche 'tables diverse' contient le code de la table parent.

Pour générer une liste valeur hiérarchique à partir d'une table diverse il faut partir de la table parent.

Niveau
Définit la profondeur de l'arborescence c'est à dire le nombre de niveaux de catégories autorisés pour la liste de valeurs.

Gestion batch

La liste est créée à partir d'un traitement batch.
Le format du fichier créé par batch doit être identique au format du fichier dictionnaire MEN.xml.

Répertoire racine
Répertoire racine XTEND qui contient les fichier batch

Nous avons défini quatre répertoires racine pour stocker des fichiers XTEND.
Les ressources (fichiers, images...) de ces répertoires sont accessibles par le navigateur via des tokens 'image' ou 'pièces jointes'.

  • Design HTML : Répertoire du projet HTML qui tient compte de la langue utilisateur
  • X_FILES : Répertoire qui est propre au dossier X3 est qui est localisés sous X3_PUB/X3FOLDER/X_TEND/X_FILES
  • X_FILEAPP : Répertoire qui est propre au dossier X3 est qui est localisés sous X3_PUB/X3FOLDER/X_TEND/X_FILAPP
    Il est utilisé pour stoker des fichiers issus de traitements batch comme des rapports générés par le serveur d'impression
  • X_TEND : Répertoire utilisé pour stocker des fichiers communs à tous les dossiers
    Par exemple des images produits, des documents commerciaux...
    Il est localisé sous : X3_PUB/X_TEND/

Design HTML et X_FILES peuvent être localisés sur le serveur X3 (défaut) ou sur le serveur de web services.

X_FILEAPP et X_TEND sont toujours localisés sur le serveur X3.

Fichier
Chemin d'accès du fichier batch par rapport au répertoire racine.

Vérifier mise à jour
'Oui' pour activer la vérification périodique (toutes les minutes) de la date de dernière modification du fichier batch.

Les fichiers batch sont rechargés lorsqu'on recharge le dictionnaire XTEND.

Gestion des catégories hiérarchiques

Comme nous l'avons vu précédemment on sait créer des listes de valeurs hiérarchiques qui sont représentées sous la forme d'une structure arborescente.
Nous allons voir maintenant comment exploiter cette structure de données sous la forme de tokens dans les pages HTML pour gérer les menus de catégories hiérarchiques.

Un menu de catégories hiérarchiques est constitué de plusieurs ListBoxes affichées via un tag <select> dont les contenus sont inter-dépendants.

Nous prendrons comme exemple les catégories suivantes utilisées pour effectuer des sélections dans un catalogue de voitures :

Niveau 1 : Constructeur
Niveau 2 : Modèle
Niveau 3 : Type Break ou Berline
Niveau 4 : Energie Diesel ou Essence

Les champs de l'entité voiture qui contiennent les code des catégories des niveaux 1,2,3,4 sont respectivement CAT1,CAT2,CAT3 et CAT4.

Liste de valeurs

La première étape consiste à créer la liste de valeurs qui contient l'arborescence des catégories :

Champ par défaut (Entité) : liste des 'tokens champs' qui contiennent les informations sur la catégorie.
Les entités XTEND qui supporteront ce système de catégorie devront obligatoirement comporter les champs définis dans le tableau 'Champ par défaut'.

Dans notre exemple nous saisisons dans l'ordre CAT1,CAT2,CAT3,CAT4 (Voir paragraphe suivant).

Saisie des catégories : à chaque catégorie on associe un libellé et un code catégorie.

N1 - Valeur=REU - Libellé=Renault
N2 - Valeur=CLI - Libellé=Clio
  N3 - Valeur=BRK - Libellé=Break
 N4 - Valeur=DI - Libellé=Diesel
 N4 - Valeur=ES - Libellé=Essence
N2 - Valeur=MEG - Libellé=Megane
...

Le niveau (1, 2, 3,4) de la catégorie correspond au rang (1-N) dans le tableau 'Champ par défaut' et permet d'accéder au nom du champ qui porte la valeur.

Entité XTEND

Les entités XTEND (issues de données X3) qui supportent les catégories hiérarchique doivent comporter des champs qui contiennent les informations sur la catégorie.

L'entité doit comporter autant de champs catégorie que de niveaux de catégories (un champ par niveau de catégorie).

Dans notre exemple l'entité AUTO doit comporter quatre champs CAT1, CAT2, CAT3, CAT4 pour stocker les catégories.

Les champs catégorie sont associés à la liste de valeurs AUTOS qui contient l'arborescence des catégories.

Ces champs doivent être définis dans le paramètre tableau 'Champ par défaut (Entité)' de la liste de valeurs.

Dans notre exemple le tableau contient CAT1, CAT2, CAT3, CAT4.

Nous avons défini ainsi un lien entre la structure arborescente et l'entité XTEND via les champs catégorie.

Sélection

Pour exprimer une catégorie hiérarchique nous utilisons une syntaxe de type path avec le caractère / comme séparateur.

Par exemple /REU/CLI/BER, /PEU, /PEU/107.

Pour stocker la catégorie hiérarchique au format path nous utilisons un champ (de travail).

Ce champ de type texte est défini dans le dictionnaire et on lui associe la liste de valeur.

La valeur de ce champ est construite par une fonction JavaScript en fonction des critères sélectionnés par l'utilisateur puis envoyée au serveur XTEND via un champ du formulaire HTML.

Dans notre exemple ce champ a pour nom CATPATH.

Définition des critères de sélection

Pour effectuer la sélection sur l'entité il faut créer un token lien dynamique et ajouter les critères de sélection.

On crée un critère par champ catégorie et on compare la valeur avec celle du champ qui contient le 'path' de la catégorie.

Formule du token lien dynamique :
CAT1 =web:CATPATH Et CAT2 =web:CATPATH Et CAT3 =web:CATPATH Et CAT4 =web:CATPATH

Pour calculer la valeur du critère le moteur XTEND fait le lien entre le niveau du champ catégorie (CAT1,CAT2...) et la position de la valeur dans le 'path' de la catégorie.

Exemple pour la catégorie /REU/CLI/BER :

Lors de la valorisation des critères de sélection le moteur XTEND effectue le traitement suivant :

1. Lecture de la valeur du champ web CATPATH,
Ce champ contient le path /REU/CLI/BER

2. Pour chaque critère :

    • Calcul du niveau du champ catégorie (CAT1,CAT2...) dans l'arborescence
      Le niveau est donné par le rang dans le tableau 'Champ par défaut (Entité)' de la liste de valeur
    • Extraction de la valeur du 'path' en fonction du niveau
      CAT1=REU - CAT2=CLI - CAT3=BER

Tout se passe comme si le champ CATPATH contenait un tableau ordonné de catégories.

Page HTML

Ce paragraphe décrit comment mettre en oeuvre dans la page HTML :

  • le remplissage automatique des tags HTML <select> qui contiennent les valeurs des critères de sélection,
  • le calcul et la mise à jour du champ qui va contenir le path de la catégorie sélectionnée (CATPATH).

Les tokens XTEND permettent de traiter ces deux opérations avec un minimum de code JavaScript à développer.

Affichage des critères de sélection

Ci-dessous nous avons créé quatre boites de sélection correspondant aux quatre catégories utilisées pour sélectionner les voitures.

HTML

<table>
<tr>
<td>
 <select name="CATPATH1" adx="CATPATH:xlevel=1&xonchange=DLKSELECTAUTOS">
 <option value="">Indiff&eacute;rent</option>
 </select>
</td>
<td>
 <select name="CATPATH2" adx="CATPATH:xlevel=2&xonchange=DLKSELECTAUTOS">
 <option value="">Indiff&eacute;rent</option>
 </select>
</td>
<td>
 <select name="CATPATH3" adx="CATPATH:xlevel=3&xonchange=DLKSELECTAUTOS">
 <option value="">Indiff&eacute;rent</option>
 </select>
</td>
<td>
 <select name="CATPATH4" adx="CATPATH:xlevel=4&xonchange=DLKSELECTAUTOS">
 <option value="">Indiff&eacute;rent</option>
 </select>
</td>
</table>
               

Champ CATPATH : contient le 'path' de la catégorie courante (Ex: REU/CLI pour Renault/Clio)

'adx="CATPATH:xlevel=N' : cette syntaxe indique au moteur XTEND qu'il faut remplir la liste des options avec les valeurs de la catégorie correspondant au niveau N de CATPATH :

  • Si CATPATH=REU/CLI et xlevel=1
    Affiche la liste des constructeurs (niveau 1 de la hiérarchie des catégories).
  • Si CATPATH=REU/CLI et xlevel=2
    Affiche la liste des modèles (niveau 2 de la hiérarchie des catégories) pour le constructeur REU (Renault).

Au premier affichage de la page CATPATH est vide et c'est l'option 'Indifférent' qui est affichée (value="").

'xonchange=DLKSELECTAUTOS' : exécute le lien dynamique DLKSELECTAUTOS dès que la valeur du champ est modifiée.

Ce paramètre évite d'ajouter un bouton <input type='button' adx="DLKSELECTAUTOS" value="Sélectionner"> sur lequel l'utilisateur doit cliquer après avoir modifié le critère.

Calcul du path CATPATH

Les fonctions JavaScript ci-dessous permettent de calculer le 'path' de la catégorie sélectionnée :

//-------------------------------------
//aObj est l'objet DOM (select) qui a été modifié
//--> nouvelle sélection
//Calcule le niveau (wMaxLevel) de la catégorie en fonction du nom de aObj
//--> CATPATH1 donne niveau 1 - CATPATH2 donne niveau 2 ...
//Calcule le path de la catégorie du niveau 1 à wMaxLevel
//Reset des champs de niveau supérieur à wMaxLevel
//Renvoie le path
function getCatCar(aObj)
{
 var wCatPrefix="CATPATH";
 var wCat="";
 if (!aObj || !aObj.name) return wCat;
 var wMaxLevel=parseInt(aObj.name.slice(wCatPrefix.length),10);
 for( var i=0;i<wMaxLevel;i++)
 {
   var wVal=xtdGetFieldVal(wCatPrefix+(i+1));
   if (wVal!="")
   {      
     if (i>0) wCat+='/';
     wCat+=wVal;
   }
 }
 // Reset des champs
 for( var i=wMaxLevel;i<4;i++)
   xtdSetField (wCatPrefix+(i+1),"");
 return wCat;
}
//-------------------------------------
//xtdDoMyDlk est appelé lorsque l'utilisateur clique sur un lien dynamique
function xtdDoMyDlk(aDomOut)
{
   var wContinue=true;
   //DLKSELECTAUTOS --> Modification d'un critère de sélection
   if (aDomOut.isClickedDynLink("DLKSELECTAUTOS"))
   {                      
     //Calcul du path de la catégorie 
     var wCat=getCatCar(aDomOut.getDynLinkCtx().getHtmlElement());
     //Mise à jour du champ CATPATH qui est transmis au moteur XTEND
     //--> Voir les critères de sélection du lien DLKSELECTAUTOS
     xtdSetField("CATPATH",wCat);   
   }
   return wContinue;
}

Dès que l'utilisateur modifie une catégorie le lien DLKSELECTAUTOS est exécuté.

La fonction 'xtdDoMyDlk' permet d'effectuer des traitement spécifiques avant de soumettre le formulaire au serveur XTEND.

Cette fonction :

  • calcule le nouveau 'path' de la catégorie (getCatCar()),
  • valorise le champ CATPATH qui est transmis au serveur.

En retour, le serveur aura effectué la nouvelle sélection et calculé les nouvelles valeurs des critères de sélection.

Reset de la sélection

La fonction ci-dessous ré-initialise les critères de sélection est recalcule la page.

<script>
function selAllCars(aObj)
{
 xtdSelectSetVal("CATPATH1","");
 xtdSelectSetVal("CATPATH2","");
 xtdSelectSetVal("CATPATH3","");
 xtdSelectSetVal("CATPATH4","");
 xtdDoDlk(aObj,"DLKSELECTAUTOS");
}
</script>

<input type="button" value="Reset" onClick='javascript:selAllCars(this);'>

Pré-requis

SEEREFERTTO Reportez-vous à la documentation de Mise en oeuvre

Gestion de l'écran

Ecran de saisie

Boutons spécifiques

Validation

Ce bouton permet de mettre à jour le dictionnaire XTEND au format XML.

Le serveur X3WEB prend en compte uniquement le dictionnaire sous ce format.

Il existe un fichier xml par dictionnaire.

Par exemple le fichier ACT.xml correspondant à l'ensemble des actions web pour le site Web courant.

Copie

Ce bouton permet de copier une liste de valeurs

Messages d'erreur

Il n'y a pas de message d'erreur autre que les messages d'erreur génériques.

Tables mises en oeuvre

SEEREFERTTO Reportez-vous à la documentation de Mise en oeuvre