# Datei Index Database,Esqueleto.* : Hilfsdefinitionen, welche Esqueleto anbieten könnte Utils, Utils.* : Hilfsfunktionionen _unabhängig von Foundation_ Utils : Yesod Hilfsfunktionen und Instanzen, Crud, `NTop`, Utility-Funktionen für `MonadPlus`, `Maybe`, `MaybeT`, `Map`, und Attrs-Lists Utils.TH : Template Haskell code-generatoren von unabhängigen Hilfsfunktionen (`deriveSimpleWith`) Utils.DB : Derived persistent functions (`existsBy`, `getKeyBy404`, ...) Utils.Form : `renderAForm`, Field-Settings helper, `FormIdentifier`, `Button`-Klasse, unabhängige konkrete Buttons Utils.PathPiece : (Template-Haskell)-Hilfsfunktionen für Formulierung von PathPiece-Instanzen Utils.Message : redefines addMessage, addMessageI, defines MessageClass Utils.Lens : Automatisch erzeugt Linsen für eigene und Yesod-Typen, `Control.Lens`-Export Utils.DateTime : Template Haskell code-generatoren zum compile-time einbinden von Zeitzone und `TimeLocale` Utils.Holidays : Definition deutscher Feiertage Handler.Utils, Handler.Utils.* : Hilfsfunktionien, importieren `Import` Handler.Utils : `Handler.Utils.*`, Unsortierte _Foundation-abhängige_ Hilfsfunktionen Handler.Utils.DateTime : Nutzer-spezifisches `DateTime`-Formatieren Handler.Utils.Form : Konkrete Buttons, spezielle Felder (inkl. Datei-Upload-Felder), Optionslisten (`optionsPersistCryptoId`), `forced`-Felder (erzwungenes Ergebnis, deaktiviertes Feld), `multiAction` Handler.Utils.Rating : `Rating` (kodiert eine Rating-Datei), Parsen und PrettyPrinten von Rating-Dateien Handler.Utils.Sheet : `fetchSheet` Handler.Utils.StudyFeatures : Parsen von LDAP StudyFeatures-Strings Handler.Utils.Submission : `assignSubmissions`, `sinkSubmission` State-Maschinen die (bereits geparste) ZIP-Archive auseinandernehmen und (in einer Transaction) in die Datenbank speichern Handler.Utils.Submission.TH : Template Haskell zum parsen und einkompilieren von Dateiname-Blacklist für `sinkSubmission`; Patterns in `config/submission-blacklist` Handler.Utils.Table : Hilfsfunktion zum direkten Benutzen von Colonnade (kein `dbTable`) Handler.Utils.Table.Pagination : Here be Dragons Paginated database-backed tables with support for sorting, filtering, numbering, forms, further database-requests within cells Includes helper functions for mangling pagination-, sorting-, and filter-settings Includes helper functions for constructing common types of cells Handler.Utils.Table.Pagination.Types : `Sortable`-Headedness for colonnade Handler.Utils.Table.Cells : extends dbTable with UniWorX specific functions, such as special courseCell Utils.Modal : Modals Handler.Utils.Zip : Conduit-basiertes ZIP Parsen und Erstellen Handler.Common : Handler aus dem Scaffolding; Implementierungen von Handlern, die _jede Website_ irgendwann braucht CryptoID : Definiert CryptoIDs für custom Typen (aus Model) Model.Migration : Manuelle Datenbank-Migration Model.Rating : Types for Submission Ratings that the Database does not depend on, but needed in Foundation Jobs : `handleJobs` worker thread handling background jobs `JobQueueException` Jobs.Types : `Job`, `Notification`, `JobCtl` Types of Jobs Cron.Types : Datentypen zur Spezifikation von Intervallen zu denen Jobs ausgeführt werden können: `Cron`, `CronMatch`, `CronAbsolute`, `CronRepeat`, `Crontab` Cron : Seiteneffektfreie Berechnungen auf Typen aus `Cron.Types`: `nextCronMatch` Jobs.Queue : Funktionen zum _anstoßen_ von Jobs und zur Kommunikation mit den Worker-Threads `writeJobCtl` schickt Nachricht an einen pseudo-Zufälligen worker-thread der lokalen Instanz `queueJob` und `queueJob'` schreiben neue Jobs in die Instanz-übergreifende Job-Queue, `queueJob'` stößt außerdem einen lokalen worker-thread an sich des Jobs anzunehmen `runDBJobs` ersetzt `runDB` und erlaubt `queueDBJob` zu benutzen. `queueDBJob` schreibt einen Job in die Queue; am Ende stößt `runDBJobs` lokale worker-threads für alle mit `queueDBJobs` eingetragenen Jobs an. Jobs.TH : Templatehaskell für den dispatch mechanismus für `Jobs` Jobs.Crontab : Generiert `Crontab JobCtl` aus der Datenbank (sammelt alle in den Daten aus der Datenbank impliziten Jobs (notifications zu bestimmten zeiten, aufräumaktionen, ...) ein) Jobs.Handler.** : Via `Jobs.TH` delegiert `Jobs` das Interpretieren und Ausführen eines Werts aus `Jobs.Types` an einen dieser Handler Mail : Monadically constructing MIME emails