Update README.md
This commit is contained in:
parent
288d1a04b4
commit
03d995c468
67
README.md
67
README.md
@ -5,11 +5,11 @@ Pushen Sie nach der Bearbeitung jeder Aufgabe Ihre Ergebnisse.
|
|||||||
|
|
||||||
Issue 1
|
Issue 1
|
||||||
-------
|
-------
|
||||||
Führen Sie die folgenden Befehle aus.
|
a) Führen Sie in Ihrem Übungsverzeichnis die folgenden Befehle aus.
|
||||||
Diese erstellen Ihnen ein ausführbares Yesod-Grundgerüst.
|
|
||||||
Grundgerüst:
|
|
||||||
|
|
||||||
- $ stack new uebung9 --bare yesod-sqlite
|
Yesod-Grundgerüst initialisieren:
|
||||||
|
|
||||||
|
- $ stack new NAMEIHRESWEBPROJEKTS --bare yesod-sqlite
|
||||||
|
|
||||||
Kompilieren mit yesod:
|
Kompilieren mit yesod:
|
||||||
- $ stack build yesod-bin
|
- $ stack build yesod-bin
|
||||||
@ -17,18 +17,13 @@ Kompilieren mit yesod:
|
|||||||
Starten des Servers:
|
Starten des Servers:
|
||||||
- $ stack exec -- yesod devel
|
- $ stack exec -- yesod devel
|
||||||
|
|
||||||
Öffnen Sie Ihrem Browser mit der Domain `http://localhost:3000/`. Wenn alles geklappt hat, sollten Sie hier bereits die Möglichkeit haben, sich mit einem Dummy-Account einzuloggen und eine Profilseite zu öffnen.
|
Öffnen Sie einen Browser mit der Domain `http://localhost:3000/`. Wenn alles geklappt hat, sollten Sie hier bereits die Möglichkeit haben, sich mit einem Dummy-Account einzuloggen und eine Profilseite zu öffnen.
|
||||||
|
|
||||||
Long version:
|
b) In `config/models` werden alle Entitäten definiert, die Ihre Datenbank kennen soll. Diese soll nun im Hinblick auf Issue 2-4 angepasst werden. Die dafür nötigen Entitäten sind in einem [Entity-relationship model](https://de.wikipedia.org/wiki/Entity-Relationship-Modell) festgehalten, welches Sie in der Datei [ERModel.pdf](/ERModel.pdf) finden.
|
||||||
https://www.youtube.com/watch?v=rsozCEMQdSY
|
|
||||||
|
|
||||||
|
- Verschieben Sie das mitgegebene Modul `MyTypes.hs` in den `src/`-Ordner und importieren Sie es in der `Model.hs`
|
||||||
|
|
||||||
Issue 2
|
- Pflegen Sie die Entitäten aus [ERModel.pdf](/ERModel.pdf) sinnvoll in `config/models` ein.
|
||||||
-------
|
|
||||||
Verschieben Sie das mitgegebene Modul `MyTypes.hs` in den `src/`-Ordner und importieren Sie es in der `Model.hs`
|
|
||||||
|
|
||||||
In `config/models` werden alle Entitäten definiert, die Ihre Datenbank kennen soll.
|
|
||||||
Pflegen Sie die Entitäten aus [ERModel.pdf](/ERModel.pdf) sinnvoll in `config/models` ein.
|
|
||||||
|
|
||||||
Hinweise:
|
Hinweise:
|
||||||
|
|
||||||
@ -42,34 +37,44 @@ zu erzwingen.
|
|||||||
|
|
||||||
- Wenn Sie selber definierte Typen verwenden wollen, um die Ausprägungen eines Entity-Feldes festzulegen, definieren Sie diese in der mitgegebenen Datei `MyTypes.hs`.
|
- Wenn Sie selber definierte Typen verwenden wollen, um die Ausprägungen eines Entity-Feldes festzulegen, definieren Sie diese in der mitgegebenen Datei `MyTypes.hs`.
|
||||||
|
|
||||||
Issue 3
|
Issue 2
|
||||||
-------
|
-------
|
||||||
|
|
||||||
a) Neues Feature: Auf der neuen Seite `Timeline` können eingelogte User Nachrichten posten. Die Posts werden in chronologischer Reihenfolge angezeigt.
|
Neues Feature: Timeline für alle Nutzer. Auf der Seite `All Users` werden alle jemals eingelogten Nutzer angezeigt. Mit einem Klick auf einen Nutzernamen wird man auf die zugehörige `Timeline` weitergeleitet. Auf der Timeline muss erst einmal nichts weiter stehen außer der Titel: "USERNAME's Timeline".
|
||||||
|
|
||||||
TODO:
|
- `config/routes`: Erstellen Sie die folgenden Routen.
|
||||||
- `config/routes`: Legen Sie hier eine neue Route an.
|
```
|
||||||
|
/timeline/#UserId UserTimelineR GET
|
||||||
|
/userList UserListR GET
|
||||||
|
```
|
||||||
- `Foundation.hs`:
|
- `Foundation.hs`:
|
||||||
|
|
||||||
- Ergänzen Sie die Funktionen, in denen auf Routen-Konstruktoren pattern-gematcht wird.
|
- Ergänzen Sie die Funktionen, in denen auf Routen-Konstruktoren pattern-gematcht wird.
|
||||||
- Die `Timeline` soll nur für autorisierte (d.h. eingeloggte) User sichtbar sein.
|
- Die Routen `UserListR` und `UserTimelineR` sollen nur für autorisierte (d.h. eingeloggte) Nutzer sichtbar sein.
|
||||||
- Sorgen Sie dafür, dass `Timeline` als Menüpunkt im defaultLayout erscheint.
|
- Sorgen Sie dafür, dass `UserListR` über den Menüpunkt "All Users" erreichbar ist (siehe MenuItem in defaultLayout).
|
||||||
- `src/Handler/`: Legen Sie ein Handler-Modul `Timeline.hs` an.
|
|
||||||
- `cabal`: Fügen Sie den Handler als `exposed-module` hinzu.
|
- `src/Handler/`: Legen Sie die Handler-Module `UserTimeline.hs` und `UserList.hs` an.
|
||||||
- `src/Application.hs`: Importieren Sie den neuen Handler
|
- `cabal`: Fügen Sie die Handler als `exposed-module` hinzu.
|
||||||
- `src/Handler/Timeline.hs`:
|
- `src/Application.hs`: Importieren Sie die neuen Handler
|
||||||
|
- `src/Handler/UserList.hs`/`src/Handler/UserTimeline.hs`:
|
||||||
|
|
||||||
- Erstellen Sie für jede `http-Methode`, für die Sie die neue Route definiert haben, eine entsprechende Handler-Funktion in dem neuen Handler-Modul.
|
- Erstellen Sie für jede `http-Methode`, für die Sie die neue Route definiert haben, eine entsprechende Handler-Funktion in dem neuen Handler-Modul.
|
||||||
- Bennenen Sie ihre Handler-Funktionen gemäß dem Schema: http-Methode + Routenkonstruktor.
|
- Bennenen Sie ihre Handler-Funktionen gemäß dem Schema: http-Methode + Routenkonstruktor.
|
||||||
- Inhaltlich können Sie sich stark an der Vorlesung orientieren! Schauen Sie sich auch die vorgegeben Handler an.
|
- Inhaltlich können Sie sich stark an der Vorlesung orientieren! Schauen Sie sich auch die vorgegeben Handler-Module an.
|
||||||
- Man kann hamlet-Code etc. auch in template-Files auslagern. Sehen Sie sich hierzu beispielsweise `src/Handler/Profile.hs` und das eingebundene Template `templates/profile.hamlet` an.
|
- Man kann hamlet-Code etc. auch in template-Files auslagern. Sehen Sie sich hierzu beispielsweise `src/Handler/Profile.hs` und das eingebundene Template `templates/profile.hamlet` an.
|
||||||
|
|
||||||
b) Neues Feature: Auf der Seite `All Users` werden alle jemals eingelogten User angezeigt. Mit einem Klick auf einen Usernamen wird man auf die zugehörige Timeline weitergeleitet.
|
Issue 3
|
||||||
|
|
||||||
Issue 4
|
|
||||||
-------
|
-------
|
||||||
Never gonna give U up, never gonna let ya down – Friendship :D
|
|
||||||
|
|
||||||
Die Seite `All Users` soll nun auch erlauben, Freundschaftsanfragen abzuschicken. Auf dieser soll man einem User eine Freundschaftsanfrage stellen können.
|
|
||||||
Freundschaftsanfrage soll dem entsprechenden User auf seiner Profilseite angezeigt werden, wo er sie annehmen oder ablehnen kann.
|
Neues Feature: Posten auf der eigenen Timeline. Jeder Nutzer soll nun auf seiner eigenen `Timeline`-Seite Nachrichten mit anderen teilen können.
|
||||||
Timelines sollen nur noch für befreundete User sichtbar sein.
|
Legen Sie hierfür in `config/routes` die neue Route an:
|
||||||
|
´´´
|
||||||
|
/timeline TimelineR GET POST
|
||||||
|
´´´
|
||||||
|
Gehen Sie weiterhin vor wie für `Issue 2`. Die Route `TimelineR` soll für autorisierte Nutzer über einen extra Menüpunkt "Your Timeline" erreichbar sein. Um Nachrichten eingeben und abspeichern zu können, benötigen Sie ein Formular. Auch hier können Sie sich wieder stark an der Vorlesung orientieren.
|
||||||
|
|
||||||
|
Issue 4: Never gonna give U up, never gonna let ya down – Friendship :D
|
||||||
|
-------
|
||||||
|
|
||||||
|
Die Seite `All Users` soll nun auch erlauben, Freundschaftsanfragen abzuschicken, abzulehnen. Auf dieser soll man einem Nutzer eine Freundschaftsanfrage stellen können. Es soll erkenntlich sein, mit wem man bereits befreundet ist. Man soll nur die Timelines befreundeter Nutzer besuchen können.
|
||||||
|
Loading…
Reference in New Issue
Block a user