From 56491352428569f196815195f06c71b5b2d1a407 Mon Sep 17 00:00:00 2001
From: David Siegfried <ds.siegfried@gmail.com>
Date: Thu, 12 Oct 2023 15:13:18 +0200
Subject: [PATCH] move content

---
 .../{main/Skiplinks.md => a11y/skiplinks.md}  |   8 +-
 .../Vertretung.md => functions/deputy.md}     |   2 +
 website/docs/functions/modaler-dialog.md      |   2 +-
 .../page-layout.md}                           |   7 +-
 .../personal-notifications.md}                |   6 +-
 .../quick-search.md}                          |   7 +-
 .../studip-format.md}                         |  10 ++
 .../studip-mail.md}                           |  27 +----
 .../StudipPDO.md => functions/studip-pdo.md}  |   7 +-
 .../user-lookup.md}                           |   8 +-
 .../visibility.md}                            |   8 +-
 .../{main/Wysiwyg.md => functions/wysiwyg.md} |   6 +
 website/docs/main/URLHelper.md                | 111 ------------------
 .../Request.md => quickstart/request.md}      |   7 ++
 .../Sidebar.md => quickstart/sidebar.md}      |   6 +-
 website/docs/quickstart/url-helper.md         |   6 +
 website/docs/start.md                         |  21 ----
 website/sidebars.js                           |  14 +++
 18 files changed, 97 insertions(+), 166 deletions(-)
 rename website/docs/{main/Skiplinks.md => a11y/skiplinks.md} (98%)
 rename website/docs/{main/Vertretung.md => functions/deputy.md} (99%)
 rename website/docs/{main/PageLayout.md => functions/page-layout.md} (99%)
 rename website/docs/{main/PersonalNotifications.md => functions/personal-notifications.md} (96%)
 rename website/docs/{main/QuickSearch.md => functions/quick-search.md} (99%)
 rename website/docs/{main/StudipFormat.md => functions/studip-format.md} (97%)
 rename website/docs/{main/StudipMail.md => functions/studip-mail.md} (98%)
 rename website/docs/{main/StudipPDO.md => functions/studip-pdo.md} (98%)
 rename website/docs/{main/UserLookup.md => functions/user-lookup.md} (97%)
 rename website/docs/{main/Sichtbarkeit.md => functions/visibility.md} (99%)
 rename website/docs/{main/Wysiwyg.md => functions/wysiwyg.md} (98%)
 delete mode 100644 website/docs/main/URLHelper.md
 rename website/docs/{main/Request.md => quickstart/request.md} (99%)
 rename website/docs/{main/Sidebar.md => quickstart/sidebar.md} (97%)

diff --git a/website/docs/main/Skiplinks.md b/website/docs/a11y/skiplinks.md
similarity index 98%
rename from website/docs/main/Skiplinks.md
rename to website/docs/a11y/skiplinks.md
index 13a9ed1..d697ff1 100644
--- a/website/docs/main/Skiplinks.md
+++ b/website/docs/a11y/skiplinks.md
@@ -1,6 +1,8 @@
-## Benutzung der Klasse SkipLinks
-
-## Allgemeines
+---
+id: skiplinks
+title: Skiplinks
+sidebar_label: Skiplinks
+---
 
 Skiplinks ermöglichen für Tastaturbenutzer das schnelle Navigieren innerhalb einer Seite. In Stud.IP sind die Skiplinks zunächst verborgen. Erst durch das Drücken der Tab-Taste werden die Skiplinks eingeblendet. Dabei bekommt der erste Link der Liste den Focus, so dass durch weiteres Drücken der Tab-Taste durch die Liste navigiert werden kann. Durch Drücken der Eingabetaste wird das Ziel des Links angesprungen.
 
diff --git a/website/docs/main/Vertretung.md b/website/docs/functions/deputy.md
similarity index 99%
rename from website/docs/main/Vertretung.md
rename to website/docs/functions/deputy.md
index 4660b74..fabfd4d 100644
--- a/website/docs/main/Vertretung.md
+++ b/website/docs/functions/deputy.md
@@ -1,5 +1,7 @@
 ---
