Sviluppo > Safe X3 WAS > Tokens > Link dinamici 

SEEWARNING Prima di creare il proprio sito è preferibile leggere la documentazione:Prima di iniziare.


Il link dinamico è un token che permette di elaborare i clic dell'utente sui campi sensibili della pagina HTML che sono i tag <a> o i tag <input type='button'>.

<input type='button' adx="MyDynamicLink" value="Clicca qui">
<a adx="MyDynamicLink">Clicca qui</a>

I tre parametri principali di un link dinamico sono:

1. l'azione Web,
2. la pagina Web di destinazione,
3. la selezione.

L'ordine della lista è l'ordine secondo il quale questi parametri sono elaborati dal server XTEND.

Presa in carico

L'azione Web

Esistono due tipi di azioni che sono:

  • Le azioni elaborate dal back-office X3 tramite la chiamata del web service:
    • Login, creazione ordine, modifica coordinate...
  • Le azioni elaborate dal server XTEND:
    • Paginazione, selezione di una riga, cambio di sito/lingua...

Ogni azione è dichiarata nel dizionario mediante una scheda di parametrizzazione.

La pagina Web di destinazione

Si tratta della pagina visualizzata in risposta alla richiesta inoltrata sul server.

Ogni pagina è dichiarata nel dizionario tramite una scheda di parametrizzazione.

SEEINFO La pagina di destinazione può essere modificata dall'azione.

Per modificare la pagina di destinazione tramite programma (4GL), utilizzare il reindirizzamento (programmato) dei link dinamici:

Valorizzare un parametro del sottoprogramma con il codice del link dinamico (con o senza azione/selezione) che punti sulla pagina di destinazione.

La selezione

Il link dinamico può inviare una selezione a destinazione del blocco principale della pagina target per modificarne i criteri di selezione.

La selezione permette di gestire il link elenco dettaglio, l'ordinamento dei riquadri o il raffinamento delle query.

SEEREFERTTO Per maggiori informazioni, vedere, vedere la documentazione sui Token Blocchi.

Parametri HTML

I parametri seguenti sono presi in considerazione dai link dinamici.

Codice

Parametri

Descrizione

xacceptreload

Nessuno

Forza l'azione del link dinamico ad eseguirsi sul ricaricamento della pagina HTML (F5) anche se il refresh è bloccato nella parametrizzazione dell'azione ('Attivo su reload')

xparams

QueryString

Aggiunge i parametri nell'URL del link dinamico
I parametri sono di tipo Chiave=Valore~Chiave=Valore

<a adx="MyDynLink:xacceptreload&xparams=?PARCOD1=VAL1~PARCOD2=VAL2#xtdbottom">

Questo esempio:

  • forza l'esecuzione dell'azione 'su F5',
  • valorizza 2 variabili utente PARCOD1 e PARCOD2,
  • si posiziona sul segnalibro 'xtdbottom' della pagina di destinazione.
Posizionamento all'interno della pagina di destinazione

Esempio che mostra come effettuare un posizionamento all'interno della pagina di destinazione (tramite il parametro HTML xparams) quando l'utente clicca su un link dinamico:

<!--Link dinamico nella pagina origine-->
<input type="button" value="Clicca qui" adx="MYDYNLINK:xparams=#segnalibro">
<a adx="MYDYNLINK:xparams=#segnalibro">Clicca qui</a>
<!--Pagina di destinazione-->
<body>
    <!--Codice HTML -->
    <a name="segnalibro">
    <!--Posizionamento della pagina quando l'utente clicca sul bottone qui in alto-->
    <!--Codice HTML -->
</body>

Valorizzare variabili utente tramite i parametri dell'URL

Esempio che valorizza le variabili utente PARCOD1 e PARCODE con VAL1 e VAL2 (mediante il parametro HTML xparams) quando l'utente clicca su un link dinamico:

<!--Link dinamico nella pagina origine-->
<input type="button" value="Clicca qui" adx="MYDYNLINK:xparams=?PARCOD1=VAL1~PARCOD2=VAL2">
<a adx="MYDYNLINK:xparams=?PARCOD1=VAL1~PARCOD2=VAL2">Clicca qui</a>

Caso di utilizzo: link elenco dettaglio

Il link elenco dettaglio consiste nel definire un link per accedere al dettaglio di una entità visualizzata in un elenco.
Per esempio: accedere al dettaglio dell'articolo a partire dal catalogo.

La pagina dettaglio contiene generalmente le informazioni complementari che provengono da altre tabelle diverse da quelle usate per visualizzare l'elenco.
Per esempio: la scheda di descrizione completa di un prodotto o i prodotti associati (cross-selling).

