Dla celów poniższego przykładu, dane formularza przesyłane są w trybie kodowanym (HTTPS)
Po jego utworzeniu, formularz wyświetlany na bieżącej stronie w trybie zablokowanym, dzięki czemu użytkownik może zweryfikować jego zawartość.
Oznacza to odczyt danych przesłanych przez usługę sieciową (nagłówka i ustawień) i wyświetlenie ich na ekranie.
Odczyt dokonywany jest poprzez mapowanie ustawień podczas ich przekazywania z usługi sieciowej do dwóch jednostek XTEND (XTDFRMHEAD i XTDFRMPARAM) w celu utworzenia danych w pamięci i wstawienie dwóch tokenów sekcji (ABLKFRMHEAD i ABLKFRMPARAM) w celu wyświetlenia danych.
Token „sekcji warunkowej” (ACNDXTDFRMHIDE) zarządza sposobem wyświetlania na tej samej stronie (formularz edytowalny i formularz utworzony jako nieedytowalny).
Zapytania do utworzonych formularzy mogą być przesyłane poprzez funkcję X3: Form(GESAYZ)
Poniższa część stanowi uzupełnienie procedury tworzenia czynności użytkownika.
1. Utwórz interfejs „Czynności użytkownika obiektu” AXTDFORM opartego na nazwie publikacji obiektu AYZ (AXTDAYZ)
2. Generuj dostęp
3. Wygeneruj wszystkie pola interfejsu
Patrz menu „Narzędzia/Tworzenie pola tokenu”
Utwórz jednostki:
Patrz menu Narzędzia/Wprowadzania: pomoc.
Jednostki te są następnie wykorzystywane w mapowaniu zwrotnym czynności tworzenia formularza.
W naszym przykładzie, dla AYZ zostały zdefiniowane dwa klucze:
Klucz FCYCOD filtruje formy w zależności od bieżącej witryny ASAMPLE.
Konieczne jest usunięcie tego klucza w celu odczytania wszystkich formularzy bazy danych.
Utwórz czynność typu „standardowa” AXTDFRMCREATE z ustawieniami: typ, tytuł, adres email, komentarz i opcje.
Tylko ustawienia usług sieciowych właściwe dla kontekstu wywołania czynności zostają zadeklarowane jako ustawienia wprowadzanej czynności.
Token łącza dynamicznego wskazuje, jaka wartość zostanie nadana tym ustawieniom, w zależności od kontekstu wywołania (pole sieciowe, pole XTEND itd.).
„Kasowanie podczas uruchomienia”
zaznaczone w celu usunięcia jednostek AXTDFRMHEAD i AXTDFRMPARAM podczas uruchomienia czynności (przed uzyskaniem wyniku wywołania podprogramu) w celu kontrolowania poprawnego wyświetlania wyników na tej samej stronie HTML, poprzez token „sekcji warunkowej” oparty na obecności pola FRMCOD.
Raportowanie czynności
Tak: dla wszystkich wywołań będą rejestrowane w logu
Aktywne przy powtórnym ładowaniu
Nie: aby zapobiec utworzeniu formularza po wciśnięciu klawisza F5 po utworzeniu formularza
Przycisk uaktywnienia
Utwórz: aby uruchomić przycisk czynności „Zapisz obiekt AYZ”
Ma ono to na celu dopasowanie pola XTEND do ustawień wywołania usługi sieciowej.
W tym przykładzie konieczne jest tylko mapowanie ustawień czynności TYP, TTL, CMT,MAIDCOD, PARCOD i PARVAL.
Mapowanie PARCOD i PARVAL jest mapowaniem typu „Multi”, co umożliwia serwerowi XTEND „mapowanie” kilku pól HTML o takiej samej nazwie w ramach ustawień wielowymiarowych.
Kod jednostki nie jest wprowadzany, w celu „mapowania” ustawień czynności.
Ustawienia usług sieciowych, których wartości pochodzą zawsze z tego samego kontekstu, mogą mieć nadawane wartości bezpośrednio w trakcie mapowania czynności poprzez określenie jednostki.
Na przykład, jeżeli konieczne jest przekazanie kodu logowania użytkownika, może on być zmapowany bezpośrednio z polem AUSERCODE jednostki ASESSION, zamiast być zadeklarowanym jako ustawienie czynności.
Dane zwrócone przez X3 powinny utworzyć dwie jednostki XTEND:
Jednostki typu Czynność są archiwizowane do późniejszego wykorzystania podczas sesji użytkownika.
Zostają one automatycznie odtworzone po każdym wywołaniu działania.
Aby móc zarządzać wyświetlaniem poprzez „sekcję warunkową”, jednostki powinny zostać usunięte przy pierwszym pojawieniu się strony (w momencie kliknięcia tokenu łącza dynamicznego ADLKCONTACT, znajdującego się w menu po lewej stronie).
W tym celu tworzona jest czynność AXTDFRMRESET usuwająca jednostki AXTDFRMHEAD i AXTDFRMPARAM.
Czynność ta jest powiązana z tokenem ADLKCONTACT.
Typ
Standardowy
Interfejs
Brak
Łącze dynamiczne ADLKXTDFRMCREATE jest tokenem, który jest wstawiany w przycisku logowania
Służy do określenia strony docelowej (bieżącej strony) w celu skojarzenia czynności AXTDFRMCREATE i określenia wartości ustawień.
Raportowanie czynności
Tak: by każde kliknięcie na link zostało zarejestrowane w logu
Wymuszenie trybu http post
Nie: Ponieważ działanie na ustawieniach jest związane z łączem dynamicznym, zapytanie zostaje automatycznie wysłane w trybie POST
Bieżąca strona
Tak: Wynik (utworzony komunikat lub formularz) jest wyświetlany na bieżącej stronie
Czynność
Kod uruchamianej czynności
Pola kontrolne sieci
Tak: W celu kontroli ustawień sieciowych (patrz sekcja „Czynności”)
Celem jest zadeklarowanie wszystkich ustawień czynności i wskazanie metody określenia ich wartości.
Pole TYP
Stałe: Typem formularza jest zawsze „kontaktowy” (CON)
Pole TTL, MAICOD
„Mand. Web fld”: Obowiązkowy wpis w polu sieciowym.
Pola CMT, PARCOD, PARVAL
„Web field”: Nieobowiązkowy wpis w polu sieciowym.
Cste/Attrib. web
Zawierają nazwę znacznika wejściowego (nazwę trybutu)
Kontrola wpisu jest aktywna tylko wtedy, gdy zaznaczona jest opcja „Zakładka ogólna/Kontrola pól sieci”.
Zapytanie jest wysyłane do serwera XTEND tylko wtedy, gdy:
Kontrola zostaje przeprowadzona przez bibliotekę XTEND JavaScript.
Token ADLKCONTACT może służyć do wyświetlania strony tworzenia formularza z menu po lewej stronie.
Aby móc zarządzać sposobem wyświetlania poprzez ACNDXTDFRMHIDE (sekcję warunkową), konieczne jest usunięcie jednostek formularza przy pierwszym wyświetleniu.
Operacja ta wykonywana jest poprzez powiązanie czynności AXTDFRMRESET z tokenem ADLKCONTACT.
Jest to token służący do wyświetlania strony w trybie zabezpieczonym (https) w celu wykazania, że dane użytkownika są zakodowane.
Raportowanie czynności
Tak
Wymuszenie trybu post
Tak: Aby utrzymać kontekst XTEND zapisany na bieżącej stronie.
Metoda HTTP GET jest wykorzystywana wyłącznie dla łączy typu „kotwica”, które muszą być kompatybilne z robotami sieciowymi typu „crawler”.
Bieżąca strona
No/AXTDFRMCREATE: Strona docelowa
Czynność
AXTDFRMRESET : w celu usunięcia jednostek formularza
Tokeny sekcji ABLKFRMHEAD i ABLKFRMPARAM służą do wyświetlania jednostek AXTDFRMHEAD i AXTDFRMPARAM, reprezentujących dane formularza XTEND.
Typ
Pojedynczy rekord: Odczytuje jednostkę AXTDFRMHEAD, umieszcza dane na szczycie stosu kontekstu i wykonuje tokeny potomne.
Brak danych
Nic nie wyświetlono: Jeżeli jednostka AXTDFRMHEAD nie istnieje, tokeny sekcji i tokeny podrzędne nie są brane pod uwagę
Jednostka
AXTDFRMHEAD : Kod jednostki do wyświetlenia
Typ
Multi rekord: Wykonuje iterację dla wszystkich jednostek ASHIPADDR i AXTDFRMPARAM każdą jednostkę na górze stosu kontekstu danych, a następnie wykonuje tokeny podrzędne
Brak danych
Nic nie wyświetlono: Jeżeli jednostka AXTDFRMHEAD nie istnieje, tokeny sekcji i tokeny podrzędne nie są brane pod uwagę
Jednostka
AXTDFRMPARAM : Kod jednostki do wyświetlenia
Wiersz według sekcji:
10: Wyświetla maksymalnie 10 jednostek AXTDFRMPARAM na stronie
Komórka według wierszy
1: Wyświetla jedną jednostkę AXTDFRMPARAM na wiersz
Styl dla wiersza
Brak: Styl do zdefiniowania w pliku „my.css” w celu zmiany koloru tła wiersza
Nie jest możliwe zdefiniowanie kryteriów wyboru w sekcjach wyboru jednostek archiwizowanych na serwerze XTEND, które są typu Sesja lub Czynność. Sekcja ta wybiera automatycznie wszystkie jednostki.
Kryteria wyboru są stosowane wyłącznie do jednostek typu „Dostęp do danych”.
Celem jest zilustrowanie użycia sekcji warunkowych.
Token ACNDXTDFRMHIDE służy do modyfikowania zawartości strony, w zależności od obecności lub braku formularza.
Wyświetlanie
Nie zaznaczone: Oznacza to, że zawartość tokena (html lub tokenów podrzędnych) jest ukryta, jeżeli nie zaznaczono warunku.
Typ kryteriów
Pusta sekcja: Wskazuje, że warunki wyświetl/ukryj oparte zostały na tym, że jeden z zawiera lub nie zawiera danych
Sekcja
ABLKFRMHEAD : Kod sekcji, jaki ma zostać sprawdzony
Czynność AXTDFRMRESET, usuwająca jednostki formularza, została utworzona, w związku z czym pola wpisu wyświetlane są przy pierwszym wyświetleniu strony, nawet jeżeli formularz został utworzony już wcześniej.
Czynność ta wywoływana jest przez token łącza dynamicznego AXTDFRMRESET, wyświetlającego stronę tworzenia formularza poprzez kliknięcie menu z lewej strony.
Utwórz stronę AXTDFRMCREATE.
Strona domyślna
Powiąż plik contact.html.
Plik musi być obecny na serwerze X3 i może zostać wybrany klawiszem F12.
Protokół
Https: Służy do wskazania, że konieczne jest kodowanie danych zapytania Http (patrz konfiguracja HTTPS)
Sekcja główna i sekcja tła
Brak
Dostęp chroniony
Nie: służy do wskazania, że strona jest w dostępie otwartym (anonimowym)
Raportowanie czynności
Tak: służy do rejestracji każdego wyświetlenia strony w logu
Po modyfikacji ustawień X3 zaleca się sprawdzenie witryny w całości w celu opracowania słownika serwera XTEND poprzez funkcję „Zatwierdzenie witryny internetowej (AYTFCYGEN)”.
Zweryfikuj, czy witryna XTEND została opublikowana, tzn. czy zostało zaznaczone pole „Publikuj witrynę” rekordu „Witryna internetowa”.
Wstawienie łącza dynamicznego ADLKCONTACT w menu po lewej stronie w celu wyświetlenia strony i usunięcia utworzonego formularza.
<TD class='button'><A adx=»ADLKCONTACT»>Kontakt</A></TD>
Token „sekcji warunkowej” ACNDXTDFRMHIDE służy do wyświetlania wpisu formularza, w wypadku gdy nie został odnaleziony formularz XTEND. W przeciwnym wypadku, wyświetla on zawartość formularza.
<!adx='ACNDXTDFRMHIDE'>
<!-- Wyświetl zawartość utworzonej formuły jeśli sekcja ABLKFRMHEAD nie jest pusta-->
<!adx='ACNDXTDFRMHIDE'>
<!adx='ACNDXTDFRMHIDE:xNot'>
<!-- Wyświetl formułę jeśli sekcja ABLKFRMHEAD nie jest pusta-->
<!-- Ustawienia xNot:Odwrócony warunek tokenu 'sekcji warunkowej'-->
<!adx='ACNDXTDFRMHIDE'>
Tworzenie pól <input> z tokenem adx=„FieldName”.
Jeżeli w znaczniku <input> nie został określony żaden atrybut, jest on generowany automatycznie z nazwą tokenu adx.
W wypadku wykrycia przez serwer XTEND błędu wpisu aplikacji X3, ustawienie xrc(<input adx='TokenName:xrc'>) służy do ponownego wywołania ostatniej wprowadzonej wartości.
Pozwala on uniknąć utraty wprowadzanych danych.
<H1>Formularz kontaktowy</H1>
<table>
<tr>
<td><b><b>Email:</b></td>
<td>
<input type='text' adx='MAICOD:xrc' size="'50'>"
</td>
</tr>
<tr>
<td><b><b>Temat:</b></td>
<td>
<input type='text' adx='TTL:xrc' size="'50'>"
</td>
</tr>
<tr>
<td><b>Wiadomość:</b></td>
<td>
<textarea adx='CMT:xrc' rows='5' cols='75'></textarea>
</td>
</tr>
</table>
Tworzenie pól łączy: <input> taki jak Klucz/Wartość, jaki zostanie „zmapowany” na dwóch kolumnach sekcji tabeli lub dwóch N-wymiarowych ustawieniach podprogramu.
Mapowanie PARCOD/PARVAL łączy się z ustawieniami usług sieciowych i jest przeprowadzany zgodnie z kolejnością tworzenia pól na stronie HTML.
<tr>
<td><b>Société:</b></td>
<td>
<input type='Text' adx='PARVAL:xrc' size="'50'><BR/"> <input type='hidden' name='PARCOD' value='Société'>
</td>
</tr>
<tr>
<td><b>Activité:</b></td>
<td>
<select adx='PARVAL'>
<option value=''>Préciser :</option>
<option value='Artisans' >Artisans</option>
</select>
<input type='hidden' name='PARCOD' value='Activité'>
</td>
</tr>
<tr>
<td><b>Kod pocztowy:</b></td>
<td>
<input type='text' value='' adx='PARVAL:xrc' size="'10'><BR/"> <input type='hidden' name='PARCOD' value='Code Postal'>
</td>
</tr>
Tworzenie „Przycisku” wprowadzania z atrybutem adx, zawierającym kod łącza dynamicznego.
Wszystkie przyciski <input type='button'> zawierające tokeny adx muszą być typu „przycisk”.
Nie należy używać typu „prześlij”.
<tr>
<td>
<input type='button' class='button' adx='ADLKXTDFRMCREATE' value='Créer'>
</td>
</tr>
Działanie użytkownika zostaje uznane za zatwierdzone, jeżeli wywołanie usługi sieciowej nie wyśle żadnego komunikatu błędu.
Komunikaty o błędach są wysyłane w języku 4GL przez podprogram ADDMESSERR (Wywołanie ADDMESSERR('Message') z AWEB)
Komunikaty X3 są wyświetlane poprzez token AXUSERMSG.
Ex: <span id='userMsg' class='userMsg' adx='aMsgUser'></span>
Pola MAICOD i TTL zostały zdefiniowane jako obowiązkowe pola sieciowe, kontrola odbywa się w sposób automatyczny i nie wymaga dodania kodu JavaScript.
Wyświetlane komunikaty o błędzie to AJSWEBFLDMANDAT (pole obowiązkowe) i AJSWEBFLDBADVAL (błędny format).
Możliwe jest dodanie elementów kontrolnych w JavaScript w ramach ustawień sieciowych poprzez dodanie na stronie HTML funkcji JavaScript zwanej xtdWebParamCheckValue .
Jeżeli biblioteka XTEND wykryje obecność tej funkcji, będzie ona wywołana poprzez poniższe ustawienie:
Funkcja ta zwraca prawdę\fałsz w celu potwierdzenia\odrzucenia wpisu.
Komunikat AJSWEBFLDBADVAL wyświetlany jest w przypadku wystąpienia błędu wpisu.
Na przykładowej stronie została dodana funkcja kontrolująca format email.
<script type='application/x-javascript'>
// Funkcja ta umożliwia dopasowanie kontroli wartości parametrów sieciowych
function xtdWebParamCheckValue(aWebParamOut,aInputFieldName,aInputFieldIndex,aInputFieldValue){
// Sprawdzenie wartości danych wejściowych adresu email
if (aInputFieldName=='MAICOD'){
var wEmail=xtdCheckEmail(aInputFieldValue);
if (wEmail && wEmail!=aInputFieldValue)
aWebParamOut.setValue(aInputFieldIndex,wEmail);
return wEmail!=null;
}
return true;
}
</script>
Funkcja xtdWebParamCheck służy do filtrowania pól, jakie mają być kontrolowane.
Działa analogicznie do xtdWebParamCheckValue.
var gNbChecked=0;
// Zwraca wartość „true” jeżeli wskazana jest kontrola ustawień sieciowych aInputFieldName/aInputFieldIndex
function xtdWebParamCheck(aWebParamsOut,aInputFieldName,aInputFieldIndex){
/*
Przykład listy pobrań z polami wyboru (ASELECTED) służącymi do wyboru wierszy.
Pole AQUANTITY nie jest kontrolowane, jeżeli wiersz nie został wybrany
*/
if (aInputFieldName=='AQUANTITY'){
// gNbChecked jest licznikiem wybranych pozycji
if (aInputFieldIndex==0) gNbChecked=0;
// Wiersz został wybrany, jeżeli wartość ASELECTED jest równa 1
if (aWebParamsOut.getParamValue('ASELECTED',aInputFieldIndex)=='1'){
gNbChecked++;
return true;
}
return false;
}
return true;
}
Sekcja ABLKFRMHEAD służy do ustawiania kontekstu danych.
Pola wyświetlane są poprzez token adx umieszczony w znaczniku HTML.
<table width="'90%'" border="'0'" cellspacing='2' cellpadding='4'>
<!adx='ABLKFRMHEAD'>
<tr>
<td><b>Email:</b></td>
<td adx='MAICOD'></td>
</tr>
<tr>
<td><b>Sujet:</b></td>
<td adx='TTL'></td>
</tr>
<tr>
<td><b>Wiadomość:</b></td>
<td><pre adx='CMT'></pre></td>
</tr>
<!adx='ABLKFRMHEAD'>
</table>
Sekcja ABLKFRMPARAM służy do powtarzania opcji formularza i tworzenia takiej samej liczby wierszy <tr> co liczba opcji.
Dla każdej opcji XTEND ustawia kontekst danych, co ma na celu uzyskanie wartości tokenów adx PARCOD i PARVAL umieszczonych w znacznikach HTML.
<!adx='ABLKFRMPARAM'>
<tr>
<td><b adx='PARCOD'></b></td>
<td adx='PARVAL'></td>
</tr>
<!adx='ABLKFRMPARAM'>
Punkt wpisu pageDoMyDlk służy do dodawania procesu uruchamianego kliknięciem użytkownika i anulowania bieżącego procesu w wypadku zwrócenia wartości „fałsz”.
W tym przypadku jest to prośba o potwierdzenie przed wysłaniem formularza na serwer XTEND.
//Prosi użytkownika o potwierdzenie utworzenia nowego formularza po kliknięciu przez użytkownika na łącze dynamiczne ADLKCONTACTNEW
function pageDoMyDlk(aDomOut)
{
if (aDomOut.isDlk('ADLKCONTACTNEW'))
return confirm('Confirm form creation\Confirm creation');
return true;
}
Punkt wpisu xtdWebParamCheckValue jest częścią mechanizmu kontrolującego wartości „pól sieciowych” XTEND (ustawienia sieciowe czynności XTEND).
Jeżeli funkcja xtdWebParamCheckValue została zdefiniowana na stronie HTML, jest ona wywoływana przez bibliotekę XTEND przy każdej kontrol „pól sieciowych”.
W tym przypadku - kontrola wartości pola MAICOD (adresu email) poprzez funkcję XTEND xtdCheckEmail.
// Funkcja ta umożliwia dopasowanie kontroli wartości parametrów sieciowych
function xtdWebParamCheckValue(aWebParamOut,aInputFieldName,aInputFieldIndex,aInputFieldValue){
// Sprawdzenie wartości danych wejściowych adresu email
if (aInputFieldName=='MAICOD'){
var wEmail=xtdCheckEmail(aInputFieldValue);
if (wEmail && wEmail!=aInputFieldValue)
aWebParamOut.setValue(aInputFieldIndex,wEmail);
return wEmail!=null;
}
return true;
}