Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
edpweb3:dev [2024/06/11 16:15] – angelegt adminedpweb3:dev [2025/02/03 15:19] (aktuell) admin
Zeile 1: Zeile 1:
-====== EDPweb ======+==== 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.
 +
 +<code>
 +<sql query="Select....  where id=:id" params="id={$ID}">
 +%FELD1%
 +</sql>
 +</code>
 +
 +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.
 +
 +<code>
 +<innerinnersql query="...">
 +
 +</innerinnersql>
 +</code>
 +
 +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:
 +<code>
 +<sql query="select feld as nobr_feld from tabelle">
 +%NOBR_FELD%
 +</sql>
 +</code>
 +
 +
 +=== IF-Abfragen ===
 +
 +IF-Abfragen können nach folgender Syntax eingebaut werden.
 +
 +<code>
 +<if value1="1" value2="%ID%" operator="eq">
 +...
 +</if>
 +</code>
 +
 +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:
 +<code>
 +{inc}templates/default/wachbuch/views/wachbuchtable.html{/inc}
 +</code>
 +
 +===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.
 +
 +<code>
 +{ACTION}uhs/saveuhspatient{/ACTION}
 +</code>
 +
 +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.
 +
 +<code>
 +{NOACTION}uhs/saveuhspatient{/NOACTION}
 +</code>
 +
 +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).