Dieser (extra zu lizenzierende) Befehl ermöglicht es, auf einfache Weise eine Website oder einen Webdienst bereitzustellen, die von anderen Geräten (PCs, Mobilgeräte etc.) im Netzwerk bzw. Internet (wenn der Server von außen erreichbar ist) per Browser aufgerufen werden kann.
Diese kann dann etwa als Weboberfläche für ein Programm dienen, was sich besonders für laufende Dienste oder fernzusteuernde Geräte (z.B. ein Raspberry Pi) eignet.
Ebenso kann ein Webdienst bereitgestellt werden, der auf verschiedene Anfragen Daten zurückgibt.
Hierbei können die Abrufprotokolle GET und POST sowie Cookies verwendet werden.
Wird dieser Befehl mit gesetzter "Aktiv"-Eigenschaft ausgeführt, stellt click.EXE einen Webserver bereit, der auf dem angegebenen Port auf Anfragen lauscht.
Der Befehl ist auch über die "Test"-Schaltfläche über den Eigenschaften testbar. In diesem Fall wird automatisch der Standardbrowser mit der bereitgestellten URL angezeigt. Im Testmodus werden allerdings keine Platzhalter ersetzt und keine Abruf-Unterprogramme ausgeführt.
Hinweis: Wird der Eintrag "Host" freigelassen und ein Port ungleich 80 gewählt, kann das Programm ohne Administrator-Rechte ausgeführt werden. In diesem Fall wird "localhost" als Host verwendet, also die Seite über die IP-Adresse des cX-Rechners erreicht.
Wichtig: Soll das Programm von anderen Rechnern im Netz aus erreichbar sein, muss es zudem wegen der Sicherheitsmechanismen des Systems (etwa Windows) auch mit Administrator-Rechten laufen (rechte Maustaste und "Als Administrator ausführen").
Die Verwendung eines von außen erreichbaren Hosts (standardmäßig wird "+" eingesetzt) oder des HTTP-Standardports 80 erfordert ebenfalls den Start des Programms (bzw. des click.EXE-Editors) mit Administratorrechten.
Die folgenden Eigenschaften stehen für den Befehl zur Verfügung:
Website-ID | Hier wird der Name der Website eingetragen. Da auch mehrere Webserver gleichzeitig bereitgestellt werden können, ist dieser Name erforderlich, um bei Zugriffen über weitere Webserver-Befehle oder Platzhalter zwischen den jeweiligen Diensten unterscheiden zu können |
Aktiv | Dieser Schalter bestimmt, ob der Webserver bereitgestellt oder beendet werden soll |
Host | Hier kann eine IP-Adresse eingegeben werden, auf der der Webserver lauscht. Im Normalfall wird dieses Feld freigelassen, wodurch entweder "localhost" (ohne Adminrechte) oder "+" (mit Adminrechten) verwendet wird |
Port | Hier kann der Port für den Server angegeben werden (z.B. 8080). Der Standardport für HTTP ist 80, was aber auch Adminrechte erfordert, da dieser Port vom System reserviert ist Wird der Port mit einem * angegeben, wird das HTTPS-Protokoll verwendet (nur "*" = Port 443). |
Sitedateien-Ordner | Wird hier ein Ordner angegeben, in dem die HTML-Datei(en) für eine Website liegen, wird diese Site bereitgestellt |
HTML-Code | Hier kann ein einfacher Text oder ein kompletter HTML-Code eingetragen werden, der dann an den Aufrufer gesendet wird |
Seite wie Dialog | Wird hier die ID eines Anzeigefensters (also eines Dialogs) eingetragen, generiert click.EXE aus diesem Dialog einen HTML-Code für die Darstellung des Dialogs im Browser. Auch wenn einige Eigenschaften der cX-Elemente nicht im Browser abbildbar sind, wird dieser Dialog so ähnlich wie möglich aufgebaut. Bei einem Klick auf einen Button wird das Formular per HTTP POST an cX zurückübertragen (Submit) und kann im Ereignisskript für den Button ausgewertet werden. Gültige Elemente sind aktuell Bezeichner, Eingabe, Schalter, Option, Liste, Button, Browser, Bild, Schieber und Datumsauswahl. Hinweis: Die HTML-Elemente können geringfügig anders erscheinen als in Windows, auch können spezielle Eigenschaften ignoriert werden. In einem Bezeichner kann statt des normalen Textes auch direkt ein HTML-Code angegeben werden. Wird hier neben der Formular-ID des Standardformulars auch eine Liste mit ID=FensterID angegeben, wird beim Anklicken eines Buttons mit der angegebenen ID das jeweils andere Formular als Website zurückgegeben. Dies gilt auch bei Angabe der ID als URL. |
Platzhalter ersetzen | Diese Einstellung legt fest, ob cX-Platzhalter im Text (vorgegebener HTML-Code oder Text aus HTML-Dateien) ersetzt werden sollen |
Abrufereignis | Hier kann eine Sprungmarke angegeben werden, welche beim Eintreffen einer Anfrage aufgerufen wird. Das dort beginnende Unterprogramm kann die Anfrage verarbeiten und als Ergebnis den zu liefernden Text (bzw. einen Teil davon - s.u.) zurückgeben. Wird eine Schaltfläche vom Benutzer im Browser angeklickt, wird zunächst im Skript nach einer Sprungmarke gesucht, die mit dem hier angegebenen Ereignis beginnt, gefolgt von einem Unterstrich und der ID des Buttons (z.B. ::MeineSite_Button1). Existiert diese nicht, wird das Ereignis selbst verwendet. Auf diese Weise können für die Buttons im Formular unterschiedliche Ereignis-Unterprogramme verwendet werden - ähnlich wie bei den normalen Elemente-Ereignissen. Das Ereignis-Unterprogramm kann zudem noch einen in Klammern angegebenen Variablennamen enthalten (z.B. ::MeineSite(ButtonID)), In dieser Variablen steht dem Unterprogramm die ID des angeklickten Buttons zur Verfügung. Sollte kein Abrufereignis definiert sein, wird ::Website verwendet. Hierbei werden der Reihe nach folgende Ereignisse gesucht und das erste gefundene aufgerufen: ::Website(Website-ID)_Button(), ::Website(Website-ID), ::Website, ::Anzeige(Form-ID)_Element(Button-ID)_Klick. Hinweis: Da mehrere Benutzer das Formular gleichzeitig im Browser bearbeiten und auf Buttons klicken könnten, empfiehlt sich die Verwendung der Option "Lokale Variablen" für die Sprungmarke. Auf diese Weise wird die Bearbeitung der Aufrufe immer ein eigener Kontext verwendet und Seiteneffekte vermieden. |
Login-Prüfung | Hier kann eine Sprungmarke mit den Parametern (Name;Passwort) angegeben werden, die bei einer Anfrage aufgerufen wird und in der die dann erforderlichen Authentifizierungsdaten geprüft werden. Liefert dieses Unterprogramm eine 1 zurück, sind die Login-Daten akzeptiert, andernfalls wird die Anfrage abgelehnt. (Siehe auch [.Website.Logins]) |
Unteradresse=Sprungmarke
In dieser Eigenschaft kann eine Liste von Sprungmarken hinterlegt werden, die bei speziellen Unteradressen in der URL aufgerufen werden sollen und deren Ergebnis an den Aufrufer zurückgeschickt werden soll. Dies eignet sich gut für den einfachen Abruf von Zustandsdaten, etwa Messwerten u.ä., wobei natürlich auch komplexere Daten (etwa ein als JSON serialisiertes Var-Objekt) zurückgegeben werden können.
Beispielsweise kann durch Angabe des Paares
Zeit=SendeZeit
die Sprungmarke ::SendeZeit aufgerufen werden, wenn die Website mit der Unteradresse /Zeit aufgerufen wird
(etwa http://localhost:8080/Zeit).
Optional können auch Sprungmarken im Skript angelegt werden mit dem Namen ::Website_X, wobei X für die Unteradresse steht.
Hier ein Beispiel für beide Varianten:
:: SendeZeit
:: Website_Zeit, Info: Alternative zu angemedeten Unteradressen
*** Reaktion auf Abruf mit /Zeit: Uhrzeit senden
Beende Unterprogramm (Zurück) (Ergebnis: '[cx.Zeit]')
Eine weitere Möglichkeit ist, in der Sprungmarke einen oder mehrere Parameter anzugeben, etwa ::Anfrage(ID;Text). In diesem Fall werden für diese Parameter entsprechende Variablen in dem Unterprogramm bereitgestellt, in denen dann gleichnamige Aufruf-Parameter (POST oder GET) eingesetzt werden. Für obiges Beispiel würde also mit einer Anfrage mit den GET-Parametern ?ID=X&Text=Hallo in dem Ereignis die Variablen [ID]=X und [Text]=Hallo enthalten.
Für alle Varianten der Ereignisse gilt: Wird ein Rückgabetext angegeben, wird dieser normalerweise anstelle der Seite an den Aufrufer zurückgeliefert. Beginnt dieser Text mit einem Zeilenumbruch, wird erst die Seite und dann der Rückgabewert zurückgegeben, endet er mit einem Zeilenumbruch, wird er vor der Seite geliefert. Dies ist etwa für Fehlermeldungen o.ä. oder auch für Skripte (JavaScript) interessant, etwa Hinweise oder Meldungen (siehe [cX.Website.MeldungsSkript()])
Hintergrundfarbe | Die hier festgelegte Farbe wird für den Seitenhintergrund verwendet, sofern nicht eine vollständig definierte HTML-Seite angegeben wird |
Vordergrundfarbe | Farbe für alle Textelemente, bei denen keine eigene Farbe angegeben ist |
Schriftgröße in % | Hier kann eine Schriftgröße in Prozent der Normalgröße für einfache Texte auf der Seite angegeben werden, sofern nicht eine vollständig definierte HTML-Seite angegeben wird. Dies ist etwa für einfach aufgebaute Seiten sinnvoll, die auch auf mobilen Geräten gut lesbar sein sollen. |
Für den Zugriff auf Zustände einer solchen Website stehen die Platzhalter [cX.Website().X] zur Verfügung.
Hinweis Ist ein Website-Befehl im Skript enthalten, steht bei den Anzeige-Elementen auch die Eigenschaft Webattribute zur Verfügung. Hier können zusätzliche CSS-Attribute (im style-Tag) für das Element angegeben werden.
cX-Webseite: http://www.clickexe.net