i4Werkzeug Demo
- Dateien (z.B. PDF-Folien) sollen über NFS bereitgestellt werden, da diese häufig mit Skriptunterstützung generiert und platziert werden — ein händischer Upload in der WordPress-Adminweboberfläche soll verhindert werden. Zusätzlich müssen häufiger Listen mit Verweise auf solche Dateien angepasst werden, diese sollen ebenfalls via NFS eingebunden werden können
- Lehrveranstaltungswebseiten eines Semesters sollen persistent bleiben, d.h. auch nach dem Ablauf des Semesters noch abrufbar sein. Es wird jedes neue Semester eine Kopie der Seiten erstellt, die Verlinkungen sollen dabei automatisch angepasst werden
- Unter Umständen müssen ganze Verzeichnisbäume integriert werden, beispielsweise via Doxygen generierte Dokumentationen. Das soll auch automatisch vom NFS gehen, alle HTML Dokumente sollen in die Webseite integriert werden
Übersicht
Folgende Shortcodes sind in lehrstuhlinternen WordPress-Plugin i4werkzeug implementiert:- i4nav erlaubt die Anpassung der (automatisch generierten) Seitennavigationsleiste
- i4semester zur dynamischen Anzeige des Semesternamens
- i4link genieriert Verweise aus relativen Pfadangaben
- i4univis erlaubt flexibleres Einbetten von UnivIS-Inhalte als das RRZE-Pendant
- i4include erlaubt das einbetten von externen Inhalten
- i4list erstellt eine WordPress-typische Folien oder Aufgabenübersicht aus einer Vorgabe in einem einfachen und übersichtlichen Format
- i4code verhindert die Interpretation von Shortcodes (wie es für diese Demo-Seite gebraucht)
- i4responsivetable ist eine Klasse, welche eine einfache responsive, d.h. mobilfreundliche, Tabellendarstellung anbietet
- i4hidden-text versteckt Inhalte (wie das RRZE-Pendant, zeigt sie jedoch angemeldeten Nutzern (mit einem visuellen Hinweis) an
Navigation
Dieses Plugin ermöglicht es mittels desi4nav
-Shortcodes eigene Einträge in die Navigationsleiste einzufügen, sowohl seitenlokale Anker als auch generische Hyperlinks.
Verwendung
Der Shortcode kann wie folgt verwendet werden:
[i4nav name="fooo" (optionale Attribute)](Optinaler Text)[/i4nav]
Die unterstützten Attribute für diesen Shortcode sind:
name
: String, zugehöriger im Menü angezeigtes Label/Bezeichnerorder
: Integer, Bestimmt die Position des Eintrags im Menü. Interagiert passend mit den Einträgen “Reihenfolge” regulärer Seiten und besitzt dieselbe Semantik (kleinere Zahl = frühere Position, negative Zahlen möglich, Standardwert: 0. Einträge gleicherorder
werden gemäß Auftrittsreihenfolge in der jeweiligen Seite angezeigt).href
: Linkziel, für externe Links. Wechselseitiger Ausschluss mitanchor
.anchor
: Für seitenlokaler Anker, bestimmt den Wert desid
Attributs des generierten Ankers. Wechselseitiger Ausschluss mithref
.
Ein gültiger Shortcode besitzt immer ein name
Feld sowie entweder einen href
oder einen anchor
Eintrag. Der optionale Text kann genutzt werden um bei anchor
-Einträgen den Ankerkörper zu spezifizieren, etwa:
<h2>[i4nav anchor="aufgaben" name="Aufgaben"]Übungsaufgaben[/i4nav]</h2>
Führt in der gerenderten Seite zu:
<h2><a id="aufgaben">Übungsaufgaben</a></h2>
Einschränkungen
Da i4nav
-Shortcodes zum Speicherzeitpunkt einer Seite ausgewertet werden können diese Einträge weder aus inkludierten Dateien übernommen noch durch andere Shortcodes (wie etwa die Funktionalitäten in i4list
oder hidden-text
) modifiziert oder verborgen werden.
Beispiele
Auf dieser Seite befinden sich folgende Verwendungen:<h2>[i4nav]Übersicht[/i4nav]</h2>
...
<h2>[i4nav anchor="i4nav" name="Seitennavigation"]Navigation[/i4nav]</h2>
...
[i4nav href="https://gitlab.cs.fau.de/i4/infra/wordpress-i4werkzeug/" name="GitLab Repo" order="98"][/i4nav]
[i4nav href=".." name="zur Semesterübersicht" order="98"][/i4nav]
...
<h2>[i4nav anchor="i4semester"]Semesterangaben[/i4nav]</h2>
...
<h2>[i4nav anchor="i4link"]Links[/i4nav]</h2>
...
<h2>[i4nav anchor="i4univis"]UnivIS[/i4nav]</h2>
...
<h2>[i4nav anchor="i4include" name="Einbettung aus dem NFS"]Include[/i4nav]</h2>
...
<h2>[i4nav anchor="i4list" name="Listen (für Folien & Aufgaben)"]List[/i4nav]</h2>
...
<h2 id="i4code">Code</h2>
[i4nav href="#i4code" name="Quelltextangaben"][/i4nav]
Die Resultate sind im Seitenmenü zu dieser Seite zu sehen.
Semesterangaben
Bisher war über SSI-Variablen ein Zugriff auf die Semesterbezeichnungen möglich, diese Funktionalität wird nun durch i4semester abgefackelt.Verwendung
Der Shortcode kann wie folgt verwendet werden:[i4link (optionale Attribute)]Semester[/i4link]
Die unterstützten Attribute für diesen Shortcode sind:
- delta gibt die Jahre (auch halbe Jahre möglich) an, um vom gegebenen Semester abzuweichen — nützlich um z.B. auf das kommende Semester zu verweisen (durch Angabe von +0.5)
- format gibt an, wie der Semestername ausgegeben werden soll. Mögliche Parameter für das Attribut sind:
- long für komplett ausgeschrieben (Wintersemester 2021/22)
- short für die (unverwerfliche) Kurzform (WiSe 2021/22)
- abbr für die ganz kurze Form (WS21)
- link für eine klein geschriebene kurze Form (ws21)
- und, standardmäßig (bei keiner oder ungültiger Angabe): Die Kurzform mit voller Jahreszahl (WS 2021/22)
Beispiele
Aktuelles Semester: [i4semester]current[/i4semester]
Resultat: Aktuelles Semester: WS 2024/25
Folgendes Semester, Kurzform: [i4semester delta=“+0.5″ format=“short“]current[/i4semester]
Resultat: Folgendes Semester, Kurzform: SoSe 2025
WS18 im langen Format: [i4semester format=“long“]WS18[/i4semester]
Resultat: WS18 im langen Format: Wintersemester 2018/19
Semester 2 Jahre vor SoSe 2017: [i4semester delta=“-2″]SoSe 2017[/i4semester]
Resultat: Semester 2 Jahre vor SoSe 2017: SS 2015
Semester im Pfad zu dieser Seite (kurzes Format): [i4semester format=“short“][/i4semester]
Resultat: Semester im Pfad zu dieser Seite (kurzes Format): SoSe 2022
- sys.cs.fau.de/lehre/ws/bs zeigt auf die Veranstaltung Betriebssysteme im aktuellsten (= zuletzt angelegten) Wintersemester
- sys.cs.fau.de/lehre/ss/bst zeigt auf die Veranstaltung Betriebssystemtechnik im aktuellsten (= zuletzt angelegten) Sommersemester
- sys.cs.fau.de/lehre/current/spic zeigt auf die Veranstaltung Systemnahe Programmierung in C im aktuellen (= gerade laufenden) Semester
Diese Semesterumleitungsregeln sind händisch in einer .htaccess
-Datei definiert, Details dazu hat der WordPress-Eintrag in unserem Wiki!
Links
Der Shortcode i4link erlaubt bequemes Verlinken von Unterseiten ohne die in WordPress sonst übliche Verwendung von absoluten URLs. Der Vorteil ist, dass somit insbesondere Seiten von Lehrveranstaltungen bequem (ohne händische Anpassung) in neue Semester kopiert werden können.Verwendung
Der Shortcode kann wie folgt verwendet werden:[i4link (optionale Attribute)]Pfad[/i4link]
Die unterstützten Attribute für diesen Shortcode sind:
- course Angabe einer Lehrveranstaltung (Kurzform, welche auch dem Link entspricht, z.B. bs für Betriebssysteme). Es wird nicht geprüft ob die Veranstaltung auch tatsächlich (bereits) existiert.
- semester explizite Angabe des Semesters (z.B. WS21) oder current für das gemäß heutigem Datums laufenden Semesters. Wird dieser Angabe weggelassen, so wird versucht aus der Seitenhierarchie das aktuelle Semester zu bekommen (eine Unterseite vom Lehre / Sommmersemester 2022 verweist automatisch auf Kurse dieses Semester), andernfalls wird auf das aktuelle Semester umgeschwenkt (z.B. bei einer Unterseite von Forschung).
- name gibt den anzuzeigenden Text des Links an. Ohne dieses Attribut wird schlicht der Pfad (oder, falls leer, Link) angezeigt.
- extern ist ein boolsches Attribut, welches, wenn wahr, nicht auf WordPress, sondern auf Dateien im NFS (/proj/i4wp/extern/) verweist und sich somit z.B. für Folien im PDF-Format eignet. Dies ist unkompliziert möglich, da die WordPress-Seiten-Adressen und die Pfade im NFS bei Lehrveranstaltungen identisch sind.
- full ist ein boolsches Attribut, welches, wenn wahr, die volle URL inklusive Protokoll und Domain erstellt.
- raw ist ein boolsches Attribut, welches, wenn wahr, dafür sorgt, dass nicht ein Hyperlink erstellt wird, sondern nur die Zieladresse ausgegeben wird (entsprechend wird in diesem Fall das Attribut name ignoriert).
Beispiele
[i4link course=“bst“ name=“Übung zur Betriebssystemtechnik“]uebung[/i4link] im [i4semester format=“long“][/i4semester] (zu dem diese WordPress-Seite gehört)
Resultat: Übung zur Betriebssystemtechnik im Sommersemester 2022 (zu dem diese WordPress-Seite gehört)
[i4link extern=true semester=“current“ course=“bs“ name=“Folie (PDF aus dem NFS) des Bootseminars in Betriebssystem“]uebung/folien/seminar-boot.pdf[/i4link] im aktuell laufenden [i4semester format=“long“]current[/i4semester]
Resultat: Folie (PDF aus dem NFS) des Bootseminars in Betriebssystem im aktuell laufenden Wintersemester 2024/25
Die URL zu dieser Seite lautet [i4link raw=true][/i4link]
Resultat: Die URL zu dieser Seite lautet /lehre/ss22/demo
Relative URLs von dieser Seite ausgehend sind auch möglich (hier wieder Betriebssystemtechnik): [i4link raw=true full=true]../bst[/i4link]
Resultat: Relative URLs von dieser Seite ausgehend sind auch möglich (hier wieder Betriebssystemtechnik): https://sys.cs.fau.de/lehre/ss22/demo/../bst
Relative Adresierung (auf NFS): [i4link extern=true raw=true full=true]vl1a.pdf[/i4link]
Resultat: Relative Adressierung (auf NFS): https://sys.cs.fau.de/extern/lehre/ss22/demo/vl1a.pdf
Der Bereich Forschung liegt unter [i4link raw=true full=true]/forschung[/i4link] (absoluter Pfad).
Resultat: Der Bereich Forschung liegt unter https://sys.cs.fau.de/forschung (absoluter Pfad).
UnivIS
Wir holen viele Informationen aus UnivIS, aber leider fehlt dem RRZE-UnivIS-Plugin die für uns notwendige Flexibilität, weshalb wir mit demi4univis
-Shortcode unsere eigene Zugriffsmöglichkeit haben.
Verwendung
Der Shortcode erlaubt eine direkte Angabe aller Parameter der UnivIS PRG Schnittstelle:[i4univis (PRG Attribute)]optionale Überschrift[/i4univis]
Es ist somit sehr einfach die univis-Tags auf der alten Webseite in das neue Plugin zu überführen:
Aus
<univis> search thesis advisor="Bernhard Heinloth" status="finished" show compact sort=date lang=en codeset=utf8 </univis>wird
[i4univis search="thesis" advisor="Bernhard Heinloth" status="finished" show="compact" sort="date" lang="en" codeset="utf8"][/i4univis]
Neben den von der PRG-Schnittstelle unterstützten Attributen gibt es im Plugin folgende Erweiterungen:
- codeset wird bei Fehlen des Attributs automatisch auf utf8 gesetzt.
- sem kann unter Angabe des Wertes auto anhand der Seitenhierarchie automatisch das Semester wählen. Dies ist für die Lehrveranstaltungen (im Zusammenspiel mit dem semesterweisen Kopieren der WordPress-Seiten) nützlich.
Beispiele
Quelltext:
[i4univis search=“publications“ author=“Heinloth,Bernhard“ sort=“date“ year=“2019″ show=“elong“][/i4univis]
Resultat:
Heinloth, Bernhard ; Ammon, Marco ; Nguyen, Dustin ; Hönig, Timo ; Sieh, Volkmar ; Schröder-Preikschat, Wolfgang:
Cocoon: Custom-Fitted Kernel Compiled on Demand.
In: ACM (Hrsg.) : Proceedings of the 10th Workshop on Programming Languages and Operating Systems
(10th Workshop on Programming Languages and Operating Systems (PLOS 2019), Huntsville, ON, Canada, 27.10.2019).
New York, NY, USA : ACM, 2019, S. 1-7. - ISBN 978-1-4503-7017-2
Stichwörter: PAX, InvasIC
[doi>10.1145/3365137.3365398] (BibTeX)
Ziegler, Andreas ; Geus, Julian ; Heinloth, Bernhard ; Hönig, Timo ; Lohmann, Daniel:
Honey, I Shrunk the ELFs: Lightweight Binary Tailoring of Shared Libraries.
In: ACM Transactions on Embedded Computing Systems 18 (2019), Nr. 5s, S. 102:1-102:23
Stichwörter: InvasIC; CADOS; Shared Libraries; Binary Tailoring; Linux
[doi>10.1145/3358222] (BibTeX)
<h4>Supervised Theses</h4>
[i4univis search="thesis" department="Lehrstuhl für Informatik 4" show="compact" advisor="Heinloth,Bernhard" sort="date" lang="en"][/i4univis]
<h4>Own Thesis</h4>
[i4univis search="thesis" show="compact" title="Automatic Tailoring of the Multi-Purpose Linux Operating System on Embedded Devices" lang="en"][/i4univis]
Resultat:
Supervised Theses
- Analysis of Interrupt Handling Overhead in the Linux Kernel
- Student: Luis Gerhorst (handed in on 03.12.2018, Thesis file...)
- Supervisors: Prof. i. R. Dr.-Ing. habil. Wolfgang Schröder-Preikschat, Benedict Herzog, M. Sc., Dr.-Ing. Stefan Reif, Bernhard Heinloth, M. Sc., Prof. Dr.-Ing. Timo Hönig
- Boot-time Target Optimization for Operating Systems based on LLVM for X86 Architecture
- Student: Dustin Nguyen (handed in on 31.01.2019 )
- Supervisors: Prof. i. R. Dr.-Ing. habil. Wolfgang Schröder-Preikschat, Dr.-Ing. Volkmar Sieh, Bernhard Heinloth, M. Sc.
- Compiler-Based Target-Optimization of Operating-System Functions
- Student: Marco Ammon (handed in on 31.01.2020 )
- Supervisors: Prof. i. R. Dr.-Ing. habil. Wolfgang Schröder-Preikschat, Bernhard Heinloth, M. Sc., Dustin Nguyen, M. Sc.
- Efficient One-Shot Function Tracing in the Linux Kernel
- Student: Thomas Preisner (handed in on 02.04.2019 )
- Supervisors: Prof. i. R. Dr.-Ing. habil. Wolfgang Schröder-Preikschat, Dr.-Ing. Andreas Ziegler, Bernhard Heinloth, M. Sc.
- RISCy StuBS - A Multithreaded Operating System for RISC-V
- Student: Lorenz Kästle (handed in on 29.04.2020 )
- Supervisors: Prof. i. R. Dr.-Ing. habil. Wolfgang Schröder-Preikschat, Bernhard Heinloth, M. Sc., Christian Eichler, M. Sc.
- Sandkasten: a seccomp-based user sandbox to restrict file and process access (sandkasten)
- Student: Simon Ruderich (handed in on 16.07.2018, Thesis file...)
- Supervisors: Bernhard Heinloth, M. Sc., Dr.-Ing. Andreas Ziegler
- StuBS - ARMv7-based Educational Operating System for Raspberry Pi
- Student: Maximilian Ott (handed in on 18.09.2019 )
- Supervisors: Prof. i. R. Dr.-Ing. habil. Wolfgang Schröder-Preikschat, Bernhard Heinloth, M. Sc., Christian Eichler, M. Sc.
- Zielhardwareoptimierung von Betriebssystemen zur Bootzeit auf Basis des LLVM-Compilers auf der Aarch64-Architektur
- Student: Sebastian Endres (handed in on 29.08.2019 )
- Supervisors: Prof. i. R. Dr.-Ing. habil. Wolfgang Schröder-Preikschat, Dr.-Ing. Volkmar Sieh, Bernhard Heinloth, M. Sc.
Own Thesis
- Automatic Tailoring of the Multi-Purpose Linux Operating System on Embedded Devices
- Student: Bernhard Heinloth (handed in on 10.09.2014, Thesis file...)
- Supervisors: Prof. i. R. Dr.-Ing. habil. Wolfgang Schröder-Preikschat, Prof. Dr.-Ing. habil. Daniel Lohmann
Quelltext:
[i4univis search=“lectures“ id=“40473378|40257034|41223861″ show=“lshort“ sem=“2021w“ noimports=“true“][/i4univis]
Resultat:
-
Erweiterte Übungen zu Betriebssysteme (EÜ BS)
- Dozent/in
- Bernhard Heinloth, M. Sc.
- Angaben
- Übung
Online/Präsenz
4 SWS, ECTS-Studium, ECTS-Credits: 5, Sprache Deutsch
Asynchrone Lehrveranstaltung
Zeit und Ort: Mi 16:00 - 18:00, 01.153-113 CIP; Fr 14:00 - 16:00, 01.153-113 CIP - Studienfächer / Studienrichtungen
- WPF IuK-MA-ES-INF ab 1
WPF IuK-MA-REA-INF ab 1
WPF IuK-MA-REA-INF ab 1
WPF INF-BA-V-VSB ab 5
WPF INF-MA ab 1
WPF ICT-MA-ES 1-4
-
Übungen zu Betriebssysteme (Ü BS)
- Dozent/in
- Bernhard Heinloth, M. Sc.
- Angaben
- Übung
Online/Präsenz
2 SWS, benoteter Schein, ECTS-Studium, ECTS-Credits: 2,5, Sprache Deutsch
Zeit und Ort: Mi 14:15 - 15:45, 0.031-113 - Studienfächer / Studienrichtungen
- WF IuK-BA ab 5
WPF IuK-MA-ES-INF ab 1
WPF IuK-MA-REA-INF ab 1
WPF INF-BA-V-VSB ab 5
WPF INF-MA ab 1
WPF ICT-MA-ES 1-4
-
Übungen zu Betriebssysteme (Rechnerübungen) (RÜ BS)
- Dozent/in
- Bernhard Heinloth, M. Sc.
- Angaben
- Übung
Online/Präsenz
, Sprache Deutsch
Zeit und Ort: Mi 14:00 - 16:00, 01.153-113 CIP; Fr 12:00 - 14:00, 01.153-113 CIP; Einzeltermin am 11.1.2022 10:00 - 14:00, 01.153-113 CIP - Studienfächer / Studienrichtungen
- WF IuK-BA ab 5
WPF IuK-MA-ES-INF ab 1
WPF INF-BA-V-VSB ab 5
WPF INF-MA ab 1
WPF IuK-MA-REA-INF ab 1
[i4univis search=“lectures“ department=“Lehrstuhl für Informatik 4″ name=“Systemnahe Programmierung in C“ show=“plan“ sem=“auto“]Stundenplan[/i4univis]
Resultat:
Stundenplan
Mo | Di | Mi | Do | Fr | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
08:00 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
09:00 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
10:00 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
11:00 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
12:00 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
13:00 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
14:00 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
15:00 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
16:00 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
17:00 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Überschneidung: Mo von 12:15 bis 13:45
Überschneidung: Mo von 12:15 bis 13:45
Überschneidung: Mo von 12:15 bis 13:45
Überschneidung: Mo von 14:15 bis 15:45
Überschneidung: Mo von 14:15 bis 15:45
Überschneidung: Mo von 14:15 bis 15:45
Überschneidung: Do von 10:15 bis 11:45
Überschneidung: Do von 10:15 bis 11:45
Überschneidung: Do von 10:15 bis 11:45
Überschneidung: Do von 12:15 bis 13:45
Überschneidung: Do von 12:15 bis 13:45
Überschneidung: Do von 12:15 bis 13:45
Überschneidung: Fr von 08:15 bis 09:45
Überschneidung: Fr von 08:15 bis 09:45
Überschneidung: Fr von 08:15 bis 09:45
Überschneidung: Fr von 10:15 bis 11:45
[i4univis search=“foo“ bar=“baz“][/i4univis]
Resultat:
Include
Der Shortcode i4include ist quasi das Herzstück, ermöglicht es doch zeitgemäßes Einbetten von Webseiten in WordPress aus dem NFS (ohne iframes).Benutzungshinweise
- Eingeblendete Inhalte sind nicht über die WordPress-Suche auffindbar
- WordPress wendet das FAU-TechFak-Template-Stylesheet an, welches nur schwer zu neutralisieren ist — CSS bietet jenseits vom Überschreiben keine geeigneten Möglichkeiten um temporär Regeln zu deaktivieren . Entsprechend sollte nicht gegen, sondern mit den vorgegeben Styles gearbeitet werden, auch um einen einheitlichen Webauftritt zu gewährleisten!
- WordPress führt weiterhin (unabhängig vom Attribut shortcodes) seine Standard-Textersetzungen durch, so wird zum Beispiel ein newline-Zeichen zum einem HTML-br-Element umgewandelt. Entsprechend muss der einzubettende Inhalt etwas angepasst werden
- Komplexe HTML Konstruktionen sollten vermieden werden, da sie meist das responsive Design zerstören. Das trifft allerdings auch auf weniger komplexe Elemente wie Tabellen zu, welche ab einer gewissen Größe besser anders dargestellt werden sollten (z.B. via Accordions.
- Insbesondere die fortgeschrittene Variante mit dynamic ist etwas komplexer und ressourcenhungriger — bitte nur verwenden, wenn die Technik dahinter wirklich verstanden wurde. Andernfalls ist mindestens ein Kuchen fällig!
- Die WordPress Vorschaufunktion ist bei aktiviertem dynamic nicht verfügbar!
- Die erlaubten Dateien sind (anhand ihrer Dateiendung) beschränkt, diese sind in den Konstanten EXT_EMBED sowie EXT_BINARY im Pluginquelltext definiert (und sollten die üblichen relevanten Typen abdecken).
- Der Pfad muss auf eine erlaubte (EXT_EMBED) Datei (nicht Ordner) zeigen!
Verwendung
Der Shortcode kann wie folgt verwendet werden:[i4include (optionale Attribute)]Pfad[/i4include]
Die unterstützten Attribute für diesen Shortcode sind:
- course Angabe einer Lehrveranstaltung (Kurzform, welche auch dem Link entspricht, z.B. bs für Betriebssysteme). Es wird nicht geprüft ob die Veranstaltung oder der dazugehörige Pfad auch tatsächlich (bereits) existiert.
- semester explizite Angabe des Semesters (z.B. WS21) oder current für das gemäß heutigem Datums laufenden Semesters. Wird dieser Angabe weggelassen, so wird versucht aus der Seitenhierarchie das aktuelle Semester zu bekommen (eine Unterseite vom Lehre / Sommmersemester 2022 verweist automatisch auf Kurse dieses Semester), andernfalls wird auf das aktuelle Semester umgeschwenkt (z.B. bei einer Unterseite von Forschung).
- dynamic ist ein boolsches Attribut, welches, wenn wahr, dynamisch weitere Inhalte aus dem Arbeitsordner des angegeben Pfads einbetten kann — dies können sowohl weitere HTML-Datei sein (die in die WordPress-Seite eingebettet werden) oder Inhalte wie Bilder. Um dies technisch zu ermöglichen, wird die URL der WordPress-Seite beim Aufruf umgeschrieben, wodurch auch nur maximal ein dynamischer i4include Shortcode pro WordPress-Seite erlaubt ist.
- shortcodes ist ein boolsches Attribut, welches, wenn wahr, die interpretation von Shortcodes im Zieldokument erlaubt. Bitte beachten: Rekursive dynamische i4include Shortcodes sind natürlich nicht erlaubt!
- showerrors ist ein boolsches Attribut, welches, wenn wahr, eine sprechende Fehlermeldung anzeigt. Dies kann für die Fehlersuche bei der Seitenerstellung genutzt werden, ohne den Parameter wird lediglich Einbettung fehlgeschlagen bei einem Fehler angezeigt (die Details werden dann im Webserver geschrieben).
- raw verhindert, dass Leerzeilen (also doppelte Zeilenenden, \n\n) vom WordPress-internen wpautop automatisch zu einem Absatz konvertiert werden (Standard: false, d.h. \n\n wird zu <p>...</p>).
Beispiele
[i4include]lehre/ss22/demo/index.html[/i4include]
Resultat:
Hallo Welt!
Beispiel HTML Element:
:(){ :|:& };:
Beispiel Shortcode: [alert style="success"]Sofern dies in einer grünen Box zu sehen ist sind Shortcodes aktiv[/alert]
Ursprung:
/proj/i4wp/extern/lehre/ss22/demo
[i4include shortcodes=“true“ course=“demo“]index.html[/i4include]
Resultat:
Hallo Welt!
Beispiel HTML Element:
:(){ :|:& };:
Beispiel Shortcode:
Ursprung:
/proj/i4wp/extern/lehre/ss22/demo
[i4include showerrors=“true“]notfound.html[/i4include]
Resultat:
[i4include showerrors=“true“]/etc/shadow[/i4include]
Resultat:
[i4include shortcodes=true course=“bs“ semester=“WS22″]semplan.html[/i4include]
Resultat:
KW | Mo | Di | Mi | Do | Fr | Themen |
---|---|---|---|---|---|---|
42 | 17.10 | 18.10 | 19.10 | 20.10 | 21.10 | Organisation und Einleitung |
VL1 | ||||||
A0 | C++ Fingerübung | |||||
43 | 24.10 | 25.10 | 26.10 | 27.10 | 28.10 | Einstieg in die Betriebssystementwicklung |
TÜ A1 | VL2 | |||||
RÜ | RÜ | Aus- und Eingabe | ||||
44 | 31.10 | 01.11 | 02.11 | 03.11 | 04.11 | Unterbrechungen, Hardware |
Allerheiligen | VL3 | |||||
RÜ | RÜ | |||||
45 | 07.11 | 08.11 | 09.11 | 10.11 | 11.11 |
Seminar: (Ur)Laden des x86er
Unterbrechungen – Software |
Sem1 | VL4 | |||||
RÜ | RÜ | |||||
46 | 14.11 | 15.11 | 16.11 | 17.11 | 18.11 | Unterbrechungen – SoftIRQ |
TÜ A2 | VL5 | |||||
RÜ | RÜ | Interruptbehandlung | ||||
47 | 21.11 | 22.11 | 23.11 | 24.11 | 25.11 |
Fehlersuche mit dem GDB
Unterbrechungen – Synchronisation |
Sem2 | VL6 | |||||
RÜ | RÜ | |||||
48 | 28.11 | 29.11 | 30.11 | 01.12 | 02.12 | IA-32: Die 32-Bit-Intel-Architektur |
TÜ A3 | VL7 | |||||
RÜ | RÜ | Pro-/Epilogmodell | ||||
49 | 05.12 | 06.12 | 07.12 | 08.12 | 09.12 |
Programmierung in Assembler
Koroutinen und Programmfäden |
Sem3 | VL8 | |||||
RÜ | RÜ | |||||
50 | 12.12 | 13.12 | 14.12 | 15.12 | 16.12 | Scheduling |
TÜ A4 | VL9 | |||||
RÜ | RÜ | Threadumschaltung | ||||
51 | 19.12 | 20.12 | 21.12 | 22.12 | 23.12 | |
RÜ | RÜ | |||||
52 | 26.12 | 27.12 | 28.12 | 29.12 | 30.12 | |
Vorlesungsfrei | ||||||
01 | 02.01 | 03.01 | 04.01 | 05.01 | 06.01 | |
Vorlesungsfrei | ||||||
02 | 09.01 | 10.01 | 11.01 | 12.01 | 13.01 | Betriebssystem-Architekturen |
TÜ A5 | VL10 | |||||
RÜ | RÜ | Zeitscheibenscheduling | ||||
03 | 16.01 | 17.01 | 18.01 | 19.01 | 20.01 | Fadensynchronisation |
VL11 | ||||||
RÜ | RÜ | |||||
04 | 23.01 | 24.01 | 25.01 | 26.01 | 27.01 | Gerätetreiber |
TÜ A6 | VL12 | |||||
RÜ | RÜ | Ereignisbearbeitung und Synchronisation | ||||
05 | 30.02 | 31.01 | 01.02 | 02.02 | 03.02 | Interprozesskommunikation |
VL13 | ||||||
RÜ | RÜ | |||||
06 | 06.02 | 07.02 | 08.02 | 09.02 | 10.02 | Zusammenfassung, Ausblick & Fragestunde |
TÜ A7 | VL14 | |||||
Eine Anwendung |
[i4include dynamic=“true“ course=“bs“ semester=“WS22″]uebung/aufgabe1/a1.html[/i4include]
Resultat siehe /lehre/ws22/bs/uebung/aufgabe-1
Ursprung:
/proj/i4wp/extern/lehre/ws22/bs/uebung/aufgabe1/...
[i4include]/proj/i4www/home/heinloth/spam.htm[/i4include]
Resultat:
Lovely Spam! Wonderful Spam!
Lovely Spam! Wonderful Spam
Spa-a-a-a-a-a-a-am
Spa-a-a-a-a-a-a-am
Spa-a-a-a-a-a-a-am
Spa-a-a-a-a-a-a-am
Lovely Spam! (Lovely Spam!)
Lovely Spam! (Lovely Spam!)
Lovely Spam!
Spam, Spam, Spam, Spam!
[i4include]https://www4.cs.fau.de/~heinloth/spam.htm[/i4include]
Resultat:
Lovely Spam! Wonderful Spam!
Lovely Spam! Wonderful Spam
Spa-a-a-a-a-a-a-am
Spa-a-a-a-a-a-a-am
Spa-a-a-a-a-a-a-am
Spa-a-a-a-a-a-a-am
Lovely Spam! (Lovely Spam!)
Lovely Spam! (Lovely Spam!)
Lovely Spam!
Spam, Spam, Spam, Spam!
Ursprung:
/proj/i4www/home/heinloth/spam.htm
List
Ein häufiger Anwendungsfall in der Lehre ist das zeitgesteuerte Anzeigen von Vorlesungs-/Übungsfolien und Aufgaben. Bisher mussten dafür vor allem große (breite) Tabellen herhalten, allerdings sollte darauf aufgrund des responsiven Webdesign zugunsten von Accordions verzichtet werden. Außerdem wurde je nach Veranstaltung teilweise mittels SSI ein zeitgesteuertes Anzeigen implementiert. Diese Funktionalität (bzw. genauer: ein Verstecken) wird über den i4Hidden-Text Shortcode ermöglicht. Diese Shortcodes sind allerdings verhältnismäßig umständlich zu schreiben (und nicht sehr fehlertolerant):[collapsibles] [i4hidden-text end="2021-10-17"] [collapse title="1. Vorlesung" name="vl-1"] Vorlesung am Montag, 18. Oktober 2021 <i>Bitte an 3G Nachweis denken!</i> [accordion] [accordion-item title="Organisation" name="vl-1-1"] <a href="[i4link]vl1a.pdf[/i4link]">Folie zur Organisation</a> [/accordion-item] [accordion-item title="Einführung" name="vl-1-2"] <a href="[i4link]vl1b.pdf[/i4link]">Folie zur Einführung</a> [/accordion-item] [/accordion] [/collapse] [/i4hidden-text] [i4hidden-text end="2021-10-24"] [collapse title="2. Vorlesung" name="vl-2"] Vorlesung am Montag, 25. Oktober 2021 ... [/collapse] [/i4hidden-text] [/collapsibles]Der Shortcode i4list schafft hier Abhilfe, in dem er die gleiche Ausgabe wie folgt erstellen kann:
[i4list name="Vorlesung" showdate=true uncover=1] 2021-10-18 1. Vorlesung *Bitte an 3G Nachweis denken!* ## Organisation [Folie zur Organisation](vl1a.pdf) ## Einführung [Folie zur Einführung](vl1b.pdf) 2021-10-25 2. Vorlesung ... [/i4list]Das Resultat sieht dann wie folgt aus:
Bitte an 3G Nachweis denken!
…
- name Der Name für die Veranstaltung, wird für internes ID-Feld verwendet.
- showdate ist ein boolsches Attribut, welches, wenn wahr, bei Einträgen mit Datumsnotation zuerst den namen gefolgt von einem lesbaren Datum in der Form Wochentag, Tag. Monat Jahr ausgibt.
- shortcodes ist ein boolsches Attribut, wenn wahr, die frühzeitige Evaluation von Shortcodes (z.B. von i4include) durchführt und das Ergebnis bei der Interpretation der Markupsprache berücksichtigt. Ohne Angabe dieses Attributs werden Shortcodes lediglich im Nachgang ausgewertet.
- uncover blendet, falls angegben, den Eintrag die angegbenen Anzahl an Tagen vor der Veranstaltung ein. So bedeutet uncover=2, dass der Eintrag 2 Tage vor dem angegebenen Datum sichtbar sein soll. Für angemeldete Nutzer ist der Eintrag weiterhin jederzeit sichtbar!
- load steuert, ob die Collapsibles eingeklappt oder ausgeklappt sein sollen. Unterstützte Werte sind none (default, alles eingeklappt), all bzw. open (alles ausgeklappt) und last (die Elemente mit dem aktuellsten, sichtbaren Datum werden ausgeklappt).
[i4list] # Markdown Codes [absoluter Link](https://www4.cs.fau.de/Lehre/SS21/V_BST/Evaluation/SS13_bst_v.pdf) [relativer Link](../bst/evaluation/SS13_bst_v.pdf) Ich wollte mal __unterstreichen__, dass das ziemlich **fett** und voll *schräg* ist! --- Einkaufsliste: * Eier * Schmalz * Zucker * Salz * Milch * Mehl * Safran --- 1. Foo 2. Bar Baz 3. usw # Videos Es reicht einfach die URL einzufügen, und schon wird ein Video daraus https://www.fau.tv/clip/id/36104 [/i4list]wird zu
Ich wollte mal unterstreichen, dass das ziemlich fett und voll schräg ist!
Einkaufsliste:
- Eier
- Schmalz
- Zucker
- Salz
- Milch
- Mehl
- Safran
- Foo
- Bar Baz
- usw
Code
Dieses Plugin zeigt den Inhalt des Shortcodes in einem code-Tag an, ohne darin enthaltene Shortcodes zu interpretieren. Wird primär für diese Seite hier verwendet. Quelltext:[i4code][i4semester][/i4semester][/i4code]Resultat:
[i4semester][/i4semester]
Responsive Tabellen
Wir haben das CSS um eine responsive, d.h. mobilfreundliche, Tabellendarstellung erweitert. Dies kann beispielsweise genutzt werden, um Tabellen für die Vorlesungsfolien, Materialien o.Ä. zu erstellen. Die Tabelle besteht dabei aus mehreren Teilen:1) Header
Um eine Tabelle als responsiv zu definieren, einfach die CSS-Klasse i4responsivetable zuweisen. Anonsten definiert der Tabellen Kopf wie gewohnt die Struktur. Wichtig ist hier, dass Spaltenbeschriftungen zweifach angegeben werden müssen: Die <th> definieren dabei die Spaltenbeschriftung in der regulären, breiten Anzeige, wohingegen die CSS-Variablen die Bezeichner der responsiven, gefaltenen Tabelle darstellen.<table class="i4responsivetable" style=" --colheader1: 'Kapitel:'; --colheader2: 'Thema:'; --colheader3: 'Datum:'; --colheader4: 'Folien:'; "> <thead> <tr> <th>Kapitel</th> <th>Thema</th> <th>Datum</th> <th>Folien</th> </tr> </thead> <!-- ... --> </table>
2) Tabellenkörper
Hier handelt es sich um ganz reguläre HTML-Tabellenzeilen, bestehend aus einem <tr> und <td>-Tag:<tbody> <tr> <td>1</td> <td>Organisation</td> <td>25.04.2022</td> <td> <p><a href="...">1x1</a>, <a href="...">2x2</a>, <a href="...">animiert</a></p> </td> </tr> <tr><!-- ... --></tr> <!-- ... --> </tbody>
3) Optional: Abschnitte
Abschnitte erlauben es, die Tabelle nochmals zu untergliedern. Hierzu einfach der entsprechenden Tabellenzeile die CSS-Klasse part_number zuweisen, und optional leere Spalten in einen colspan zusammenfassen.<tr class="part_number"> <td>3</td> <td colspan="3">Abschnitt: Grundlagen</td> </tr>
Beispiel
Hier eine exemplarische Tabelle für Vorlesungsfolien. Um die responsive Darstellung zu betrachten entweder das Browserfenster kleinerziehen, oder die Entwicklerwerkzeuge des eigenen Browsers nutzen (Rechtsklick, Inspect, oben in der Leiste nach einem Smartphone/Tabletsymbol suchen).Kapitel | Thema | Datum | Folien |
---|---|---|---|
1 | Organisation | 25.04.2022 | |
2 | Einleitung | 25.04.2022 | |
3 | Abschnitt: Grundlagen | ||
3-1 | WordPress System – Rotierende Autoren | 02.05.2022 | |
3-2 | Struktureller Aufbau tabellarischen Scheiterns | 09.05.2022 |
Es handelt sich hier um eine erweiterte Fassung des Hidden-Text Shortcodes der RRZE-Elements. Anders als das Original ermöglichen sie es angemeldeten Benutzern, ausgeblendete Elemente, unabhängig von etwaigen Zeitbeschränkungen zu betrachten. Dies kann hilfreich sein, um Veröffentlichungen (etwa Semesterterminpläne) im vornhinein zu prüfen. Quelltext:
[i4hidden-text end="2020-01-01"]Aufgeblendet[/i4hidden-text]
[i4hidden-text end="2099-01-01"]Versteckt[/i4hidden-text]Resultat: Um den Effekt zu beobachten sollten Sie sich anmelden! Aufgeblendet