+id: deputy
 title: Vertretung
+sidebar_label: Vertretung
 ---
 
 # Allgemeines
diff --git a/website/docs/functions/modaler-dialog.md b/website/docs/functions/modaler-dialog.md
index 04d3b8a..989db59 100644
--- a/website/docs/functions/modaler-dialog.md
+++ b/website/docs/functions/modaler-dialog.md
@@ -1,7 +1,7 @@
 ---
 id: modaler-dialog
 title: Modaler Dialog
-sidebar_title: Modaler Dialog
+sidebar_label: Modaler Dialog
 ---
 
 ### Serverseitige erzeugte Abfragen
diff --git a/website/docs/main/PageLayout.md b/website/docs/functions/page-layout.md
similarity index 99%
rename from website/docs/main/PageLayout.md
rename to website/docs/functions/page-layout.md
index d651aed..e7b2ab6 100644
--- a/website/docs/main/PageLayout.md
+++ b/website/docs/functions/page-layout.md
@@ -1,7 +1,10 @@
+---
+id: page-layout
+title: PageLayout
+sidebar_label: PageLayout
+---
 Über die Klasse PageLayout steht eine API in Stud.IP zur Verfügung, die verschiedene Anpassungen an der HTML-Grundstruktur der Ausgabe ermöglicht. Diess umfaßt einfache Dinge wie das Setzen des Seitentitels, ermöglicht aber auch das Hinzufügen oder Entfernen von HTML-Elementen im `<head>`-Bereich der Seite, um beispielsweise eigene Style-Sheets oder JavaScipt-Dateien einbinden zu können.
 
-## Die Klasse `PageLayout`
-
 Die Anpassung der HTML-Grundstruktur passiert über die neue Klasse `PageLayout`. Dazu bietet die Klasse eine Reihe statischer Methoden, die die verschiedenen Möglichkeiten abdecken.
 
 ### Seitentitel
diff --git a/website/docs/main/PersonalNotifications.md b/website/docs/functions/personal-notifications.md
similarity index 96%
rename from website/docs/main/PersonalNotifications.md
rename to website/docs/functions/personal-notifications.md
index b797232..d6d86c0 100644
--- a/website/docs/main/PersonalNotifications.md
+++ b/website/docs/functions/personal-notifications.md
@@ -1,4 +1,8 @@
-# Persönliche Benachrichtigungen
+---
+id: personal-notifications
+title: Persönliche Benachrichtigungen
+sidebar_label: Persönliche Benachrichtigungen
+---
 
 Ab der Version 2.4 ist es sehr einfach, den Nutzer in Echtzeit über neue Inhalte oder spannende Aktionen, die ihn betreffen, zu informieren. Gedacht ist das für den Fall, dass er eine persönliche Nachricht bekommt oder jemand auf einen von ihm eingestellten Inhalt antwortet. Auf jeden Fall soll stets ein direkter Bezug zum Nutzer vorhanden sein. 
 In diesen Fällen möchte man vielleicht sofort sehen, dass sich was getan hat und nicht erst beim nächsten Seitenneuladen. Gerade wenn Stud.IP in einem von 20 Browsertabs offen ist, kann das schon mal dauern. Da möchte man sofort reagieren können. Für Chat-artige Kommunikation zum Beispiel wäre das Gift. Die persönlichen Benachrichtigungen sind daher DAS Element, um Echtzeitereignisse zu ermöglichen.