Inversamente l'utente dovrà poter ritornare all'elenco a partire dalla pagina dettaglio senza perdere il contesto dell'elenco (criteri di selezione, paginazione...).

1. Creazione dell'entità visualizzata nell'elenco
  • Creazione dell'interfaccia,
  • Creazione dei campi,
  • Creazione delle entità.
2. Creazione di un blocco 'multi-record' per leggere e visualizzare l'elenco
  • Selezione dell'entità precedentemente definita.
3. Creazione di un link dinamico per selezionare il dettaglio dell'entità
  • Selezione della stessa entità del blocco elenco.

Il link dinamico seleziona una entità in modo che il codice sia uguale a quello della riga corrente.
La riga corrente è identificata dal blocco ACURRENT (in cima alla sequenza del contesto di dati).
Il link 'Sostituisci selezione del blocco principale'.

4. Creazione della pagina web che visualizza l'elenco
  • Dichiarazione del blocco elenco come blocco principale della pagina web,
  • Creazione dell'HTML per visualizzare l'elenco.

<table>
    <tr>
        <th><b>Codice</b></th>
        <th><b>Descrizione</b></th>
    </tr>
<!--Blocco elenco-->
<!adx="BLKITMLST">
    <tr>
        <!--Link a dettaglio-->
        <td><a adx="DLKDETAIL"><span adx="CODICE"></span></td>
        <td adx="DESCR"></td>
    </tr>
<!adx="BLKITMLST">
</table>

5. Creazione di un 'blocco mono-record' per leggere e visualizzare il dettaglio
  • Selezione della stessa entità del blocco elenco.

Il blocco mono-record ha una selezione di tipo 'Ultimo link cliccato' affinché utilizzi i criteri di selezione del link dinamico cliccato dall'utente (quello creato precedentemente con la selezione su ACURRENT.CODE).

6. Creazione di un 'link dinamico' per il ritorno all'elenco
  • La pagina di destinazione è la pagina elenco,
  • L'azione web ha come codice ABLKRESTOREMAINCTX
    Ripristina contesto del blocco principale.
7. Creazione della pagina web che visualizza il dettaglio
  • Creazione dell'HTML per visualizzare il dettaglio.

<!--Blocco dettaglio-->
<!adx="BLKDETAIL">
    <b>Codice    </b><span adx="CODICE"></span><br>
    <b>Descrizione </b><span adx="DESCR"></span><br>
    <b>Prezzo    </b><span adx="PREZZO"></span><br>
    <b>Stock   </b><span adx="STOCK"></span><br>
<!adx="BLKDETAIL">
<!--Ritorno all'elenco ->
<a adx="DLKRETOURLISTE">ritorno elenco</a>

Per visualizzare i dati complementari derivati da un'altra tabella o vista (per esempio una descrizione completa di un articolo o dei prodotti associati):

  • Creare le entità ed i blocchi che leggono queste entità passando nei criteri di selezione il codice dell'entità dettaglio BLKDETAIL.CODE.

Ritorno pagina precedente

Il link dinamico ADLKRETURN permette di effettuare un ritorno alle pagine XTEND che sono state consultate.

  • funziona meglio del tasto 'Back' o 'Torna indietro di una pagina' del browser
  • non prende in considerazione i link dinamici che rimangono sulla stessa pagina

Esempio:

Se si pagina su un catalogo di articoli il link ADLKRETURN visualizzerà la pagina che ha preceduto la visualizzazione del catalogo senza tenere conto delle azioni di paginazione contrariamente al tasto back del browser.

Il motore XTEND gestisce una sequenza di pagine consultate per sessione utente la cui dimensione è parametrizzabile tramite il parametro di configurazione:
xtend.server.gensetup.misc.rtnstacksize (20 di default).

Link Predefiniti

Codice

Parametri

Azione

Descrizione

ADLKFIRSTPAGE

No

ABLKFIRSTPAGE

Visualizza la prima pagina di un blocco
Sintassi Blocco.LinkDinamico

ADLKNEXTPAGE

No

ABLKNEXTPAGE

Visualizza la pagina successiva di un blocco

ADLKLASTPAGE  

No

ABLKLASTPAGE

Visualizza l'ultima pagina di un blocco

ADLKSELECT

No

ABLKSELECT

Seleziona la riga di un blocco
Blocco.Campo restituisce il valore di Campo per la riga selezionata

ADLKUNSELECT

No

ABLKUNSELECT

Deseleziona la riga selezionata di un blocco

ADLKRESTOREFORM

No

ARESTOREFORM

Ripristina un form HTML con i valori iniziali
Non considera il parametro HTML xrc

ADLKRESTORESESSION

No

ARESTORESESSION

