Pretty URL

Mit Hilfe von Pretty URL können Deep-Links in easydb realisiert werden.

Pretty URLs werden im Stringtool mit den Keys PRETTY_URL_1 bis PRETTY_URL_9 definiert. (Seit Version 4.0.159 bis PRETTY_URL_20).

Syntax

URL

URL=<regexp>

Regexp um die URL zu matchen. Wenn die URL matched, wird diese PRETTY URL ausgeführt. Die Matches werden in den Variablen %1..%n gespeichert.

SQL:<variable>

SQL:<variable>=<select>

Setzt die auf eine komma-separierte Liste aller Ergebnisse in der ersten Spalte. Im SELECT Statement werden die Variablen aus dem URL-Matching ersetzt.

Beispiel:

SQL:pool=SELECT id FROM Pool WHERE shortname=%1

RIGHT

RIGHT:<table>[:<column>]=<id>[,(|read|write|delete)[,allow_not_logged_in]]

Hiermit wird das Recht am Objekt mit der ID <id> in Tabelle <table> überprüft. Standard-mäßig wird auf das read-Recht geprüft. Das Recht an einem Objekt einer Link-Tabelle wird überprüft, wenn column angegeben ist und es sich dabei um eine Link-Spalte handelt.

Beispiel

RIGHT:Bilder:pool_id=%1,write

Das Beispiel überprüft, ob die <id> %1 die über die URL übergeben wird hat das Schreib-Link-Recht für den aktuellen Benutzer in der Tabelle Pool (verlinkt über pool_id).

Sollte das Objekt ein Login erfordern, wird der Benutzer wird auf die im Stringtool-Key festgelegte grid/index-Maske INDEX_LOGIN_GRID umgelenkt. Die Login-Message wird im Stringtool-Key PRETTY_URL_AUTH_REQUIRED festgelegt und als Login-Fehlversuch-Nachricht auf der Login-Seite angezeigt.

Sollte das Objekt als "not logged in" bzw. "unangemeldeter Benutzer" den gewünschten Zugriff erlauben (hier im Beispiel write), wird zur Login-Seite gesprungen, wenn nicht allowed_not_logged_in oder allow_guest gesetzt ist.

allow_not_logged_in

Wenn gesetzt, kann per Deep Link als unangemeldeter Benutzer (Methode: unauthenticated) direkt in die easydb gesprungen werden, auch wenn die easydb normalerweise ein Login erfordert, sonst ist ein Login erforderlich.

allow_guest

Wenn gesetzt, wird immer die Methode guest benutzt, um den Benutzer anzumelden. Dafür ist es nötig, dass auf dem angesprungenen Objekt der Benutzer "guest" mindestens Lese-Zugriff hat. Wenn "guest" keine Rechte für das Objekt hat, wird trotzdem in die easydb gesprungen und ggfs. ein Hinweis angezeigt das keine Rechte bestehen ein bestimmtes Objekt zu sehen.

Unangemeldete Benutzer ("not logged in") sind nicht identisch mit dem Gastnutzer (der ist in easydb 4 ein normaler Benutzer). Für unangemeldete Benutzer ("not logged in") gelten die per Rechtemanagement für "alle unangemeldeten" Benutzer erteilten Rechte.

In easydb 4 ist der Gastnutzer, der sich in der Loginmaske über den "Gast"-Button anmelden kann, ein normaler User (Userrecord mit Login "guest"). D.h. für den Gastnutzer gelten die für den Account "guest" per Rechtemanagement erteilten Rechte.

REQUIRE_LOGIN

Mit dieser Variable veranlassen Sie easydb den Benutzer zu authentifizieren und alle Methode die automatisch authentifizieren (*guest*, unauthenticated) zu überspringen.

REQUIRE_LOGIN=1

Seit Version 4.0.159.

LOGIN_METHODS

Mit LOGIN_METHODS können die verwendeten Login-Methoden überschrieben werden. Die Variable verhält sich genauso wie die Config-Variable LOGIN_METHODS. Seit Version 4.0.199.

LOGIN_METHODS=guest

Mit diesem Bespiel wird der Benutzer in die easydb als "guest" Benutzer eingeloggt.

Seit Version 4.0.199.

URL:<frame>[:<load_frame>]=<url>

Inside <frame> (pseudo) redirect to <url>, variables are replaced in <url>. With a <load_frame> given, the <frame> is redirected to the <url> after the <load_frame> has finished loading. This is done with javascript and easydb’s findWindow function, which behaves much like the "target" attribute known from the html <A>-tag.

Beispiele

Ein Detail öffnen mit der URL object/<id>

PRETTY_URL_1

# Regexp um die URL zu matchen
URL=^object\/([0-9]+)$

# Top Level, der geladen werden soll
URL:top=EZDB-BildSuche

# im Mainframe lade das Objekt
URL:mainframe=search/BildSuche?loadids=%1

# in Detailansicht, nachdem die Suche geladen wurde, lade Objekt:
URL:sidebarframe:mainframe=detail/detailView?select_id=%1

# setzt die Variable %pool mit dem select
SQL:pool=SELECT ... 

# RIGHT:<table>=<object_id>,[read|write|delete][allow_not_logged_in|allow_guest],link:<table_id>
RIGHT:bilder=%1,read

In einen Pool springen mit der URL pool/<Kurzname des Pools>

PRETTY_URL_2

# Regexp um die URL zu matchen
URL=^pool\/([a-z]+)$

# Top Level, der geladen werden soll
URL:top=EZDB-BildSuche

# setzt die Variable %pool mit dem select
SQL:pool=SELECT id FROM Pool WHERE shortname='%1'

#mainframe
URL:mainframe=search?search_mask=BildSuche&TL_310=%pool&search=Y

# RIGHT:<table_id>=<object_id>,[read|write|delete][allow_not_logged_in|allow_guest],link:<table_id>
RIGHT:Bilder:pool_id=%pool,read,allow_not_logged_in

In eine Arbeitsmappe mit der URL workfolder/<id> springen

PRETTY_URL_3

# URL matchen
URL=^workfolder\/([0-9]+)$

# Top Level
URL:top=EZDB-BildSuche

# die Variable %wfids auf die Liste der Bild-IDs im Workfolder setzen (komma-separiert)
SQL:wfids=SELECT bild_id FROM Workfolder2_Bilder WHERE workfolder2_id = %1

# Suche der Workfolder-Items im Hauptframe
URL:mainframe=search/BildSuche?loadids=%wfids

# Seitenleiste mit Workfolder-Editor laden
URL:sidebarframe:mainframe=edit/WorkfolderEdit?select_id=%1

# Rechte
RIGHT:Workfolder2=%1,read,allow_not_logged_in