diff --git a/website/docs/main/QuickSearch.md b/website/docs/functions/quick-search.md
similarity index 99%
rename from website/docs/main/QuickSearch.md
rename to website/docs/functions/quick-search.md
index d3a280d..ac99b9e 100644
--- a/website/docs/main/QuickSearch.md
+++ b/website/docs/functions/quick-search.md
@@ -1,4 +1,9 @@
-## QuickSearch-Klasse
+---
+id: quick-search
+title: QuickSearch-Klasse
+sidebar_label: QuickSearch-Klasse
+---
+
 
 In `lib/classes/QuickSearch.class.php` wird eine GUI-Klasse bereit gestellt, mit der man ein einzeiliges Suchfeld inklusive AJAX-Dropdown Menü schnell und einfach an jede Stelle einbauen kann. Vorteile:
 
diff --git a/website/docs/main/StudipFormat.md b/website/docs/functions/studip-format.md
similarity index 97%
rename from website/docs/main/StudipFormat.md
rename to website/docs/functions/studip-format.md
index 33c66fd..1b5d882 100644
--- a/website/docs/main/StudipFormat.md
+++ b/website/docs/functions/studip-format.md
@@ -1,3 +1,13 @@
+---
+id: studip-format
+title: StudipFormat
+sidebar_label: StudipFormat
+---
+
+:::danger
+Die Funktion ist veraltet und sollte nicht mehr verwendet werden
+:::
+
 Zu der Stud.IP-Version 2.3 wurde die Formatierungsengine umgestellt auf einen eigenen Parser, der sich in den Klassen `StudipFormat` und `TextFormat` verbirgt. TextFormat ist dabei der grundsätzliche Parser und StudipFormat ein spezieller, der mit den typischen Studip-Syntax angereichert ist.
 
 Die Benutzung ist grundsätzlich einfach. Man instanziiert den Parser und schickt seinen zu formatierenden Text durch die Methode `format`. Etwa so:
diff --git a/website/docs/main/StudipMail.md b/website/docs/functions/studip-mail.md
similarity index 98%
rename from website/docs/main/StudipMail.md
rename to website/docs/functions/studip-mail.md
index 19133f8..9df7543 100644
--- a/website/docs/main/StudipMail.md
+++ b/website/docs/functions/studip-mail.md
@@ -1,3 +1,9 @@
+---
+id: studip-mail
+title: Stud.IP-Mail
+sidebar_label: Stud.IP-Mail
+---
+
 Diese Klasse [StudipMail](https://gitlab.studip.de/studip/studip/-/blob/main/lib/classes/StudipMail.class.php) bietet Möglichkeiten eine Email zu erzeugen und zu versenden. Der Versand der Nachricht wird nicht direkt von der Klasse vorgenommen, sondern von einer Instanz einer weiteren Klasse für den Emailtransport. Die dazu benutzen Klassen befinden sich in `vendor/email_message`, hier gibt es verschiedene Möglichkeiten für den Transport z.B. über die php Funktion Mail oder über smtp.
 
 
@@ -57,24 +63,3 @@ Um eine Mail zu erstellen, erzeugt man ein neues `StudipMail` Objekt und füllt
 | `setBodyText($body)` | setzt den Textinhalt der Mail |
 | `setBodyHtml($body)` | setzt den HTML Inhalt der Mail. Es wird dann immer eine multipart Mail erzeugt, wenn der Textinhalt fehlt wird dafür ein Hilfstext eingefügt.|
 | `send(email_message_class $transporter = null)` | versendet die Mail, mit dem optionalem Parameter kann das transport Objekt vorgegeben werden. Die Methode liefert true zurück wenn die Mail verschickt werden konnte. |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/website/docs/main/StudipPDO.md b/website/docs/functions/studip-pdo.md
similarity index 98%
rename from website/docs/main/StudipPDO.md
rename to website/docs/functions/studip-pdo.md
index cc9055b..331cbae 100644
--- a/website/docs/main/StudipPDO.md
+++ b/website/docs/functions/studip-pdo.md
@@ -1,4 +1,9 @@
-# StudipPDO
+---
+id: studip-pdo
+title: StudipPDO
+sidebar_label: StudipPDO
+---
+
 
 Stud.IP benutzt für die Datenbankzugriffe eigene, von `PDO` und `PDOStatement` abgeleitete Klassen. `DBManager::get()` liefert immer automatisch eine Instanz von `StudipPDO` zurück. Man kann dieses Objekt genauso benutzen wie ein Standard-PDO Objekt, darüberhinaus enthält es aber noch ein paar Erweiterungen, die den Umgang mit der Datenbank erleichtern.
 
diff --git a/website/docs/main/UserLookup.md b/website/docs/functions/user-lookup.md
similarity index 97%
rename from website/docs/main/UserLookup.md
rename to website/docs/functions/user-lookup.md
index c9f0652..16a0566 100644
--- a/website/docs/main/UserLookup.md
+++ b/website/docs/functions/user-lookup.md
@@ -1,4 +1,10 @@
-## Benutzung der Klasse UserLookup
+---
+id: user-lookup
+title: Benutzung der Klasse UserLookup
+sidebar_label: Benutzung der Klasse UserLookup
+---
+
+## 
 
 Die neue Klasse (ab Version 2.1) dient zur Filterung von Nutzern nach speziellen Kriterien.
 
diff --git a/website/docs/main/Sichtbarkeit.md b/website/docs/functions/visibility.md
similarity index 99%
rename from website/docs/main/Sichtbarkeit.md
rename to website/docs/functions/visibility.md
index 4d2634d..32f9951 100644
--- a/website/docs/main/Sichtbarkeit.md
+++ b/website/docs/functions/visibility.md
@@ -1,4 +1,9 @@
-# VisibilityAPI
+---
+id: visibility
+title: VisibilityAPI
+sidebar_label: VisibilityAPI
+---
+
 Mit Hilfe der VisibilityAPI können Sichbarkeitseinstellungen für Benutzer von überall im System (Auch in Plugins) hinzugefügt werden, ohne das direkt in den Sichbarkeitscode eingegriffen werden muss. Die Verwaltung der Einstellungsmöglichkeiten ist ebenfalls ohne Eingriff in bestehenden Code möglich.
 
 ## Sichtbarkeitsstufen
@@ -187,4 +192,3 @@ $private_phone_visibility = get_homepage_element_visibility('12345', 'private_ph
 Aus Performancegründen wird für eine gesamte Homepage nur die erste Variante ausgeführt, wo alle Sichtbarkeiten auf einmal geladen werden.
 
 Über die Methode `get_visible_email` kann die nach außen sichtbare Emailadresse ermittelt werden. Hat ein Nutzer eingestellt, dass die eigene Emailadresse nicht angezeigt werden soll, so wird stattdessen versucht, über die Einrichtungszuordnung dieser Kennung eine Emailadresse zu ermitteln (nur Zuordnungen mit mindestens Recht „autor“). Dabei wird zuerst die Emailadresse der ersten gefundenen Einrichtung verwendet, sollte es mehrere Einrichtungszuordnungen geben und eine davon als Standardeinrichtung definiert sein, so wird diese Email verwendet. Bei keiner gefundenen Zuordnung wird ein Leerstring als Emailadresse zurückgegeben.
-
diff --git a/website/docs/main/Wysiwyg.md b/website/docs/functions/wysiwyg.md
similarity index 98%
rename from website/docs/main/Wysiwyg.md
rename to website/docs/functions/wysiwyg.md
index da1c2a9..df64ad2 100644
--- a/website/docs/main/Wysiwyg.md
+++ b/website/docs/functions/wysiwyg.md
@@ -1,3 +1,9 @@
+---
+id: wysiwyg
+title: Wysiwyg-Editor
+sidebar_label: Wysiwyg-Editor
+---
+
 ## Der Wysiwyg-Editor in Stud.IP
 
 ### Allgemeines
diff --git a/website/docs/main/URLHelper.md b/website/docs/main/URLHelper.md
deleted file mode 100644
index 000865d..0000000
--- a/website/docs/main/URLHelper.md
+++ /dev/null
@@ -1,111 +0,0 @@
-## Benutzung der Klasse URLHelper
-
-Zur Vereinfachung der Umstellung von vorhandenem PHP-Code auf Tabbed-Browsing und um allgemein die Verwendung von Session-Variablen auf ein sinnvolles Maß zurückzuführen, wurde mit dem Lifter001 die Klasse `URLHelper` eingeführt. Neuer Code muß diese Klasse verwenden, um Verweise auf andere Seiten (oder die gleiche Seite) in Stud.IP zu erzeugen. Externe Links und Bereiche von Stud.IP, die bereits eigene Funktionen zur Link-Erzeugung verwenden, sind von der Verwendung des `URLHelper` ausgenommen. Das sind im einzelnen:
-
-* Links auf externe Seiten (z.B. die Hilfe)
-* Links auf statische Inhalte (Bilder, Videos usw.)
-* Links auf Aktionen in einem Plugin (`PluginEngine::getLink()`)
-* Links auf Dokumente im Download-Bereich (`GetDownloadLink()`)
-* Links auf Trails-Controller (`Trails_Controller::url_for()`)
-
-Alle anderen Links - insbesondere auch Links aus Plugins auf Seiten im Stud.IP-Kernsystem - müssen so umgestellt werden, daß sie die Klasse `URLHelper` zur Erzeugung der URL verwenden.
-
-### Allgemeines
-
-Hauptzweck dieser Klasse ist es, alle Links auf einer Seite nach Bedarf um zusätzliche URL-Parameter erweitern zu können, ohne immer wieder alle Links anpassen zu müssen. Insbesondere bei durch Hilfsfunktionen oder -klassen erzeugten Links wäre so ein Anpassen teilweise auch überhaupt nicht (sinnvoll) möglich.
-
-Die Grundidee dabei ist relativ simpel: Es gibt eine globale Liste von "automatischen" - d.h. bei der `URLHelper`-Klasse registrierten - Link-Parametern sowie eine Hilfsfunktion *getLink()*, die eine übergebene URL mit diesen registrierten Parametern versieht. Der Aufrufer von `getLink()` muß sich also nicht darum kümmern, welche zusätzlichen Parameter gerade eingebaut werden sollen. In Stud.IP wird dieser Mechanismus zum Beispiel dafür verwendet, um die aktuell gewählte Veranstaltung oder die auf einer Seite eingestellten Ansichtsoptionen bei jedem Klick weiterzureichen, ohne diese serverseitig in der Session speichern zu müssen (was bei Tabbed-Browsing unweigerlich zu Problemen führen würde).
-
-Ein einfaches Beispiel könnte so aussehen:
-
-```php
-// $view enthält die gewählte Ansicht
-URLHelper::addLinkParam('view', $view)
-
-[...]
-
-switch ($view) {
-    case 'show':    // normale Ansicht der Seite
-        [...]
-    case 'search':  // Suchergebnisse anzeigen
-        [...]
-    case 'edit':    // Seite bearbeiten
-        [...]
-}
-
-[...]
-
-// Ausgabe erzeugen (kann auch im Template sein)
-echo '<a href="'.URLHelper::getLink(*, array('page' => 25)).'">...</a>';
-```
-
-Der aktuelle Inhalt der Variablen `$view` wird dann automatisch zu dem so erzeugten Link hinzugefügt und man erhält so etwas wie:
-
-```php
-<a href="?page=25&amp;view=edit">
-```
-
-Natürlich kann jeder Link auch eigene Parameter enthalten, die spezifisch für diesen Link sind. Diese würden dann direkt im Aufruf von `getLink()` angegeben und nicht global als Parameter registriert. Lokal im Aufruf angegebene Parameter haben dabei Vorrang vor den global registrierten, d.h. man kann bei bei Bedarf auch für einzelne Links registrierte Parameter mit anderen Werten versehen oder ganz ausblenden (Parameter beim Aufruf auf `NULL` setzen).
-
-### Methoden der Klasse `URLHelper`
-
-An dieser Stelle sind die wichtigsten Operation der Klasse `URLHelper` gesammelt und dokumentiert. Es handelt sich dabei jeweils um *Klassenmethoden*, d.h. der Aufruf erfolgt über `URLHelper::`*Name*.
-
-* **addLinkParam($name, $value)**
-
-  Registriert einen Link-Parameter mit dem angegeben Namen und Wert. Sollte es bereits einen Parameter gleichen Namens geben, wird der alte Wert durch den neuen ersetzt. Eine ggf. vorhandene Bindung (siehe `bindLinkParam()`) wird aufgehoben.
-
-* **bindLinkParam($name, &$var)**
-
-  Bindet einen Link-Parameter an die angegebene PHP-Variable. Sollte es bereits einen Parameter gleichen Namens geben, wird der alte Wert durch die Bindung ersetzt. Der konkrete Wert dieses Parameters wird im Unterschied zu `addLinkParam()` bei dieser Operation nicht direkt gesetzt, sondern erst *beim Aufruf* von `getLink()` oder `getURL()` durch Auslesen der angegebenen Variable ermittelt. Ändert man also nach dem Aufruf von `bindLinkParam()` den Wert dieser Variable, wird immer der gerade aktuelle Wert verwendet.
-
-  Außerdem wird die angegebene Variable durch diesen Aufruf mit dem Wert des URL-Parameters in der REQUEST-Umgebung der Seite initialisiert. Diese Funktion ist vor allem dazu nützlich, bisher in Session-Variablen gespeicherten Zustand in URL-Parameter auzulagern.
-
-* **removeLinkParam($name)**
-
-  Entfernt einen zuvor registrierten Link-Parameter wieder. War kein Parameter dieses Namens registriert, passiert nichts.
-
-* **getLinkParams()**
-
-  Liefert eine Liste (ein Array mit Name/Wert-Paaren) aller derzeit registrierten Parameter. Damit könnte man diese z.B. als *hidden*-Felder in eine FORM einbauen, um Längenbeschränkungen der URL-Parameter aus dem Weg zu gehen.
-
-* **getLink($url = *, $params = NULL)**
-
-  Ergänzt die übergebene URL um alle aktuell registrierten Parameter. Im Falle von an Variablen gebundenen Parametern wird der zum Zeitpunkt des Aufrufs aktuelle Wert der jeweiligen Variable eingesetzt. Wird der zweite (optionale) Parameter übergeben, können weitere Parameter gesetzt werden, deren Werte ebenfalls zur URL hinzugefügt werden.
-
-  Im Falle von gleichnamigen Parametern gilt: Einträge im `$params`-Array haben Vorrang vor Parametern in der `$url`. Parameter aus der übergebenen `$url` haben Vorrang vor registrierten Parametern. Möchte man einen registrierten Parameter komplett aus der URL ausblenden, so muß man diesem im `$params`-Array einen Wert von `NULL` geben.
-
-  Das Resultat dieser Funktion ist eine *entity-kodierte URL*, d.h. es kann direkt in Attribute im HTML eingesetzt werden (*action* einer FORM, *href* eines A-Elements). Braucht man die unkodierte URL, sollte `getURL()` verwendet werden.
-
-* **getURL($url = *, $params = NULL)**
-
-  Diese Funktion arbeitet genau wie `getLink()`, liefert aber keinen entity-kodierten Wert zurück, sondern die unkodierte URL. Diese kann dann z.B. für Aufrufe über JavaScript verwendet werden.
-
-### Probleme durch URL-Parameter
-
-Durch die Verwendung des `URLHelper` können auch neue Proleme auftreten, die bei der Nutzung von Session-Variablen nicht oder nicht im dem Maße bestehen. Es eignen sich auch nicht alle Arten von Session-Daten zur Übergabe über die URL, so daß man im Einzelfall abwägen muß, ob eine Umstellung sinnvoll ist. Dabei sollten die folgenden Punkte berücksichtigt werden:
-
-* Längenbeschränkung von URLs
-
-  Es gibt eine browser-abhängig maximale Längenbeschränkung von URLs in der Größenordnung von einigen tausend Zeichen (typischerweise 2048 Zeichen beim Internet Explorer, 8192 Zeichen bei Firefox). Längere URLs werden abgeschnitten und führen damit zum Verlust von Informationen. Möchte man also einen sehr komplexen Zustand über die URL übergeben - z.B. eine beliebig große Menge an aufgeklappten Knoten in einer Baumansicht - sollte man dies ggf. besser serverseitig speichern und nur einen Verweis auf eine gespeicherte Konfiguration in der URL hinterlegen.
-  
-* Manipulation von URL-Parametern durch den Nutzer
-
-  Man sollte sich grundsätzlich der Tatsache bewußt sein, daß URL-Parameter - im Gegensatz zu Session-Daten - vom Nutzer nach belieben Verändert werden können, man darf also niemals darauf vertrauen, daß diese vom Nutzer nicht manipuliert werden. Würde man also bisher in der Session gespeicherte Berechtigungen eines Nutzers in die URL verschieben, so müßte man diese bei jedem Seitenaufruf immer neu prüfen.
-
-* Namenskollisionen bei Parametern verschiedener Seiten
-
-  Der `URLHelper` unterscheidet beim Erzeugen der URLs nicht, auf welche Seite ein Link verweist. Es ist auch nicht möglich, Parameter nur für bestimmte Ziele zu registrieren (da in Stud.IP in zunehmendem Maße Dispatcher eingesetzt werden, würde das auch nicht viel bringen). Daher sollte man darauf achten, Namenskollisionen bei über den URLHelper verwalteten Parametern verschiedener Seiten zu vermeiden, entweder durch Verwendung eindeutiger Präfixe (*wiki_search*) oder durch Abgleich mit der Liste bereits verwendeter Namen.
-
-### Beispiele
-
-Hier sollten einige kleine Bespiele für die Verwendung des `URLHelper` aus dem praktischen Einsatz in Stud.IP gesammelt werden. Leider gibt es hier noch nicht viel...
-
-```php
-$link = URLHelper::getLink('wiki.php', array('keyword' => $keyword));
-echo '<a href="'.$link.'">'.htmlReady($keyword).'</a>';
-```
-
-### URLHelper für Javascript
-
-Unabhängig hiervon gibt es auch einen [URLHelper für Javascript](HowToJavascript), der eine ähnliche API aufweist und auch ähnliches tut. Jedoch sind diese beiden URLHelper nicht aufeinander abgestimmt und völlig unabhängig voneinander.
diff --git a/website/docs/main/Request.md b/website/docs/quickstart/request.md
similarity index 99%
rename from website/docs/main/Request.md
rename to website/docs/quickstart/request.md
index eb2b672..885f9cd 100644
--- a/website/docs/main/Request.md
+++ b/website/docs/quickstart/request.md
@@ -1,3 +1,10 @@
+---
+id: request
+title: Request
+sidebar_label: Request
+---
+
+
 ## Benutzung der Klasse Request
 
 ### Allgemeines
diff --git a/website/docs/main/Sidebar.md b/website/docs/quickstart/sidebar.md
similarity index 97%
rename from website/docs/main/Sidebar.md
rename to website/docs/quickstart/sidebar.md
index 8370132..c8864ce 100644
--- a/website/docs/main/Sidebar.md
+++ b/website/docs/quickstart/sidebar.md
@@ -1,4 +1,8 @@
-### Zugriff auf die Sidebar
+---
+id: sidebar
+title: Zugriff auf die Sidebar
+sidebar_label: Sidebar
+---
 
 Eine Sidebar wird anhand von Widgets aufgebaut, welche kleine, voneinander unabhängige Bausteine der Seitenleiste darstellen. Eine Sidebar ist ein Singleton, sodass die einzige Instanz der Sidebar-Klasse nur über die statische Methode `Get()` erreicht werden kann:
 
diff --git a/website/docs/quickstart/url-helper.md b/website/docs/quickstart/url-helper.md
index 000865d..efddbf6 100644
--- a/website/docs/quickstart/url-helper.md
+++ b/website/docs/quickstart/url-helper.md
@@ -1,3 +1,9 @@
+---
+id: url-helper
+title: URLHelper
+sidebar_label: URLHelper
+---
+
 ## Benutzung der Klasse URLHelper
 
 Zur Vereinfachung der Umstellung von vorhandenem PHP-Code auf Tabbed-Browsing und um allgemein die Verwendung von Session-Variablen auf ein sinnvolles Maß zurückzuführen, wurde mit dem Lifter001 die Klasse `URLHelper` eingeführt. Neuer Code muß diese Klasse verwenden, um Verweise auf andere Seiten (oder die gleiche Seite) in Stud.IP zu erzeugen. Externe Links und Bereiche von Stud.IP, die bereits eigene Funktionen zur Link-Erzeugung verwenden, sind von der Verwendung des `URLHelper` ausgenommen. Das sind im einzelnen:
diff --git a/website/docs/start.md b/website/docs/start.md
index f4301bc..4e5683e 100644
--- a/website/docs/start.md
+++ b/website/docs/start.md
@@ -3,24 +3,3 @@ id: start
 title: Entwicklungsdokumentation
 sidebar_label: Übersicht
 ---
-
-## Dokumentation zu einzelnen Klassen und Funktionen
-
-
-* [Notifications](main/Notifications)
-* [PageLayout](main/PageLayout)
-* [PDF-Export Klasse](exports/pdfs) (ab 2.1)
-* [PersonalNotifications](main/PersonalNotifications) (ab 2.4)
-* [QuickSearch](main/QuickSearch) (ab 2.0)
-* [Request](main/Request)
-* [Sichtbarkeit](main/Sichtbarkeit) (ab 2.0)
-* [Sidebar](main/Sidebar)
-* [SimpleORMap](main/SimpleORMap) (aka SORM)
-* [Skiplinks](main/Skiplinks) (ab 2.1)
-* [StudipFormat und TextFormat](main/StudipFormat)
-* [StudipMail](main/StudipMail) (ab 1.10)
-* [StudipPDO](main/StudipPDO)
-* [URLHelper](main/URLHelper)
-* [UserLookup](main/UserLookup) (ab 2.1)
-* [Vertretungsfunktion](main/Vertretung) (ab 2.0)
-* [Wysiwyg-Editor](main/Wysiwyg)
diff --git a/website/sidebars.js b/website/sidebars.js
index 663cec4..98a08fd 100644
--- a/website/sidebars.js
+++ b/website/sidebars.js
@@ -84,6 +84,7 @@ module.exports = {
                 "a11y/review",
                 "a11y/declaration_template",
                 "a11y/todo",
+                "a11y/skiplinks",
             ]
         },
         {
@@ -138,6 +139,16 @@ module.exports = {
                 "functions/global-search-module",
                 "functions/multi-person-search",
                 "functions/notifications",
+                "functions/page-layout",
+                "functions/personal-notifications",
+                "functions/quick-search",
+                "functions/visibility",
+                "functions/studip-format",
+                "functions/studip-mail",
+                "functions/studip-pdo",
+                "functions/user-lookup",
+                "functions/deputy",
+                "functions/wysiwyg",
             ]
         }
     ],
@@ -177,6 +188,9 @@ module.exports = {
                 "quickstart/buttons",
                 "quickstart/csrf-protection",
                 "quickstart/db-klassen",
+                "quickstart/request",
+                "quickstart/sidebar",
+                "quickstart/url-helper",
             ],
         },
     ],
-- 
GitLab