Visualizza l'ultima pagina aperta prima di chiudere il browser
Utilizzato nella pagina di riconnessione (vedere scheda sito)

ADLKLOGIN

ASESSLOGIN  

Login dell'utente
Codice utente(AUSERCODE) e password(APWD) in parametro
L'interfaccia ed il mapping dei parametri sono da effettuare

ADLKLOGOUT

No

ASESSLOGOUT

Disconnette l'utente

ADLKSWITCHCOOKIES

No

ASESSSWITCHCOOKIES

Scambia la modalità 'senza cookies' e la modalità 'con cookies'
Utilizzare il blocco condizionato ADISPNOCOOKIES per visualizzare lo stato con/senza cookies della sessione

ADLKTRACESET 

No

ATRACESET

Aggiornamento della traccia XTEND

ADLKRETURN

No

No

Ritorno alla pagina precedente

ADLKPOSTPAGE

No

No

Inoltra il form della pagina corrente e ritorna sulla stessa pagina

ADLKSWITCHSITE

No

Apre un altro sito XTEND
!!Parametri del sito da indicare

ADLKSWITCHLANG

No

No  Cambio della lingua utente
!!Parametri codice lingua da indicare

 

Prerequisiti

SEEREFERTTO Riferirsi alla documentazione di Implementazione

Gestione videata

Testata

Campi

I seguenti campi sono presenti in questo folder :

Codice del link dinamico.

  • Sito (campo FCYLIB)

Sito Web corrente.

  • Descrizione (campo INTIT)

Permette di definire una descrizione associata ad ogni scheda.

Chiudi

 

Folder Generale

Presentazione

Parametri generali del link dinamico.

Il Riquadro "Param. Accesso sottoprogramma" è alimentato se si verificano le seguenti condizioni:

  • Il link dinamico possiede una selezione sull'entità,
  • Questa entità è collegata ad una interfaccia di tipo "Accesso dati sottoprogramma",
  • L'interfaccia possiede dei campi parametri "Accesso sottoprogramma".

Quando questo riquadro non è vuoto, permette di definire una selezione su questi parametri.

Chiudi

 

Campi

I seguenti campi sono presenti in questo folder :

Avanzamento

  • Avanzamento attività (campo LOGMOD)

Selezionare 'si' per tracciare le chiamate al link dinamico nel log del server XTEND.

  • Forza modo Http Get (campo POSTFORCE)

Selezionare 'si' per utilizzare il metodo HTTP GET; il link deve essere preso in considerazione dai motori di ricerca (web crawlers).
Ciò viene utilizzato solo per assicurare la compatibilità del link con i motori di ricerca.

SEEINFO Solo i link che non hanno un parametro contestuale per la selezione e/o l'azione sono compatibili con il metodo HTTP GET.

Destinazione

  • Pagina corrente (campo PAGSAM)

Selezionare:

  • 'Si' per restare sulla pagina corrente,
  • 'No' per indicare una pagina di arrivo.

Pagina di arrivo.

Dinamicità

Codice dell'entità selezionata se il link dinamico posta una selezione per il blocco principale della pagina di destinazione.

SEEINFO L'entità è utilizzata per l'aiuto all'inserimento dei criteri di selezione nel folder selezione.

  • Applicazione selezione (campo SELBLCOPT)

Esistono tre tipi di modifica dei criteri di un blocco da un link dinamico.
Queste tre opzioni permettono di gestire la maggiorparte delle situazioni che si presentano nelle pagine web:

1. I criteri del link dinamico 'Sostituisci selezione del blocco principale'

SELEZIONE DEL BLOCCO = CRITERI DI SELEZIONE DEL LINK

2. I criteri del link dinamico 'Aggiungi a selezione del blocco principale'

Effettua un affinamento della consultazione del blocco con i criteri del link.
SELEZIONE DEL BLOCCO = CRITERI DI SELEZIONE DEL BLOCCO + CRITERI DI SELEZIONE DEL LINK

3. I criteri del link dinamico 'Somma a selezione in corso del blocco principale'

Effettua un affinamento della consultazione del blocco aggiungendo (AND logico) la selezione del link dinamico alla query corrente del blocco.
Questa opzione viene utilizzata se la selezione del blocco risulta dalla somma di più link dinamici.
SELEZIONE DEL BLOCCO = CRITERI DI SELEZIONE DEL BLOCCO + SOMMA DEI CRITERI DI TUTTI I LINK CLICCATI

SEEWARNING Restrizione:
Solo i criteri di selezione e di ordinamento del blocco principale della pagina (alias AMAIN) possono essere modificati da quelli dei link dinamici.
Si possono definire più blocchi per pagina ma uno solo (il blocco principale) potrà avere dei criteri di selezione e di ordinamento modificabili dall'utente.

