first commit
This commit is contained in:
		
							
								
								
									
										1183
									
								
								ERModel.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1183
									
								
								ERModel.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										30
									
								
								LICENSE
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								LICENSE
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | ||||
| Copyright Author name here (c) 2017 | ||||
|  | ||||
| All rights reserved. | ||||
|  | ||||
| Redistribution and use in source and binary forms, with or without | ||||
| modification, are permitted provided that the following conditions are met: | ||||
|  | ||||
|     * Redistributions of source code must retain the above copyright | ||||
|       notice, this list of conditions and the following disclaimer. | ||||
|  | ||||
|     * Redistributions in binary form must reproduce the above | ||||
|       copyright notice, this list of conditions and the following | ||||
|       disclaimer in the documentation and/or other materials provided | ||||
|       with the distribution. | ||||
|  | ||||
|     * Neither the name of Author name here nor the names of other | ||||
|       contributors may be used to endorse or promote products derived | ||||
|       from this software without specific prior written permission. | ||||
|  | ||||
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||
| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
							
								
								
									
										10
									
								
								MyTypes.hs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								MyTypes.hs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| -- @Employment.hs | ||||
| {-# LANGUAGE TemplateHaskell #-} | ||||
| module MyTypes where | ||||
|  | ||||
| import Database.Persist.TH | ||||
| import Prelude | ||||
|  | ||||
| data FSStatus = undefined | ||||
|     deriving (Show, Read, Eq) | ||||
| derivePersistField "FSStatus" | ||||
							
								
								
									
										75
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,75 @@ | ||||
| Übungszettel 9 | ||||
| ============== | ||||
|  | ||||
| Pushen Sie nach der Bearbeitung jeder Aufgabe Ihre Ergebnisse.  | ||||
|  | ||||
| Issue 1 | ||||
| ------- | ||||
| Führen Sie die folgenden Befehle aus.  | ||||
| Diese erstellen Ihnen ein ausführbares Yesod-Grundgerüst.  | ||||
| Grundgerüst:  | ||||
|  | ||||
| - $ stack new uebung9 --bare yesod-sqlite  | ||||
|  | ||||
| Kompilieren mit yesod:  | ||||
| - $ stack build yesod-bin | ||||
|  | ||||
| Starten des Servers: | ||||
| - $ 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.  | ||||
|  | ||||
| Long version: | ||||
| https://www.youtube.com/watch?v=rsozCEMQdSY | ||||
|  | ||||
|  | ||||
| Issue 2 | ||||
| ------- | ||||
| Verschieben Sie das mitgegebene Modul `MyTypes.hs` in den `src/`-Ordner und importieren Sie es in der `Model.hs` | ||||
|  | ||||
| In der Datei database-model.xml befindet sich ein ER-Modell.  | ||||
| In `config/models` werden alle Entitäten definiert, die Ihre Datenbank kennen soll.  | ||||
| Pflegen Sie die Entitäten des ER-Modells sinnvoll in `config/models` ein. | ||||
|  | ||||
| Hinweise:  | ||||
|  | ||||
| - Ganz ähnlich wie Sie es von der `record syntax` her kennen, hat hier jede Entität beliebig viele Felder,  | ||||
| für die Sie Name und Typ festlegen müssen.  | ||||
|  | ||||
| - Für textuelle Felder, nutzen Sie den Typ `Text`. Falls ein Feld auch leer sein darf, fügen Sie ein `Maybe` hinzu.  | ||||
|  | ||||
| - Für jede Entität werden automatisch Id-Typen definiert (z.B. `UserId` für die Entität `User`), die Sie benutzen können, um bestimmte Kardinalitäten  | ||||
| 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`.  | ||||
|  | ||||
| Issue 3 | ||||
| ------- | ||||
|  | ||||
| a) Neues Feature: Auf der neuen Seite `Timeline` können eingelogte User Nachrichten posten. Die Posts werden in chronologischer Reihenfolge angezeigt.  | ||||
|  | ||||
| TODO:  | ||||
| - `config/routes`: Legen Sie hier eine neue Route an.  | ||||
| - `Foundation.hs`:  | ||||
|  -- 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.  | ||||
|  -- Sorgen Sie dafür, dass `Timeline` als Menüpunkt im defaultLayout erscheint. | ||||
| - `src/Handler/`: Legen Sie ein Handler-Modul `Timeline.hs` an.  | ||||
| -  `cabal`: Fügen Sie den Handler als `exposed-module` hinzu.  | ||||
| - `src/Application.hs`: Importieren Sie den neuen Handler | ||||
| - `src/Handler/Timeline.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.  | ||||
|  --  | ||||
|  -- Bennenen Sie ihre Handler-Funktionen gemäß dem Schema: http-Methode + Routenkonstruktor.  | ||||
|  -- Inhaltlich können Sie sich stark an der Vorlesung orientieren! | ||||
|  -- 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 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. | ||||
| Timelines sollen nur noch für befreundete User sichtbar sein. | ||||
		Reference in New Issue
	
	Block a user