Liens dynamiques
Avant de créer votre site , il préférable de lire la documentation :Avant de commencer.
Le lien dynamique est un token qui permet de traiter les clics souris de l'utilisateur sur les zones sensibles de la page HTML que sont les tags <a> ou les tags <input type='button'>.
<input type='button' adx="MyDynamicLink" value="Cliquer ici">
<a adx="MyDynamicLink">Cliquer ici</a>
Les trois paramètres principaux d'un lien dynamiques sont :
1. l'action Web,
2. la page Web de destination,
3. la sélection.
L'ordre de la liste est l'ordre suivant lequel ces paramètres sont traités par le serveur XTEND.
Prise en main
L'action Web
Il existe deux types d'action qui sont:
- Les actions traitées par le back-office X3 via l'appel du web service :
- Login, création commande, modification coordonnées...
- Les actions traitées par le serveur XTEND :
- Pagination, sélection d'une ligne, changement de site/langue....
Chaque action est déclarée dans le dictionnaire par une fiche de paramétrage.
La page Web de destination
Il s'agit de la page affichée en retour de la requête postée sur le serveur.
Chaque page est déclarée dans le dictionnaire par une fiche de paramétrage.
La page de destination peut être modifiée par l'action.
Pour modifier la page de destination par programme (L4G), utilisez l'enchainement (enchainement programmé) de liens dynamiques :
Valorisez un paramètre du sous-programme avec le code du lien dynamique (avec ou sans action/sélection) qui pointe vers la page de destination.
La sélection
Le lien dynamique peut poster une sélection à destination du bloc principal de la page cible pour en modifier les critères de sélection.
La sélection permet de gérer le lien liste détail, le tri des tableaux ou le raffinement des requêtes.
Pour plus d'informations, voir la documentation sur les Tokens Blocs.
Paramètres HTML
Les paramètres suivants sont pris en compte par les liens dynamiques.
Code |
Paramètres |
Description |
xacceptreload |
Aucun |
Force l'action du lien dynamique à s'exécuter sur rechargement de la page HTML (F5) même si le rechargement est bloqué dans le paramétrage de l'action ('Actif sur reload') |
xparams |
QueryString |
Ajoute des paramètres dans l'URL du lien dynamique |
<a adx="MyDynLink:xacceptreload&xparams=?PARCOD1=VAL1~PARCOD2=VAL2#xtdbottom">
Cet exemple :
- force l'exécution de l'action 'sur F5',
- valorise 2 variables utilisateur PARCOD1 et PARCOD2,
- se positionne sur le signet 'xtdbottom' de la page de destination.
Positionnement à l'intérieur de la page de destination
Exemple montrant comment effectuer un positionnement à l'intérieur de la page de destination (via le paramètre HTML xparams) lorsque l'utilisateur clique sur un lien dynamique :
<!--Lien dynamique dans la page origine-->
<input type="button" value="Cliquer ici" adx="MYDYNLINK:xparams=#signet">
<a adx="MYDYNLINK:xparams=#signet">Cliquer ici</a>
<!--Page de destination-->
<body>
<!--Code HTML -->
<a name="signet">
<!--Positionnement de la page lorsque l'utilisateur clic sur le bouton ci-dessus-->
<!--Code HTML -->
</body>
Valoriser des variables utilisateur via les paramètres de l'URL
Exemple valorisant les variables utilisateur PARCOD1 et PARCODE avec VAL1 et VAL2 (via le paramètre HTML xparams) lorsque l'utilisateur clique sur un lien dynamique :
<!--Lien dynamique dans la page origine-->
<input type="button" value="Cliquer ici" adx="MYDYNLINK:xparams=?PARCOD1=VAL1~PARCOD2=VAL2">
<a adx="MYDYNLINK:xparams=?PARCOD1=VAL1~PARCOD2=VAL2">Cliquer ici</a>
Cas d'usage : lien liste détail
Le lien liste détail consiste à définir un lien pour accéder au détail d'une entité affichée dans une liste.
Par exemple : accéder au détail de l'article à partir du catalogue.
La page détail contient généralement des informations complémentaires provenant d'autres tables que celle utilisée pour afficher la liste.
Par exemple : la fiche de description riche d'un produit ou les produits associés (cross-selling).
Inversement l'utilisateur devra pourvoir retourner vers la liste à partir de la page détail sans perdre le contexte de la liste (critères de sélection, pagination...).
1. Création de l'entité affichée dans la liste
- Création d'interface,
- Création des champs,
- Création des entité.
2. Création d'un bloc 'multi-enregistrements' pour lire et afficher la liste
- Sélection de l'entité définie précédemment.
3. Création d'un lien dynamique pour sélectionner le détail de l'entité
- Sélection de la même entité que le bloc liste.
Le lien dynamique sélectionne une entité telle que le code est égal à celui de la ligne courante.
La ligne courante est identifiée par le bloc ACURRENT (sommet de la pile du contexte de données).
Le lien 'Remplace la sélection du bloc principal'.
4. Création de la page web qui affiche la liste
- Déclaration du bloc liste comme bloc principal de la page web,
- Création du HTML pour afficher la liste.
<table>
<tr>
<th><b>Code</b></th>
<th><b>Libellé</b></th>
</tr>
<!--Bloc liste-->
<!adx="BLKITMLST">
<tr>
<!--Lien vers détail-->
<td><a adx="DLKDETAIL"><span adx="CODE"></span></td>
<td adx="DESCR"></td>
</tr>
<!adx="BLKITMLST">
</table>
5. Création d'un 'bloc mono-enregistrement' pour lire et afficher le détail
- Sélectionne la même entité que le bloc liste.
Le bloc mono-enregistrement a une sélection de type 'Dernier lien cliqué' pour qu'il utilise les critères de sélection du lien dynamique cliqué par l'utilisateur (celui créé précédemment avec la sélection sur ACURRENT.CODE).
6. Création d'un 'lien dynamique' pour le retour vers la liste
- La page de destination est la page liste,
- L'action web a pour code ABLKRESTOREMAINCTX
Restaure le contexte du bloc principal.
7. Création de la page web qui affiche le détail
- Création du HTML pour afficher le détail.
<!--Bloc détail-->
<!adx="BLKDETAIL">
<b>Code </b><span adx="CODE"></span><br>
<b>Libellé </b><span adx="DESCR"></span><br>
<b>Prix </b><span adx="PRIX"></span><br>
<b>Stock </b><span adx="STOCK"></span><br>
<!adx="BLKDETAIL">
<!--Retour vers la liste-->
<a adx="DLKRETOURLISTE">retour liste</a>
Pour afficher des données complémentaires issues d'une autre table ou vue (par exemple une description riche d'un article ou des produits associés) :
- Créez les entités et les blocs qui lisent ces entités en passant dans les critères de sélection le code de l'entité détail BLKDETAIL.CODE.
Retour page précédente
Le lien dynamique ADLKRETURN permet d'effectuer un retour arrière sur les pages XTEND qui ont été consultées.
- fonctionne mieux que la touche 'Back' ou 'Reculer d'une page' du navigateur
- ne prend pas en compte les liens dynamiques qui restent sur la même page
Exemple :
Si on pagine sur un catalogue d'articles le lien ADLKRETURN affichera la page qui a précédé l'affichage du catalogue sans tenir compte des actions de pagination contrairement à la touche back du navigateur.
Le moteur XTEND gère une pile de pages consultées par session utilisateur dont la taille est paramétrable via le paramètre de configuration :
xtend.server.gensetup.misc.rtnstacksize (20 par défaut).
Liens Prédéfinis
Code |
Paramètres |
Action |
Description |
ADLKFIRSTPAGE |
Non |
ABLKFIRSTPAGE |
Affiche la première page d'un bloc |
ADLKNEXTPAGE |
Non |
ABLKNEXTPAGE |
Affiche la page suivante d'un bloc |
ADLKLASTPAGE |
Non |
ABLKLASTPAGE |
Affiche la dernière page d'un bloc |
ADLKSELECT |
Non |
ABLKSELECT |
Sélectionne la ligne d'un bloc |
ADLKUNSELECT |
Non |
ABLKUNSELECT |
Déselectionne la ligne sélectionnée d'un bloc |
ADLKRESTOREFORM |
Non |
ARESTOREFORM |
Restaure un formulaire HTML avec les valeurs initiales |
ADLKRESTORESESSION |
Non |
ARESTORESESSION |
Affiche la dernière page ouverte avant fermeture du navigateur |
ADLKLOGIN |
Oui |
ASESSLOGIN |
Login de l'utilisateur |
ADLKLOGOUT |
Non |
ASESSLOGOUT |
Déconnecte l'utilisateur |
ADLKSWITCHCOOKIES |
Non |
ASESSSWITCHCOOKIES |
Permute le mode 'sans cookies' et le mode 'avec cookies' |
ADLKTRACESET |
Non |
ATRACESET |
Mise à jour de la trace XTEND |
ADLKRETURN |
Non |
Non |
Retour à la page précédente |
ADLKPOSTPAGE |
Non |
Non |
Poste le formulaire de la page courante et retour sur la même page |
ADLKSWITCHSITE |
Oui |
Non |
Ouvre un autre site XTEND |
ADLKSWITCHLANG |
Oui |
Non |
Non Changement de langue utilisateur |
Gestion de l'écran
En-tête
Code Lien dynamique (champ DLKCOD) |
Code du lien dynamique. |
Site (champ FCYLIB) |
Site Web courant. |
Intitulé (champ INTIT) |
Permet de définir un intitulé associé à chaque fiche. |
Onglet Général
Paramètres généraux du lien dynamique.
Le Tableau "Param. Accès sous-programme" est alimenté si on a les conditions suivantes :
- Le lien dynamique possède une sélection sur l'entité,
- Cette entité est liée à une interface de type "Accès données sous-programme",
- L'interface possède des champs paramètres "Acces sous-programme".
Lorsque ce tableau est non vide, il permet de définir une selection sur ces paramètres.
Suivi
Suivi de l'activité (champ LOGMOD) |
Sélectionnez 'oui' pour tracer les appels au lien dynamique dans le log du serveur XTEND. |
Forcer le mode Http Get (champ POSTFORCE) |
Sélectionnez 'oui' pour utiliser la méthode HTTP GET ; le lien doit être pris en compte par les moteurs de recherches (web crawlers). Seuls les liens qui n'ont pas de paramètre contextuel pour la sélection et/ou l'action sont compatibles avec la méthode HTTP GET. |
Destination
Page courante (champ PAGSAM) |
Sélectionnez :
|
Page (champ PAGCOD) |
Page de destination. |
Dynamisme
Sélection sur l'entité (champ ENTCOD) |
Code de l'entité sélectionnée si le lien dynamique poste une sélection pour le bloc principal de la page de destination. L'entité est utilisée pour l'aide à la saisie des critères de sélection dans l'onglet sélection. |
Application sélection (champ SELBLCOPT) |
Il existe trois types de modification des critères d'un bloc par un lien dynamique. 1. Les critères du lien dynamique 'Remplace la sélection du bloc principal'SELECTION DU BLOC = CRITERES DE SELECTION DU LIEN 2. Les critères du lien dynamique 'S'ajoute à la sélection du bloc principal'Effectue un raffinement de la requête du bloc avec le critères du lien. 3. Les critères du lien dynamique 'Se cumule à la sélection en-cours du bloc principal'Effectue un raffinement de la requête du bloc en ajoutant (ET logique) la sélection du lien dynamique à la requête courante du bloc.
Restriction : |
Action (champ ACTCOD) |
Code de l'action web si le lien dynamique a une action. Les paramètres de l'action sont affichés automatiquement dans le bloc Paramètre de l'onglet Avancé pour indiquer la manière dont ils vont être valorisés. |
Contrôler champs Web (champ ACTVERCHP) |
Cochez la case pour que les paramètres de l'action déclarés comme 'Champs web obligatoires_' soient automatiquement contrôlés par XTEND. |
Tableau Param. Accès sous-programme
Code (champ PARCOD42) |
Code du paramètre sous-programme. |
Origine (champ VALTYP42) |
|
Cste / Attrib. Web (champ VALEUR42) |
|
Bloc (champ VBLCCOD42) |
Code du bloc pour l'origine 'Token champ'. |
Entité du bloc (champ ZENTCOD42) |
Champ (champ VFIEKEY42) |
Code du champ pour l'origine 'Token champ'. |
Onglet Avancé
Tableau Paramètres
Code (champ PARCOD41) |
Code du paramètre de l'action. |
Origine (champ VALTYP41) |
|
Cste / Attrib. Web (champ VALEUR41) |
|
Bloc (champ VBLCCOD41) |
Code du bloc pour l'origine 'Token champ'. |
Entité du bloc (champ ZENTCOD41) |
Champ (champ VFIEKEY41) |
Code du champ pour l'origine 'Token champ'. |
Enchaînement
Page si erreur (champ DLKERR) |
Il s'agit de la page qui sera affichée si l'action sort en erreur. Le moteur XTEND considère qu'une action a échoué si le web service invoqué a renvoyé au moins un message d'erreur. |
Ench. programmé (champ SUIPRG) |
'Oui' pour indiquer que c'est le traitement L4G qui renvoie le code du lien dynamique dans un paramètre du sous-programme. Enchainement dynamique défini par le traitement L4GLe traitement L4G peut décider du lien dynamique à enchainer en renvoyant le code du lien dans un paramètre du sous-programme.
Le code du lien dynamique peut aussi être stocké dans une variable session (variable utilisateur).
La page affichée suite à l'enchainement de plusieurs liens dynamiques est la page web associée au dernier lien dynamique traité. |
Entité (champ SUIPRGENT) |
Champ (champ SUIPRGFLD) |
Tableau Liens
Lien dyn. chaîné (champ SUIDLK) |
Code du lien dynamique à exécuter. Liste des liens dynamiques : les liens dynamiques saisis dans la liste seront exécutés séquentiellement tant qu'aucune erreur n'est renvoyée par le web service. |
Onglet Sélection
Le lien dynamique a la capacité de poster une sélection à destination du bloc principal (AMAIN) de la page de destination. Si la sélection du bloc est 'altérable' et si les entités sélectionnées sont identiques, le bloc effectuera la sélection postée par le lien dynamique (en fonction du paramètre 'Application sélection').
Les champs de cet onglet sont actifs uniquement si un code entité a été sélectionné dans le champ 'Sélection sur l'entité' de l'écran 'Général'.
Caractéristiques
Type de sélection (champ SELTYP) |
Aucune : sélection de tous les les enregistrements. Requête : application des critères de sélection du bloc. Dernier lien cliqué : application des critères de sélection du lien dynamique qui a été cliqué pour accéder à la page qui contient le bloc. |
Sélection altérable (champ SELDYNALT) |
Non : la requête SQL associée au bloc ne peut pas être modifiée par celle d'un lien dynamique. Oui : la requête peut être modifiée par celle associée à un lien dynamique. La requête du bloc est la requête par défaut. |
Optimisation (champ INTOPTIMI) |
Choix de l'optimisation proposée par l'interface. Aucune : Aucune optimisation Pas de blob : l'interface ne renvoie pas le champs de type blob Pas de clob : l'interface ne renvoie pas le champs de type clob Ni clob, ni blob : l'interface ne renvoie pas le champs de type blob et clob |
Synthèse sélection
champ RES30 |
Requête du bloc au format texte |
Tableau Critères de sélection
Et/Ou (champ ANDOR30) |
Opérateur logique d'enchainement des opérations. |
( (champ BRKLFTM30) |
Parenthèses ouvrantes. |
Champ (champ FIEKEY30) |
Champ de l'entité dont la valeur est le premier opérande de l'opération. |
champ OPE30 |
Opérateur de comparaison. |
Origine (champ VALTYP30) |
|
Cste / Attrib. Web (champ VALEUR30) |
On saisit ici la valeur du paramètre. Celle-ci est saisie selon les cas comme un nombre, une date, ou un code alphanumérique. Lorsque le paramètre est de type menu local, on peut au choix saisir le début de l'intitulé, ou la valeur numérique correspondant au rang de l'intitulé dans la liste. Lorsque le code est contrôlé par une table annexe, une touche de sélection est utilisable pour le choisir. |
Bloc (champ VBLCCOD30) |
Code du bloc pour l'origine 'Token champ'. |
Entité du bloc (champ ZENTCOD30) |
Champ (champ VFIEKEY30) |
Code du champ pour l'origine 'Token champ'. |
) (champ BRKRGTM30) |
Parenthèses fermantes. |
Critère obligatoire (champ CRIOBY30) |
|
Car. * pour tous (champ ALLSTAR30) |
Entité
Code entité (champ ENTCODSEL) |
Indique les entités qui seront créées à partir du résultat de la requête. |
Interface (champ INTCODSEL) |
Interface de type 'Accès données' qui sera appelée. |
champ INTTYPSEL |
Type d'interface 'Accès données' qui sera appelée. |
Onglet Tri
Caractéristiques
Type de tri (champ SRTTYP) |
Sélectionnez un type de tri :
|
Tri altérable (champ SRTDYNALT) |
|
Tableau Tri
Champ (champ FIEKEY31) |
Nom du champ pour l'origine 'Token champ'. |
Ordre de tri (champ SRTORD31) |
Orde de tri Ascendant/Descendant. |
Etats
Par défaut, les états suivants sont associés à la fonction :
PRTSCR : Impression écran
Mais ceci peut être modifié par paramétrage.
Boutons spécifiques
Copie |
Ce bouton permet de copier un lien dynamique. |
Utilisation avancée
Fonction javaScript xtdDoDlk
Un token lien dynamique est toujours inséré comme attribut d'un tag HTML <a> ou <input type='button'>.
Lorsqu'un le serveur XTEND construit dynamiquement la page HTML : il génère, à l'emplacement des tokens lien dynamique, un appel à une fonction JavaScript de la bibliothèque XTEND (xtdDoDlk) sur l'événement onClick.
Les paramètres de la fonction xtdDoDlk sont contextuels et vont permettre à la bibliothèque XTEND de constituer les données (xml) à envoyer au serveur XTEND pour traiter l'action et la sélection.
<a href="javascript:xtdDoSubmit('MYDLK',null);"
onclick="xtdDoDlk(this,'MYDLK',null,null,'XAA',0,null,event,false,'_1',false,null,false);">
<input type="button"
onclick="xtdDoDlk(this,'MYDLK',null,'MYBLOCK','XA',0,null,event,true,'',false,null,true);"
value="Add to cart"/>
Contexte de données
Lorsque l'utilisateur clique sur un lien dynamique, le contexte de données de la page n'existe plus sur le serveur.
Il a existé pendant la construction de la page puis a été supprimé.
Le serveur XTEND stocke, dans la page HTML (tag <span id="xtdctx">), le contexte de données nécessaire au traitement à posteriori des sélections et actions des liens dynamiques.
L'un des rôles de la fonction JavaScript xtdDoDlk est de retrouver le contexte de données associé au lien dynamique pour le renvoyer au serveur.
Exemple :
Pour un lien liste/détail (catalogue) on veut afficher dans la page 'détail' l'objet (article) sur lequel on a cliqué. Cette opération consiste, pour le serveur XTEND :
- à mémoriser pour chaque ligne du catalogue les valeurs des critères de sélection (ici le code de l'article mais il peut y en avoir plusieurs) pour pouvoir les passer au bloc qui affiche le détail.
Le fait de stocker le contexte dans la page HTML assure un bon fonctionnement d'XTEND avec la touche Back du navigateur.
Appel d'un lien par programme
Pour appeler un lien dynamique par programme en JavaScript (non généré par XTEND), utilisez la fonction ci-dessous :
//aElmt est l'élément du DOM sur lequel on a cliqué
//aDlk est le code du lien dynamique à appeler
//aParams est optionnel et contient les paramètres de l'url (query string)
function xtdCallDlk(aElmt,aDlk,aParams){}
Cette fonction ne peut être utilisée que si le lien dynamique n'a aucune référence à des champs XTEND dans les critères de sélection ou les paramètres de l'action.
Seuls les critères ou paramètres de type 'Champ web' sont pris en compte.
Comment intercepter le clic souris
Dans certains cas, le développeur peut être amené à intercepter le clic pour effectuer des contrôles.
Déclarez une fonction JavaScript de nom xtdDoMyDlk pour que la bibliothèque (XtendLib.js) l'appelle en passant en paramètre l'objet contextuel aDomOut (classe CXtdDomOut) qui permet d'accéder à toutes les informations sur le lien dynamique.
Cette fonction renvoie 'false' pour interrompre le traitement.
function xtdDoMyDlk(aDomOut)
{
if (aDomOut.isDlk("MyDynLink"))
{
// L'utilisateur a cliqué sur le lien MyDynLink
return confirm("Confirmer votre action");
}
return true;
}
Vous pouvez aussi intercepter le processus juste avant l'envoie du formulaire vers le serveur (submit) en créant une fonction JavaScript xDoMySubmit dans la page :
function xDoMySubmit(aDlk,aDomOut){
// Renvoie false pour interrompre le processus
return true;
}
Class CXtdDomOut
Classe du paramètre aDomOut qui donne accès au contexte du lien dynamique.
// Renvoie la valeur de la variable utilisateur aKey
aDomOut.getUserVar(aKey);
// Renvoie le code du lien dynamique sur lequel l'utilisateur a cliqué
aDomOut.getDynLinkId();
// Renvoie l'index de la ligne (0 à N) si l'utilisateur a cliqué
// sur un lien qui est dans un bloc tableau'
aDomOut.getCurLineIdx();
// Renvoie true si l'utilisateur a cliqué sur le lien aArg
// aArg est soit un tableau de liens soit une String
aDomOut.isDlk(aArg);
if (aDomOut.isDlk("DLK1","DLK2")){
// Code si l'utilisateur a cliqué sur "DLK1" ou "DLK2"
}
// Renvoie la liste des paramètres web (Class CXtdDlkWebParamsOut)
aDomOut.getWebParameters();
// Pour connaitre la valeur du paramètre web aName
// aIdx est l'index de la valeur si valeur multiple
aDomOut.getWebParameters().getParamValue(aName,aIdx)
// Renvoie un Array qui contient les valeurs du paramètre web aName
aDomOut.getWebParameters().getParamValues(aName)
// Renvoie la valeur d'un critère de sélection ou paramètre d'action
// aFieldName est le nom du champ XTEND utilisé pour le mapping
aDomOut.getDlkParamValues(aFieldName);
// Idem getDlkParamValues - aParamId est l'ID du paramètre dans mapping
// - Pour un critère de sélection l'ID est SEL + rang du critère (1-N)
// - Cette est plus exacte que getDlkParamValues car l'ID contrairement au nom du champ XTEND
aDomOut.getDlkParamValuesById(aParamId);
Comment ajouter des contrôles de saisie
Lorsqu'un paramètres d'action est déclaré comme 'Champ web obligatoire' la bibliothèque contrôle automatiquement :
- la saisie d'une valeur,
- le type pour les champs numériques et date.
Pour ajouter des contrôles supplémentaires sur les paramètres web, ajoutez la fonction xtdWebParamCheckValue ci-dessous dans la page HTML.
Cette fonction est appelée pour chaque paramètre web de l'action associée au lien dynamique et renvoie true pour valider la saisie.
Voir l'exemple dans la saisie du formulaire du site ASAMPLE.
Fonction xtdWebParamCheckValue
Paramètres :
- aWebParamOut est l'objet qui représente le paramètre
Voir class CXtdDlkWebParamOut - aInputFieldName est le nom du champ web
Attribut name - aInputFieldIndex est l'index du champ dans le formulaire
0 si un seul champ de nom aInputFieldName - aInputFieldValue est la valeur du paramètre pour l'index aInputFieldIndex
function xtdWebParamCheckValue(aWebParamOut,aInputFieldName,
aInputFieldIndex,aInputFieldValue){
// Exemple : Contrôle du format du email sur le champ MAICOD
if (aInputFieldName=="MAICOD"){
var wEmail=xtdCheckEmail(aInputFieldValue);
if (wEmail && wEmail!=aInputFieldValue){
//Format OK
//On met à jour la valeur avec le format calculé par xtdCheckEmail
aWebParamOut.setValue(aInputFieldIndex,wEmail);
}
//True pour valider la saisie - False pour invalider
return wEmail!=null;
}
}
Class CXtdDlkWebParamOut
// Renvoie True si paramètre obligatoire
aWebParamOut.isMandatory();
// Renvoie l'iIndex du champ dans le formulaire HTML
// -> Il peut y avoir plusieurs champ de même nom dans un formulaire (tableau)
aWebParamOut.getIndex();
// Renvoie l'élément DOM
aWebParamOut.getElement(aIdx)
//aValue est un Array
aWebParamOut.setValues(aValue);
//aIdx est l'index (0 - N) de la valeur
aWebParamOut.setValue(aIdx,aValue);
// Renvoie la valeur d'un autre paramètre Web
// -> Utile si le contrôle la valeur d'un paramètre dépend d'autres paramètres
aWebParamOut.getParamValue(aName,aIdx);
// Renvoie la valeur dans un Array
aWebParamOut.getValues();
// Renvoie la valeur d'index aIdx
aWebParamOut.getValue(aIdx);
// Renvoie la valeur d'index 0
aWebParamOut.getFirstValue();
// Renvoie l'attribut name
aWebParamOut.getName();
// Renvoie le type de paramètre défini dan le dictionnaire XTEND
aWebParamOut.isInteger();
aWebParamOut.isX3Menu();
aWebParamOut.isDecimal();
aWebParamOut.isCurrency();
aWebParamOut.isDate();
aWebParamOut.isString();
aWebParamOut.isNumeric();
// Renvoie le type d'élément du DOM du paramètre
aWebParamOut.isHidden(aIdx);
aWebParamOut.isInputText(aIdx);
aWebParamOut.isCheckBox(aIdx);
aWebParamOut.isRadio(aIdx);
aWebParamOut.isTextArea(aIdx);
aWebParamOut.isSelect(aIdx);
Filtrer les paramètres à contrôler
Si la fonction xtdWebParamCheck est présente dans la page, la bibliothèque XTEND appelle cette fonction avant d'effectuer le contrôle du paramètre.
Cette fonction renvoie 'true' pour effectuer le contrôle de la valeur et false pour bloquer le contrôle.
Elle est particulièrement utile dans les listes de picking avec sélection des lignes par une case à cocher. Elle permet de filtrer les lignes pour effectuer le contrôle uniquement sur les lignes qui sont cochées.
Voir l'exemple dans la saisie du formulaire du site ASAMPLE.
Fonction xtdWebParamCheck
Paramètres :
- aWebParamOut est l'objet qui représente le paramètre
Voir class CXtdDlkWebParamOut - aInputFieldName est le nom du champ web
Attribut name - aInputFieldIndex est l'index du champ dans le formulaire
0 si un seul champ de nom aInputFieldName
var gNbChecked=0;
// Renvoie true si le paramètre web aInputFieldName/aInputFieldIndex doit être contrôlé
function xtdWebParamCheck(aWebParamsOut,aInputFieldName,aInputFieldIndex){
/*
Exemple pour une liste de picking avec checkboxes (ASELECTED) pour sélectionner les lignes.
On ne contrôle pas le champ AQUANTITY si la ligne n'est pas sélectionnée
*/
if (aInputFieldName=="AQUANTITY"){
// gNbChecked est un compteur des lignes sélectionnées
// Il permet de bloquer l'action si aucune ligne n'est sélectionnée
if (aInputFieldIndex==0) gNbChecked=0;
// Ligne sélectionnée si la valeur de ASELECTED est égale à 1
if (aWebParamsOut.getParamValue("ASELECTED",aInputFieldIndex)=="1"){
gNbChecked++;
return true;
}
return false;
}
return true;
}
Cas particulier des cases à cocher
Les CheckBoxes ont la particularité de ne pas être renvoyées dans le formulaire HTML si elles ne sont pas cochées.
Ce comportement n'est pas compatible avec le moteur XTEND qui se base sur l'index du champ dans le formulaire HTML pour associer les données saisies dans une même ligne d'un tableau.
Pour faire en sorte qu'une CheckBoxes soit renvoyée même si elle n'est pas cochée la bibliothèque, XTEND remplace les CheckBoxes non cochées par un champ 'input hidden' de même nom juste avant d'envoyer le formulaire vers le serveur (xtdProcessCheckBoxes).
La valeur utilisée pour valoriser les CheckBoxes non cochée est donnée par la variable globale gXtdCBUnSelelectedValue qui est vide par défaut (var gXtdCBUnSelelectedValue="").
Pour modifier la valeur :
- Appelez la fonction xtdSetUnSelelectedValue avec la valeur choisie, par exemple sur l'événement onLoad de la page.
<script>
// Page onLoad event
function xBodyOnLoad()
{
// Set '0' value for unselected checkboxes
xtdSetUnSelelectedValue('0');
// Page initialization code
}
</script>
<body onLoad="xBodyOnLoad();">
<form>
//Html code
</form>
</body>
Lors du parsing de la page, XTEND détecte toutes les CheckBoxes qui ont un token adx et constitue une liste qui est envoyée vers le client dans le contexte de données de la page. Ce sont les CheckBoxes de cette liste qui sont prises en compte par la fonction xtdProcessCheckBoxes.
Accès aux 'Regional Settings'
Le serveur XTEND envoie au navigateur, dans le contexte de données de la page, les informations sur les 'Regional Settings' correspondants à la langue courante.
Pour accéder a ces informations :
- Utilisez la fonction ci-dessous qui renvoie un objet dont la classe est CXtdRegionalSettings.
var wRegSettings=gXtdDOMFactory.getXtdDomIn().getRegionalSettings();
Méthodes de la class CXtdRegionalSettings
// Séparateur de décimales
wRegSettings.getDecimalSep();
// Séparateur de milliers
wRegSettings.getThousandSep();
// Ordre de la date - MDY=0 - DMY=1 - YMD=2
wRegSettings.getDateOrder();
// Date pivot pour le calcule des dates X3
wRegSettings.getDatePivot();
Ajouter/Supprimer des variables et critères utilisateur
Les fonction ci-dessous permettent d'ajouter/supprimer des variables et critères utilisateur.
Les fonction xtdAjax* mettent à jour les variables sur le serveur via une requête Ajax, sans soumettre le formulaire HTML.
Les autres fonctions (hors xtdGetUserVar) soumettent le formulaire HTML.
// ---------------------------------------------------------------
function xtdRemoveUserVar(aId);
function xtdSetUserVar(aId,aValue);
function xtdGetUserVar(aId);
function xtdRemoveUserCrit(aId);
// ---------------------------------------------------------------
function xtdAjaxRemoveUserVar(aId);
function xtdAjaxRemoveAllUserVar();
function xtdAjaxSetUserVar(aId,aValue);
function xtdAjaxRemoveUserCrit(aId);
function xtdAjaxRemoveAllUserCrit();
function xtdAjaxSetUserCrit(aId,aValue);
function xtdRemoveAllUserCrit();
Afficher un message issu du serveur XTEND
La fonction ci-dessous affiche un message calculé par le serveur XTEND.
Le message est renvoyé dans la langue courante du site.
Paramètres :
- aId est le code du message XTEND,
- aP1,aP2.. sont les paramètres (facultatifs).
function xtdAlert(aId,aP1,aP2,aP3,aP4);
// L'exemple ci dessou affiche
// 'Vous êtes connecté à l'application avec le code utilisateur DIS001'
xtdAlert("ASESSLOGIN2","DIS001");
Accès au contexte d'appel de la page
La classe ci-dessous donne accès au contexte d'appel de la page pour connaitre le résultat d'une action :
var wCallCtx==gXtdDOMFactory.getXtdDomIn().getCallingCtx();
// ---------------------------------------------------------------
// CLASS CXtdCallingCtx
// ---------------------------------------------------------------
// Lien dynamique utilisé pour afficher la page courante
wCallCtx.getDynLink();
// True si la page est le résultat d'une action
wCallCtx.hasAction();
// Code de l'action
wCallCtx.getAction();
// True si l'action s'est bien déroulée - False si erreur
wCallCtx.getActionResult();