Codice dell'azione web se il link dinamico possiede un'azione.

SEEINFO I parametri dell'azione sono visualizzati automaticamente nel blocco Parametro del folder Avanzate per indicare il modo in cui verranno valorizzati.

  • Controlla campi Web (campo ACTVERCHP)

Contrassegnare la casella affinché i parametri dell'azione dichiarati come 'Campi web obbligatori' siano controllati automaticamente da XTEND.

Riquadro Param. Accesso sottoprogramma

Codice del parametro sottoprogramma.

  • Origine (campo VALTYP42)

  • Origine costante: valore fisso inserito nella colonna 'Cost / Attrib. Web'.

  • Origine 'Campo web': valore proveniente da un campo del form HTML (generalmente inserito dall'utente).
    La colonna 'Cost / Attrib. Web' contiene il nome (attributo 'NAME') del campo <input> del form HTML.

  • Origine 'Token campo': valore di un campo di un blocco i cui nomi sono inseriti nelle colonne successive.

  • Cst / Attrib. Web (campo VALEUR42)

  • Origine costante: contiene il valore della costante.

  • Origine 'Campo web': contiene il nome (attributo 'NAME') del campo <input> del form HTML.
    Il parametro verrà valorizzato con il valore di questo campo.

Codice del blocco per l'origine 'Token campo'.

 

  • Campo (campo VFIEKEY42)

Codice del campo per l'origine 'Token campo'.

Chiudi

 

Folder Avanzato

Campi

I seguenti campi sono presenti in questo folder :

Riquadro Parametri

Codice del parametro dell'azione.

  • Origine (campo VALTYP41)

  • Origine costante: valore fisso inserito nella colonna 'Cost / Attrib. Web'.

  • Origine 'Campo web': valore proveniente da un campo del form HTML (generalmente inserito dall'utente).
    La colonna 'Cost / Attrib. Web' contiene il nome (attributo 'NAME') del campo <input> del form HTML.

  • Origine 'Token campo': valore di un campo di un blocco i cui nomi sono inseriti nelle colonne successive.

  • Cst / Attrib. Web (campo VALEUR41)

  • Origine costante: contiene il valore della costante.

  • Origine 'Campo web': contiene il nome (attributo 'NAME') del campo <input> del form HTML.
    Il parametro verrà valorizzato con il valore di questo campo.

Codice del blocco per l'origine 'Token campo'.

 

  • Campo (campo VFIEKEY41)

Codice del campo per l'origine 'Token campo'.

Concatenamento

Si tratta della pagina che verrà visualizzata se l'azione termina con un errore.
Di default il motore XTEND resta sulla pagina corrente se si verifica un errore.

SEEWARNING Il motore XTEND considera che un'azione è fallita se il web service richiamato ha restituito almeno un messaggio di errore.

  • Conc. programmato (campo SUIPRG)

'Si' per indicare che è il programma 4GL che restituisce il codice del link dinamico in un parametro del sottoprogramma.

Concatenamento dinamico definito dal programma 4GL

Il programma 4GL può decidere quale link dinamico concatenare restituendo il codice del link in un parametro del sottoprogramma.

  • Campo Conc. programmato:
    Il codice del link dinamico viene memorizzato in un'entità di tipo sessione tramite il mapping dell'azione.

  • Champi  Entità, Campo:
    Indicano il codice dell'entità di tipo sessione ed il codice del campo che contiene il codice del link dinamico da utilizzare per il concatenamento.

Il codice del link dinamico può anche venire memorizzato in una variabile sessione (variabile utente).
In questo caso si indica:

  • 'ASESSION'
  • ed il codice della variabile che contiene il link nei parametri Entità e Campo.

La pagina visualizzata a seguito del concatenamento di più link dinamici è la pagina web associata all'ultimo link dinamico elaborato.

 

 

Riquadro Collegam.

Codice del link dinamico da eseguire.

Elenco dei link dinamici: i link dinamici inseriti nell'elenco verranno eseguiti sequenzialmente fino a quando il web service non restituirà un errore.

Chiudi

 

Folder Selezione

Presentazione

Il link dinamico ha la capacità di inviare una selezione con destinazione il blocco principale (AMAIN) della pagina di destinazione. Se la selezione del blocco è 'alterabile' e se le entità selezionate sono identitche, il blocco effettuerà la selezione inviata dal link dinamico (in funzione del parametro 'Applicazione selezione').

I campi di questo folder sono attivi solo se è stato selezionato un codice entità nel campo 'Selezione sull'entità' della videata 'Generale'.

Chiudi

 

Campi

I seguenti campi sono presenti in questo folder :

Caratteristiche

  • Tipo di selezione (campo SELTYP)

Nessuna: selezione di tutti i record.

Consultazione: applicazione dei criteri di selezione del blocco.

Ultimo link cliccato: applicazione dei criteri di selezione del link dinamico cliccato per accedere alla pagina che contiene il blocco.

  • Selezione alterabile (campo SELDYNALT)

No: la query SQL associata al blocco non può essere modificata da quella di un link dinamico.

Si: la query può essere modificata da quella associata ad un link dinamico.

SEEINFO La query del blocco è la consultazione di default.

  • Ottimizzazione (campo INTOPTIMI)

Scelta dell'ottimizzazione proposta dall'interfaccia.

Nessuna: Nessuna ottimizzazione

Nessun blob: l'interfaccia non restituisce i campi di tipo blob

Nessun clob: l'interfaccia non restituisce i campi di tipo clob

Nessun clob né blob: l'interfaccia non restituisce i campi di tipo blob e clob

Sintesi selezione

  • campo RES30

Consultazione del blocco in formato testo

Riquadro Criteri di selezione

  • E/O (campo ANDOR30)

Operatore logico di concatenamento delle operazioni.

  • ( (campo BRKLFTM30)

Parentesi aperte.

  • Campo (campo FIEKEY30)

Campo dell'entità il cui valore è il primo operando dell'operazione.

  • campo OPE30

Operatore di confronto.

  • Origine (campo VALTYP30)

  • Origine costante: valore fisso inserito nella colonna 'Cost / Attrib. Web'

  • Origine 'Campo web': valore proveniente da un campo del form HTML (generalmente inserito dall'utente).
    La colonna 'Cost / Attrib. Web' contiene il nome (attributo 'NAME') del campo <input> del form HTML.

  • Origine 'Token campo': valore di un campo di un blocco i cui nomi sono inseriti nelle colonne successive.

  • Cst / Attrib. Web (campo VALEUR30)

Si inserisce qui il valore del parametro. Questo viene inserito a seconda dei casi come numero,data o codice alfanumerico. Quando il parametro è di tipo menù locale, si può a piacere inserire l'inizio della descrizione, o il valore numerico corrispondente al range della descrizione nell'elenco. Quando il codice è controllato da una tabella allegata, si può utilizzare un tasto di selezione per sceglierlo.

Codice del blocco per l'origine 'Token campo'.

 

  • Campo (campo VFIEKEY30)

Codice del campo per l'origine 'Token campo'.

  • ) (campo BRKRGTM30)

Parentesi chiuse.

  • Criterio obbligatorio (campo CRIOBY30)

  • : il valore del secondo operando deve essere non nullo, viceversa XTEND restituirà il messaggio di errore 'AERRCRITMANDATORY'.

  • No: se il valore del secondo operando è nullo, il criterio (la riga) viene ignorato.

  • Car. * per tutti (campo ALLSTAR30)

 

Entità

Indica le entità che verranno create a partire dal risultato della consultazione.
L'entità contiene l'interfaccia di tipo 'Accesso dati' che deve essere richiamata.

Interfaccia di tipo 'Accesso dati' che verrà richiamata.

  • campo INTTYPSEL

Tipo di interfaccia 'Accesso dati' che verrà richiamata.

Chiudi

 

Folder Ord

Campi

I seguenti campi sono presenti in questo folder :

Caratteristiche

  • Tipo sort (campo SRTTYP)

Selezionare un tipo di ordinamento:

  • Nessuno: i record (righe del blocco) non vengono ordinati.

  • Campo: ordinamento secondo un elenco di campi definiti nel riquadro Sort.

  • Random: l'ordine delle righe viene calcolato in modo aleatorio da un programma 4GL post-query. 'Random' viene utilizzato per visualizzare aleatoriamente una riga tra N.
  • Sort alterabile (campo SRTDYNALT)

  • No: i criteri di ordinamento non possono essere modificati da un link dinamico.

  • : i criteri di ordinamento sono modificabili da un link dinamico.

Riquadro Ord

  • Campo (campo FIEKEY31)

Nome del campo per l'origine 'Token campo'.

  • Ordinamento (campo SRTORD31)

Ordinamento Ascendente/Discendente.

Chiudi

 

Stampe

Di default, le seguenti stampe sono associate alla funzione :

 PRTSCR : Stampa Videata

Ma ciò lo si può modificare tramite parametrizzazione.

Bottoni specifici

Questo bottone permette di aggiornare il dizionario XTEND nel formato XML.

Il server X3WEB considera il dizionario solo in questo formato.

Esiste un file xml per dizionario.

Per esempio il file ACT.xml che corrisponde all'insieme delle azioni web per il sito Web corrente.

Questo bottone permette di copiare un link dinamico.

Utilizzo avanzato

Funzione javaScript xtdDoDlk

Un token link dinamico è sempre inserito come attributo di un tag HTML <a> o <input type='button'>.

Quando il server XTEND costruisce dinamicamente la pagina HTML: genera, dove si trovano i token link dinamico, una chiamata ad una funzione JavaScript della libreria XTEND (xtdDoDlk) sull'evento onClick.

I parametri della funzione xtdDoDlk sono contestuali e permettono alla libreria XTEND di costituire i dati (xml) da inviare al server XTEND per elaborare l'azione e la selezione.

<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="Aggiungi al carrello"/>

Contesto di dati

Quando l'utente clicca su un link dinamico, il contesto di dati della pagina non esiste più sul server.
E' esistito durante la costruzione della pagina e poi è stato cancellato.

Il server XTEND memorizza, nella pagina HTML (tag <span id="xtdctx">), il contesto di dati necessario all'elaborazione in seguito alle selezioni e alle azioni dei link dinamici.

Uno dei ruoli della funzione JavaScript xtdDoDlk è di ritrovare il contesto di dati associato al link dinamico per inviarlo al server.

Esempio:

Per un link elenco/dettaglio (catalogo) si vuole visualizzare nella pagina 'dettaglio' l'oggetto (articolo) su cui si è cliccato. Questa operazione consiste, per il server XTEND:

  • nel memorizzare per ogni riga del catalogo i valori dei criteri di selezione (qui il codice dell'articolo ma possono essercene diversi) per poter passarli al blocco che visualizza il dettaglio.

Il fatto di memorizzare il contesto nella pagina HTML assicura un buon un buon funzionamento di XTEND con il tasto Back del browser.

Chiamata di un link da programma

Per chiamare un link dinamico da programma in JavaScript (non generato da XTEND), utilizzare la funzione qui in basso:

//aElmt è l'elemento del DOM su cui si è cliccato
//aDlk è il codice del link dinamico da richiamare
//aParams è opzionale e contiene i parametri dell'url (query string)
funzione xtdCallDlk(aElmt,aDlk,aParams){}

SEEWARNING Questa funzione può essere utilizzata solo se il link dinamico non ha nessun riferimento ai campi XTEND nei criteri di selezione o ai parametri dell'azione.

Sono presi in considerazione solo i criteri o i parametri di tipo 'Campo web'.

Come intercettare il clic

In alcuni casi, lo sviluppatore può essere chiamato ad intercettare il clic per effettuare dei controlli.

Dichiarare una funzione JavaScript di nome xtdDoMyDlk affinché la libreria (XtendLib.js) la chiami passando in parametro l'oggetto contestuale aDomOut (classe CXtdDomOut) che permette di accedere a tutte le informazioni sul link dinamico.

Questa funzione restituisce 'false' per interrompere l'elaborazione.

funzione xtdDoMyDlk(aDomOut)
{      
     if (aDomOut.isDlk("MyDynLink"))
     {
         // L'utente ha cliccato sul link MyDynLink
         return confirm("Confermi l'azione");
     }
     return true;
}

E' possibile intercettare il processo appena prima dell'invio del form al server (submit) creando una funzione JavaScript xDoMySubmit nella pagina:

funzione xDoMySubmit(aDlk,aDomOut){
    // Restituisce false per interrompere il processo
    return true;
}

Class CXtdDomOut

Classe del parametro aDomOut che dà accesso al contesto del link dinamico.

// Restituisce il valore della variabile utente aKey
aDomOut.getUserVar(aKey);
// Restituisce il codice del link dinamico su cui l'utente ha cliccato
aDomOut.getDynLinkId();
// Restituisce l'indice della riga (da 0 a N) se l'utente ha cliccato
// su un link che è in un blocco riquadro'
aDomOut.getCurLineIdx();
// Restituisce true se l'utente ha cliccato sul link aArg
// aArg è sia un riquadro di link sia una String
aDomOut.isDlk(aArg);
    if (aDomOut.isDlk("DLK1","DLK2")){
        // Codice se l'utente ha cliccato su "DLK1" o "DLK2"
    }
// Restituisce l'elenco dei parametri web (Class CXtdDlkWebParamsOut)
aDomOut.getWebParameters();
// Per conoscere il valore del parametro web aName
// aIdx è l'indice del valore se valore multiplo
aDomOut.getWebParameters().getParamValue(aName,aIdx)
// Restituisce un Array che contiene i valori del parametro web aName
aDomOut.getWebParameters().getParamValues(aName)
// Restituisce il valore di un criterio di selezione o parametro di azione
// aFieldName è il nome del campo XTEND utilizzato per il mapping
aDomOut.getDlkParamValues(aFieldName);
// Idem getDlkParamValues - aParamId è l'ID del parametro nel mapping
// - Per un criterio di selezione l'ID è SEL + range del criterio (1-N)
// - Questo è più esatto del getDlkParamValues poiché è l'ID e non il nome del campo XTEND
aDomOut.getDlkParamValuesById(aParamId);

Come aggiungere dei controlli di inserimento

Quando un parametro di azione è dichiarato come 'Campo web obbligatorio' la libreria controlla automaticamente:

  • l'inserimento di un valore,
  • il tipo per i campi numerici e data.

Per aggiungere dei controlli supplementari sui parametri web, aggiungere la funzione xtdWebParamCheckValue qui in basso nella pagina HTML.

Questa funzione è richiamata per ogni parametro web dell'azione associata al link dinamico e restituisce true per validare l'inserimento.

Vedere l'esempio nell'inserimento del form del sito ASAMPLE.

Funzione xtdWebParamCheckValue

Parametri:

  • aWebParamOut è l'oggetto che rappresenta il parametro
    Vedere classe CXtdDlkWebParamOut
  • aInputFieldName è il nome del campo web
    Attribut name
  • aInputFieldIndex è l'indice del campo nel form
    0 se un solo campo di nome aInputFieldName
  • aInputFieldValue è il valore del parametro per l'indice aInputFieldIndex

function xtdWebParamCheckValue(aWebParamOut,aInputFieldName,
                               aInputFieldIndex,aInputFieldValue){
    // Esempio: Controllo del formato della mail sul campo MAICOD
    if (aInputFieldName=="MAICOD"){
        var wEmail=xtdCheckEmail(aInputFieldValue);
        if (wEmail && wEmail!=aInputFieldValue){
            //Formato OK
            //Si aggiorna il valore con il formato calcolato da xtdCheckEmail
            aWebParamOut.setValue(aInputFieldIndex,wEmail);
        }
        //True per validare l'inserimento - False per non validare
        return wEmail!=null;
    }
}

Class CXtdDlkWebParamOut

// Restituisce True se parametro obbligatorio
aWebParamOut.isMandatory();
// Restituisce l'indice del campo nel form HTML
// -> Possono esserci più campi con lo stesso nome nel form (riquadro)
aWebParamOut.getIndex();
// Restituisce l'elemento DOM
aWebParamOut.getElement(aIdx)
//aValue è un Array
aWebParamOut.setValues(aValue);
//aIdx è l'indice (0 - N) del valore
aWebParamOut.setValue(aIdx,aValue);
// Restituisce il valore di un altro parametro Web
// -> Utile se il controllo del valore di un parametro dipende da altri parametri
aWebParamOut.getParamValue(aName,aIdx);
// Restituisce il valore in un Array
aWebParamOut.getValues();
// Restituisce il valore dell'indice aldx
aWebParamOut.getValue(aIdx);
// Restituisce il valore dell'indice 0
aWebParamOut.getFirstValue();
// Restituisce l'attribut name
aWebParamOut.getName();
// Restituisce il tipo di parametro definito nel dizionario XTEND
aWebParamOut.isInteger();
aWebParamOut.isX3Menu();
aWebParamOut.isDecimal();
aWebParamOut.isCurrency();
aWebParamOut.isDate();
aWebParamOut.isString();
aWebParamOut.isNumeric();
// Restituisce il tipo di elemento del DOM del parametro
aWebParamOut.isHidden(aIdx);
aWebParamOut.isInputText(aIdx);
aWebParamOut.isCheckBox(aIdx);
aWebParamOut.isRadio(aIdx);
aWebParamOut.isTextArea(aIdx);
aWebParamOut.isSelect(aIdx);

Filtrare i parametri da controllare

Se la funzione xtdWebParamCheck è presente nella pagina, la libreria XTEND richiama questa funzione prima di effettuare il controllo del parametro.

Questa funziona restituisce 'true' per effettuare il controllo del valore e false per bloccare il controllo.

E' particolarmente utile neglio elenchi di picking con selezione delle righe tramite una casella da contrassegnare. Permette di filtrare le righe per effettuare il controllo solo sulle righe che sono contrassegnate.

Vedere l'esempio nell'inserimento del form del sito ASAMPLE.

Funzione xtdWebParamCheck

Parametri:

  • aWebParamOut è l'oggetto che rappresenta il parametro
    Vedere classe CXtdDlkWebParamOut
  • aInputFieldName è il nome del campo web
    Attribut name
  • aInputFieldIndex è l'indice del campo nel form
    0 se un solo campo di nome aInputFieldName

var gNbChecked=0;
// Restituisce true se il parametro web aInputFieldName/aInputFieldIndex deve essere controllato
funzione xtdWebParamCheck(aWebParamsOut,aInputFieldName,aInputFieldIndex){
/*
    Esempio per un elenco di picking con checkboxes (ASELECTED) per selezionare le righe.
Non si controlla il campo AQUANTITY se la riga non è selezionata
*/
    if (aInputFieldName=="AQUANTITY"){
        // gNbChecked è un contatore delle righe selezionate
        // Permette di bloccare l'azione se non è selezionata nessuna riga
        if (aInputFieldIndex==0) gNbChecked=0;
        // Riga selezionata se il valore ASELECTED è uguale a 1
        if (aWebParamsOut.getParamValue("ASELECTED",aInputFieldIndex)=="1"){
            gNbChecked++;
            return true;
        }
        return false;
    }
    return true;
}

Caso particolare delle caselle da contrassegnare

I CheckBox hanno la particolarità di non essere reinviati nel form HTML se non sono contrassegnati.

Questo comportamento non è compatibile con il motore XTEND che si basa sugli indici del campo nel form HTML per associare i dati inseriti nella stessa riga di un riquadro.

Per fare in modo che un CheckBox sia rwinviato anche se non è contrassegnato, la libreria XTEND sostituisce i CheckBox non contrassegnati con un campo 'input hidden' di stesso nome appena prima di inviare il form al server (xtdProcessCheckBoxes).

Il valore utilizzato per valorizzare i CheckBox non contrassegnati è dato dalla variabile globale gXtdCBUnSelelectedValue che è nulla di default (var gXtdCBUnSelelectedValue="").

Per modificare il valore:

  • Richiamare la funzione xtdSetUnSelelectedValue con il valore scelto, per esempio sull'evento onLoad della pagina.

<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>

SEEINFO Durante il parsing della pagina, XTEND individua tutti i CheckBox che hanno un token adx e costituisce un elenco che è inviato al client nel contesto di dati della pagina. Sono i Check Box di questo elenco ad essere presi in considerazione dalla funzione xtdProcessCheckBoxes.

Accesso ai 'Regional Settings'

Il server XTEND invia al browser, nel contesto di dati della pagina, le informazioni sui 'Regional Settings' corrispondenti alla lingua corrente.

Per accedere a queste informazioni:

  • Utilizzare la funzione qui in basso che restituisce un oggetto la cui classe è CXtdRegionalSettings.

var wRegSettings=gXtdDOMFactory.getXtdDomIn().getRegionalSettings();

Metodi della classe CXtdRegionalSettings

// Separatore di decimali
wRegSettings.getDecimalSep();
// Separatore di migliaia
wRegSettings.getThousandSep();   
// Ordine della data - MDY=0 - DMY=1 - YMD=2
wRegSettings.getDateOrder();
// Data pilota per il calcolo delle date X3
wRegSettings.getDatePivot();

Aggiungere/Eliminare variabili e criteri utente

Le funzioni qui in basso permettono di aggiungere/eliminare variabili e criteri utente.

Le funzioni xtdAjax* aggiornano le variabili sul server tramite una richiesta Ajax, senza sottomettere il form HTML.

Le altre funzioni (a parte xtdGetUserVar) sottomettono il form 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();

Visualizzare un messaggio proveniente dal server XTEND

La funzione qui in basso visualizza un messaggio calcolato dal server XTEND.
Il messaggio è restituito nella lingua corrente del sito.

Parametri:

  • aId è il codice del messaggio XTEND,
  • aP1,aP2.. sono i parametri (facoltativi).

function xtdAlert(aId,aP1,aP2,aP3,aP4);
// L'esempio qui in basso visualizza
// 'Connesso all'applicazione con il codice utente DIS001'
xtdAlert("ASESSLOGIN2","DIS001");

Accesso al contesto di chiamata della pagina

La classe qui in basso dà accesso al contesto di chiamata della pagina per conoscere il risultato di una azione:

var wCallCtx==gXtdDOMFactory.getXtdDomIn().getCallingCtx();
// ---------------------------------------------------------------
// CLASS CXtdCallingCtx
// ---------------------------------------------------------------
// Link dinamico utilizzato per visualizzare la pagina corrente
wCallCtx.getDynLink();
// True se la pagina è il risultato di una azione
wCallCtx.hasAction();
// Codice dell'azione
wCallCtx.getAction();
// True se l'azione si è svolta correttamente - False se errore
wCallCtx.getActionResult();

Messaggi di errore

Non esistono messaggi di errore ad eccezione di quelli generici.

Tabelle utilizzate

SEEREFERTTO Riferirsi alla documentazione di Implementazione