edp:web 3
Aufbau der Template-Struktur
Beim Start des Dienstes edp:web wird zunächst der Ordner „html“ komplett geleert. Anschließend werden alle Dateien unter Beibehaltung der Ordner-Struktur aus dem Ordner Templates vorprozessiert und in den Ordner HTML kopiert.
Der Ordner HTML bildet die Rechtestruktur von edp:web in der Version 3 ab. In der obersten Ebene des Ordners sind die Benutzerrollen angegeben. Standardmäßig vorgesehen sind die Benutzerrollen Default, UHS für Unfallhilfstellen, Abschnitt für Einsatzabschnitte, Abteilung für die Abteilungsrolle sowie. „info“ für EDPinfo.
Jede Benutzerrolle kann nur Dateien aufrufen, die im Ordner HTML und nachfolgend dem Unterordner der eigenen Benutzerrolle vorhanden sind. Über den Endpoint „/html“ kann nach Erfolg der Anmeldung jede Templatei über den relativen Pfad bezogen auf den Ordner „/html/{benutzerrolle}“ aufgerufen werden.
Sql-Abfragen
Sql-Abfragen können nach folgendem Schema in den Templates eingebaut werden.
<sql query="Select.... where id=:id" params="id={$ID}"> %FELD1% </sql>
Optional können beliebig viele Parameter durch Komma getrennt angegeben werden.
Das Format hierbei ist Parameter-Name=WERT
Sql-Abfragen können beliebig oft ineinander verschachtelt sein.
Hierfür muss pro Stufe einmal „inner“ vor den SQL-Tag geschrieben werden, sodass bei doppelter Verschachtelung innersql und bei dreifacher Verschachtelung innerinnersql geschrieben wird.
<innerinnersql query="..."> </innerinnersql>
Abfragen mit dem Präfix presql werden einmal beim Start von edp:web vorprozessiert. Das kann genutzt werden, um beispielsweise Standardtexte aus der Datenbank zu laden, die im Einsatz keine Änderungen erfahren.
Automatische Zeilenumbrüche / BR-Tag
Wenn innerhalb der Daten in der Datenbank Zeilenumbrüche vorhanden sind, werden diese von der Template-Engine automatisch um einen <br>-Tag erweitert, damit auch in der Webseite Zeilenumbrüche dargestellt werden. In bestimmten Fällen kann es aber sein, dass ein solcher br-Tag nicht gewünscht ist. Wenn der Feldname des ausgegebenen Datenbankfelds mit NOBR-beginnt, wird das Feld ohne br-Tags ausgegeben. Hierfür kann die SQL-Abfrage genutzt werden:
<sql query="select feld as nobr_feld from tabelle"> %NOBR_FELD% </sql>
IF-Abfragen
IF-Abfragen können nach folgender Syntax eingebaut werden.
<if value1="1" value2="%ID%" operator="eq"> ... </if>
Da die Performance von IF-Abfragen gegenüber SQL-Abfragen deutlich schlechter ist, sollten IF-Abfragen sehr zurückhaltend und nur in geringer Anzahl verwendet werden.
Bei Listen, Ansichten, bei denen viele Datensätze möglich sind, sollte unbedingt vermieden werden, pro Datensatz eine IF-Abfrage vorzusehen.
Includes-Tags
Includes können verwendet werden, um einzelne Seiten einzubinden. Hierbei ist der komplette Pfad bezogen auf das Verzeichnis der Anwendung edpweb.exe anzugeben.
Im nachfolgenden Beispiel wird die Datei „wachbuchtable.html“ aus dem Ordner „templates\default\wachbuch\views“ eingebunden:
{inc}templates/default/wachbuch/views/wachbuchtable.html{/inc}
Einbinden von Parametern
Parameter können sowohl aus der URL als auch aus der Session eingebunden werden.
Der Parameter muss dann immer in geschwungener Klammer und bei einem URL-Parameter mit dem vorangestellten Dollarzeichen angegeben werden. ({$ID})
Parameter aus der Session werden über die Raute angegeben. ({#FUNKTION})
Nutzerberechtigungen
Zum Aufruf von Endpunkten, die schreibend Daten an edp:web senden, muss jeder dieser Endpunkte, der über die URL /action aufgerufen wird, auch explizit für die Benutzerrolle freigeschaltet werden.
Um dies möglichst einfach zu gestalten, kann in jeder Template-Vorlage innerhalb eines Action-Tags ein Endpoint angegeben werden, der in dieser Template-Datei benötigt wird.
{ACTION}uhs/saveuhspatient{/ACTION}
Beim Prozessieren der Templates werden so alle eingetragenen Actions aus der jeweiligen Benutzerrolle übernommen und in der Rechtestruktur von edp:web gespeichert.
Innerhalb einer jeden Template-Datei können beliebig viele Action-Tags angegeben werden.
Sollen Rechte bewusst entzogen werden, wenn beispielsweise im Custom-Ordner eine Template-Datei hinterlegt ist, die ein Recht wieder sperren soll, so kann hierfür der Noaction-Tag genutzt werden.
{NOACTION}uhs/saveuhspatient{/NOACTION}
Dadurch, dass die Templates immer in der Ordnerstruktur einer jeweiligen Benutzerrolle liegen, beziehen sich die Freischaltungen der Actions immer auf diese Benutzerrolle.
Einbinden eigener Anpassungen
Wenn eigene, selbst angepasste Template-Vorlagen eingebunden werden sollen, können diese im Ordner „custom“ abgelegt werden. Dieser Ordner wird beim Präprozessieren der Templates nach dem eigentlichen Templates-Ordner verarbeitet und überschreibt damit die Standard-Daten. Da der custom-Ordner von EDP standardmäßig nicht genutzt und beschrieben wird, werden hier hinterlegte Anpassungen auch bei Updates nicht verändert und bleiben so bestehen.
Zugriff Websockets
Wenn eigene Benutzerrolle angelegt werden, erhalten diese Standardmäßig keinen Zugriff auf den Websocket-Channel „Einsätze“. Wenn innerhalb der Template-Struktur für diese Nutzerrolle auch der Ordner einsatz mit der Datei elw.html hinterlegt ist, wird der Einsatzchannel mit Zugriff auf alle Einsätze freigegeben (ab Version 3.1.96).