diff --git a/chapters/konzeption-entwicklung.tex b/chapters/konzeption-entwicklung.tex index 8197013..1d5f7c5 100644 --- a/chapters/konzeption-entwicklung.tex +++ b/chapters/konzeption-entwicklung.tex @@ -54,7 +54,6 @@ Nachdem in Erfahrung gebracht wurde, welche konkreten Datenobjekte benötigt wer wurden Attribute dieser Objekte dem Pflichtenheft entnommen. Diese wurden in einem formalen Klassendiagramm festgehalten und in Rücksprache mit dem \ac{PO} weiter bis zu festen Datentypen und Auswahlmöglichkeiten konkretisiert. - Beispielsweise, dass Wettbewerbskategorien durch TYPO3-Categories repräsentiert werden sollen. Das hat den Vorteil, dass TYPO3-Categories bereits native Bestandteile eines TYPO3-Redaktionssystemes sind und bereits alle relevanten Attribute anbieten. Diese sind ein Titel, @@ -64,18 +63,14 @@ Das Parent-Attribut ist benötigt, da $n$ dieser Attribute einen Attributbaum bi Somit ist es möglich Unterkategorien zu erstellen. Beispiele hierfür sind die Unterkategorien \enquote{Trockener Riesling} und \enquote{Halbtrockener Riesling} für die Überkategorie \enquote{Riesling}. - Rebsorten, Geschmack, Weineigenschaften und Qualität sollen eigene Datentypen anstatt einfacher Zeichenfolgen sein. Ziel davon ist, dass sich Nutzer für einen vorgefertigten, nominalen Eintrag in einem Dropdown-Menü entscheiden müssen und diese Auswahlmöglichkeiten immer noch im TYPO3-Backend pflegbar sind. - Weinlagen sind im Brown-Field-Projekt bereits vorhanden, also sollen hierfür existierenden Daten eingebunden werden. - Pro Wein sollen beliebig viele Weineigenschaften auswählbar sein, Wettbewerbskategorien, Geschmacksrichtung, etc, jeweils nur ein Element. - Weitere Notizen zu diesem Gespräch sind im Anhang unter \fullref{chap:anhang-notizen-digitization} zu finden. \\ @@ -95,3 +90,112 @@ Schnittstellen werden über die Basisklasse \enquote{Repository} geerbt \cite{bib:typo3-docs-extdev-tut-tea-repositories}. Mit Abschluss der Digitization können alle Datenstrukturen im TYPO3-Backend händisch angelegt, eingesehen, gelöscht und bearbeitet werden. + + +\section{Teilnehmerregistrierung} +Ein essenzieller Teil des Jahresauswahlprobenwerkzeuges ist die Registrierung von Teilnehmern. +Dieses Modul repräsentiert den ersten Berührungspunkt der Winzer mit dem System. +Dem Pflichtenheft ist zu entnehmen, dass es zwei Kategorien von Teilnehmerregistrierungen gibt: +\begin{enumerate} + \item Nutzer ist \ac{WM}-Mitglied + \item Nutzer ist kein \ac{WM}-Mitglied +\end{enumerate} +Der primäre Unterschied zwischen Mitgliedern und Nicht-Mitgliedern ist, dass Mitglieder bereits einen +Stammdatensatz hinterlegt haben. +Dieser Stammdatensatz bildet die Angaben zum Weingut des zu digitalisierendem Anmeldeformulares ab. +Nicht-Mitglieder sind dem System noch gänzlich unbekannt und müssen im Zuge der Registrierung ihres Nutzers +ihre Stammdaten angeben, während sich Mitglieder lediglich einloggen müssen und eine Schaltfläche +\enquote{Teilnehmer werden} betätigen. +Der mit dem \ac{PO} ausgearbeitete UX-Flow der Registrierung sieht vor, dass der Nutzer zunächst gefragt wird, +ob er Mitglied sei oder nicht. Hierzu gibt es je einen Button. Ist der Nutzer ein Mitglied, +wird er auf ein Loginform, mit der Option zur Registrierung weitergeleitet. +Nach erfolgreichem Login, wird ein Teilnehmerobjekt erstellt. +Wählt der Nutzer \enquote{Nein, ich bin kein Mitglied} aus, würde er auf ein Registrierungsformular +weitergeleitet, auf um sich einen Nicht-Mitgliederaccount anzulegen. Im Zuge dieser Registrierung werden +Stammdaten zum Weingut angefragt. + +\begin{nicepic} + \includegraphics[width=0.9\textwidth]{images/ux-flow-registrierung.png} + \captionof{figure}{UX-Flow: Registrierung} + \caption*{Quelle: Eigene Darstellung} + \label{fig:uxflow-registrierung} +\end{nicepic} + +Da das Brown-Field-Projekt bereits Accountlogins und -Registrierungen implementiert und nutzt, +werden auf diese Lösungen zurückgegriffen, um einen einheitlichen Workflow beizubehalten. Accountregistrierungen werden über den +\enquote{femanager} \cite{bib:typo3-docs-femanager} realisiert, während Logins via TYPO3's nativem +Frontend-Nutzer-Login gelöst werden. Das ist explizit von femanager so angedacht: +\quotecite{Note: Login and a I forgot my password function is part of the core and not part of femanager.} +\cite{bib:typo3-docs-femanager}. + +Im Folgenden wird der Registrierungsprozess im Detail beschrieben:\\ +Grundlegend gibt es drei relevante Nutzerzustände vor der Registrierung: +\begin{enumerate} + \item Kein Mitglied + \item Mitglied, mit Konto + \item Mitglied, ohne Konto +\end{enumerate} + +Diese Prozesse sehen wie folgt aus: +\subsection*{Kein Mitglied} +Ist ein Nutzer kein Mitglied, so muss er zunächst einen Account erstellen. +Anfangs wählt dieser Nutzer \enquote{Ich bin kein Mitglied} auf der Registrierungsseite aus. +Daraufhin navigiert der Browser zu einem Registrierungs-Formular. +Hierfür muss eine Email-Adresse und ein Passwort vergeben und den Nutzungsbestimmungen zugestimmt werden. +Im Anschluss erhält der Nutzer eine Bestätigungsemail mit einem Aktivierungslink. +Wird dieser Link geöffnet, wird der Account freigeschalten und ein Login-Feld erscheint. +Nach erfolgreichem Login wird der Nutzer mit einem +Stammdatenformular konfrontiert. Dabei handelt es sich um Angaben zum teilnehmenden Weingut. +Wird dieses Formular abgeschickt, ist die Teilnehmerregistrierung abgeschlossen. + +\subsection*{Mitglied, mit Konto} +Ist ein Nutzer ein Mitglied und hat bereits ein Mitgliedskonto, muss dieser auf der Registrierungsseite +\enquote{Ich bin ein Mitglied} auswählen. An dieser Stelle navigiert der Browser zu einem Login-Formular. +Hier kann sich das Mitglied nun anmelden. Tut er dies erfolgreich, ist die Teilnehmerregistrierung +abgeschlossen. + +\subsection*{Mitglied, ohne Konto} +Ist ein Nutzer ein Mitglied und hat noch kein Mitgliedskonto, muss dieser auf der Registrierungsseite +\enquote{Ich bin ein Mitglied} auswählen. An dieser Stelle navigiert der Browser zu einem Login-Formular. +Auf diesem Login-Formular existiert ein Button \enquote{Jetzt registrieren}, sowie ein Hinsweistext dazu. +Da der Nutzer noch keinen Account hat, muss dieser auf \enquote{Jetzt registrieren} klicken. +Daraufhin navigiert der Browser zu einem Registrierungsformular, das eine Email-Adresse, ein Passwort +und die Zustimmung zur Datenverarbeitung benötigt. Ist dieses Formular abgeschickt, erhält das Mitglied +eine Email mit einem Bestätigungslink. Wird dieser Bestätigungslink angeklickt, wird das Mitgliedskonto +freigegeben und es öffnet sich ein Login-Formular. +Nach erfolgreichem Login wird das Mitgliedskonto um die notwendingen Teilnehmereigenschaften erweitert +und ist somit erfolgreich als Teilnehmer registriert. + +\subsection*{Umsetzung} +Um das umzusetzen wurde zunächst ein simples Weichen-Content-Element erstellt. +Dieses Content-Element hat die Parameter \enquote{question}, \enquote{answ-1-link}, \enquote{answ-1-text}, +\enquote{answ-2-link} sowie \enquote{answ-2-text}. +Der Zweck dieses Content-Elementes ist es, Nutzer basierend auf einer ausformilierten Frage auf eine +von zwei Seiten weiterzuleiten. Anschließend wurden Registrierungen über Femanager-Plugin-Content-Elemente +realisiert. +Anpassungen der versendeten Emails erfolgen durch Überschreiben der Email-Templates von Femanager. +Weiterleitungen zu bestimmten Seiten nachdem ein Nutzer spezielle Events ausgelöst hat können über TypoScript +konfiguriert werden \cite{bib:typo3-docs-femanager}. Logins werden über das TYPO3-Native Loginformular +gelöst. Im TYPO3-Loginformular kann man Weiterleitungen zu spezialisierten Seiten im Backend-UI festlegen +\cite{bib:typo3-docs-felogin}. +Für alle funktionalen Belange wurde ein TYPO3-Plugin registriert. Dieses Plugin verfügt über einen +ActionController, der Nutzeranfragen an PHP-Funktionen (\enquote{Actions}) +bindet. +In diesen Actions wird Fehlerbehandlung durchgeführt, Datenmodelle der Domäne erstellt und in der +Datenbank persistiert sowie Daten für die Anzeige im Frontend aufbereitet \cite{bib:typo3-docs-extbase}. +Neue Datenobjekte werden in Repositories registriert \cite{bib:typo3-docs-extdev-tut-tea-repositories}. Diese Repositories sind Aggregate des Controllers, +werden jedoch nach dem \enquote{Inversion of Control}-Prinzip via Dependency Injection instanziiert und +der ActionController-Klasse über Methode übergeben \cite{bib:typo3-docs-di}. +Als problematisch erweisen sich bidirektionale Verbindungen zwischen Datenmodellen, wenn die Foreign Keys +über das SQL-Schlüsselwort \enquote{AUTO\_INCREMENT} in der Datenbank definiert werden. +In diesem Fall wollen wir +einen MasterRecord, der Betriebsinformationen speichert, bidirektional an ein Teilnehmerobjekt linken. +Als ForeignKeys werden hierfür ihre jeweiligen Uids herangezogen, da diese Werte durch +\enquote{AUTO\_INCREMENT} auf der Datenbankebene gehandhabt werden. +Es gilt also, dass ein MasterRecord $a$ die TeilnehmerUid von einem Teilnehmer $b$ hält und dass +$b$ die MasterRecordUid von $a$ hält. +Die Problematik hierbei ist, dass diese Uids erst nach dem persistieren in der Datenbank bekannt sind, +da diese Werte erst im Zuge der Persistierung erstellt werden. Das ist so, da das +\enquote{AUTO\_INCREMENT}-Schlüsselwort lediglich zu SQL gehört und SQL nur von der Datenbank ausgeführt wird. +Die Lösung hierfür ist es, beide Elemente zu erstellen und zu persistieren, danach ihre Uids gegenseitig +bekannt machen um sie danach erneut zu persistieren. diff --git a/dexes/literature.bib b/dexes/literature.bib index bc4c554..243f123 100644 --- a/dexes/literature.bib +++ b/dexes/literature.bib @@ -359,3 +359,35 @@ year = {2023}, note = {Zugriff: März 2023} } + +@misc{bib:typo3-docs-femanager, + author = {{in2code}}, + howpublished = "\url{https://docs.typo3.org/p/in2code/femanager/main/en-us/Introduction/Index.html}", + title = {{femanager}}, + year = {2023}, + note = {Zugriff: März 2023} +} + +@misc{bib:typo3-docs-felogin, + author = {{TYPO3 Contributors}}, + howpublished = "\url{https://docs.typo3.org/c/typo3/cms-felogin/main/en-us/Configuration/Index.html}", + title = {{cms-felogin}}, + year = {2023}, + note = {Zugriff: März 2023} +} + +@misc{bib:typo3-docs-extbase, + author = {{TYPO3 Contributors}}, + howpublished = "\url{https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ExtensionArchitecture/Extbase/Index.html}", + title = {{Extension development / Extbase}}, + year = {2023}, + note = {Zugriff: März 2023} +} + +@misc{bib:typo3-docs-di, + author = {{TYPO3 Contributors}}, + howpublished = "\url{https://docs.typo3.org/m/typo3/reference-coreapi/11.5/en-us/ApiOverview/DependencyInjection/Index.html}", + title = {{Dependency Injection}}, + year = {2023}, + note = {Zugriff: März 2023} +} diff --git a/images/ux-flow-registrierung.drawio b/images/ux-flow-registrierung.drawio index 7b0286a..009606e 100644 --- a/images/ux-flow-registrierung.drawio +++ b/images/ux-flow-registrierung.drawio @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/images/ux-flow-registrierung.png b/images/ux-flow-registrierung.png index d16ffab..111e637 100644 Binary files a/images/ux-flow-registrierung.png and b/images/ux-flow-registrierung.png differ diff --git a/main.pdf b/main.pdf index 65fd97c..8db9824 100644 Binary files a/main.pdf and b/main.pdf differ