The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Quiq::Web::Navigation - Webseiten-Navigation

BASE CLASS

Quiq::Hash

DESCRIPTION

Die Klasse erstellt eine Seitenhistorie auf Basis des HTTP-Headers Referer: und speichert diese in einer Navigationsdatenbank. Dadurch wird eine Navigation zwischen Webseiten möglich, insbesondere eine Zurücknavigation zu einer zuvor festgelegten Rückkehrseite.

Die Navigationssdatenbanken aller Sitzungen werden in einem ausgezeichneten Verzeichnis DIR gespeichert. In jedem Unterverzeichnis SID befindet sich die Navigationsdatenbank zu einer Sitzung. DIR und SID werden beim Konstruktoraufruf angegeben.

  DIR/SID/            Verzeichnis zu einer Sitzung
  DIR/SID/rid         aktuelle Request-Id
  DIR/SID/referer.db  Request-Ids zu URLs der Sitzung
  DIR/SID/call.db     Seitenaufrufe der Sitzung
  DIR/nosession.log   Log der sitzungslosen Zugriffe

Folgende Datenbankdateien werden von der Klasse sitzungsbezogen geschrieben und gelesen. Alle Dateien werden von der Klasse automatisch angelegt, wenn sie benötigt werden.

rid

Datei mit einer einzigen Zeile, die die aktuelle Request-Id enthält. Die Datei stellt den Request-Zähler für die Sitzung dar. Die Zählung beginnt mit 1. Ferner findet über dieser Datei die Synchronisation von parallel verlaufenden Schreib- und Leseoperationen statt. Sie wird vor Schreiboperationen auf einer oder mehreren Datenbankdateien mit einem Exklusiv-Lock belegt und bei Leseoperationen mit einem Shared-Lock.

referer.db

Hash-Datei, die Request-Ids zu Referer-URLs speichert. Über diese Zuordnung stellt die Klasse ohne weitere Information von außen die Aufrufreihenfolge her. Schlüssel der Datei ist der URL des Aufrufs.

  referer | rid
  
  referer : Referer-URL des Aufrufs
  -------
  rid     : Request-Id des jüngsten Aufrufs des betreffenden URL
call.db

Hash-Datei, in der die Aufrufe protokolliert werden. Schlüssel ist die Request-Id des Aufrufs.

  rid | url \0 rrid \0 brid
  
  rid     : Request-Id des aktuellen Aufrufs
  -------
  url     : URL des Aufrufs in Querystring-Kodierung
  rrid    : Request-Id der rufenden Seite
  brid    : Request-Id der Rückkehrseite

Die Request-Id der Rückkehrseite wird automatisch von Request zu Request weiter gereicht.

Direktiven

Die Klasse reserviert folgende Parameternamen, die vom Konstruktor als Direktiven zur Verwaltung der Sitzungsdaten interpretiert werden. Diese werden bei einem Seitenübergang dem URL der Zielseite optional hinzugefügt.

Teilt dem Navigation-Konstruktor der Folgeseite die Vorgängerseite mit. Diese Angabe ist normalerweise nicht nötig, da die Vorgängerseite automatisch durch Auswertung Referer-Headers ermittelt wird. Es gibt aber exotische Situtionen, in denen dies nicht oder nicht portabel funktioniert. Dies ist evtl. beim Übergang von einer Seite zu einem Popup-Menü und beim Übergang vom Popup-Menü zur Folgeseite der Fall.

Teilt dem Navigation-Konstruktor der Folgeseite mit, dass die Seite mit der Request-Id rid als Rückkehrseite gespeichert werden soll. Die Request-Id der Rückkehrseite wird von der Klasse automatisch von Aufruf zu Aufruf weitergereicht, bis sie durch eine neue Setzung überschrieben wird. Anstelle einer numerischen Request-Id können folgende symbolischen Werte angegeben werden:

-1

Als Rückkehrseite wird die Vorgängerseite, also die rufende Seite, eingetragen. Diese Direktive wird in den abgehenden Links der Seite angegeben, wenn die aktuelle Seite für die Folgeseite(n) die Rückkehrseite darstellt.

x

Der Eintrag für die Rückkehrseite wird gelöscht.

METHODS

Konstruktor

new() - Instantiiere Navigationsobjekt

Synopsis

  $nav = $class->new($dir,$sid,$obj);

Arguments

$dir

Verzeichnis, in dem die Daten zur Session-Id $sid gespeichert werden.

$sid

Id für der Session.

$obj

Objekt mit Informationen zum aktuellen Aufruf. Im Falle von Mojolicious übergeben wir das Controller-Objekt.

Description

Instantiiere ein Objekt der Klasse und liefere eine Referenz auf dieses Objekt zurück.

Attribute

backUrl() - URL der Rückkehrseite

Synopsis

  $url = $nav->backUrl;
  $url = $nav->backUrl($defaultUrl);

Arguments

(String) $defaultUrl

URL, der geliefert wird, wenn kein Rückkehr-URL definiert ist.

Returns

(String) URL

Description

Liefere den URL der Rückkehrseite als Zeichenkette. Ist keine Rückkehrseite definiert, liefere undef.

VERSION

1.204

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2022 Frank Seitz

LICENSE

This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.