Giter Site home page Giter Site logo

moodle2.0's People

Contributors

dependabot[bot] avatar kirdock avatar peterthepipp avatar

Watchers

 avatar  avatar

moodle2.0's Issues

Zusätzliches Attribut bei Beispielen

GET /exerciseSheet/{id}, GET /exerciseSheetAssigned/{id}, POST /exerciseSheet
uploadCount <nullable>

Bei der Zwischentabelle steht dann auch ein weiteres Attribut remainingUploadCount.
POST /user/kreuzel/attachment anpassen, dass remainingUploadCount um 1 reduziert wird

Abgabe von Dateien

POST /user/kreuzel/attachement

Anhang für ein Beispiel hinzufügen oder aktualisieren (finishedExample)

Request:

  • file
  • id (exampleId)

Response: egal

Validatoren

Bei einem Beispiel kann nun zusätzlich ein Validator angegeben werden. Zurzeit Unit-Test Validator oder Code-Coverage Validator.

POST /example/validator //Wird erstellt oder ersetzt

  • id //exampleId
  • file //jar file oder etwas anderes, womit leicht zu arbeiten ist

Zusätzliches Attribut beim Kurs: GET /exerciseSheet/{id} bei den Beispielen:

  • validator //Dateiname oder i-eine andere Information, damit ich weiß, dass bereits ein Validator hochgeladen wurde

GET /example/{id}/validator
Response: File //Hochgeladener Validator

Gedachtes Vorgehen bei einer Abgabe vom Studenten:
Abgabe => entpacken => jar Datei (Validator) dem Projekt hinzufügen und über Maven test starten

rückgabe wert bei Validatoren
List<? extends Violation> validate(String fileDir)

Kreuzelinformation von einem Benutzer holen

GET /user/{matriculationNumber}/kreuzel/{courseId} Permission: Admin/Owner
Alle Beispiele (Beispiel und Unterbeispiel) zurückgeben, die der Benutzer bei Kurs (id == courseId) gekreuzelt (state != "n"; also "m" und "y") hat.
Response <Array>. Sortiert nach ...Name?

  • id (exampleId)
  • name (exampleName)

Übungsblatt generieren (PDF)

Aus dem Übungsblatt soll eine PDF generiert werden.
GET /exerciseSheetAssigned/{id}/pdf

Inhalt: (z.B. mit einem normalen Beispiel und einem Beispiel mit Unterbeispielen)

Kursname und -nummer
Abgabedatum
Kursbeschreibung (insertHTML)
Beispiel 1 Beschreibung (Name wird nicht benötigt; das sollte alles in der Beschreibung stehen)
Beispiel 1 Punkte?
Beispiel 2 Beschreibung
Beispiel 2.1 Beschreibung
Beispiel 2.2 Beschreibung

Am Frontend:
Zusätzliches Icon beim Übungsblatt (eye-Icon) um die Generierung und den Download zu starten

Übungsblatt Nummer anzeigen (übungsblätter nach abgabedatum sortieren und zählen)
Übungsnummer von Beispielen und Subbeispielen anzeigen
Subbeispiele durch kleinere Überschrift kennzeichnen

Header-Injections verhindern

Also, dass der Benutzer den Request selbst zusammenbaut und diesen an den Server schickt. Dies sollte verhindert werden, indem auf dem Server die Daten nochmals überprüft werden.
Zum Beispiel:

  • Matrikelnummer besteht nur aus Nummern und ist achtstellig
  • Hat der Benutzer wirklich die benötigten Berechtigungen

GET /example/{id}

POST:
expected: supportedFileTypes:[1,2,3]
got: supportedFileTypes:[{id:1}, {id:2}, {id:3}]

GET:
'supportedFileTypes`:[{id:1}, {id:2}, {id:3}

POST funktioniert nicht, wenn ich die Daten wie von GET bekomme

Such dir aus, bei welcher Schnittstelle du das anpassen willst

ja/nein/vielleicht Anpassung

Ändern in "ja/nein/nicht sicher".
Bei "nicht sicher" einen Tooltip hinzufügen (also bei Hover anzeigen und den Text selbst hervorheben, damit ersichtlich ist, dass es da einen Tooltip gibt)

Login

  • Credentials an Zeus schicken und überprüfen
  • oder vorhandenen Web-Token vom Campus verwenden

Anpassung Kreuzelinformation zu Benutzer

GET /user/{matriculationNumber}/kreuzel/{courseId}
Neue Struktur:
Sortiert nach Abgabedatum, dann nach Übungsblattsortierung, dann nach Beispiel- und Unterbeispielsortierung
<Array>

  • exerciseSheetName
  • <Array> //Beispiele und Unterbeispiele
    • exampleId
    • exampleName

POST/DELETE example

"finishedExample" Zwischentabelle muss angepasst bzw. ein oder mehrere Einträge gelöscht werden, falls

  • Ein Beispiel gelöscht wird
  • Bei einem Beispiel ein Unterbeispiel angelegt wird (Das Haupt- bzw. Über- bzw. Parentexample kann ja nicht gekreuzelt werden)

Default Wert bei Benutzererstellung

PUT /user
isAdmin default Wert auf false. Also wenn bei Request nicht vorhanden, dann false.
Wenn das Attribut nicht im Request vorhanden ist, kann der Benutzer nicht angelegt werden

Präsentierte Beispiele den Kursbenutzern anhängen

Anpassung GET /users/course/{courseId}
Zusätzlich ein Array für jeden assignedUser (also für jeden User der im Kurs ist bzw. die Rolle "s" hat) (User join mit finishedExample Zwischentabelle where presented == true, für diesen Kurs):
data (presented examples)

  • exampleName
  • parentOrder
  • order
  • exampleId

Aufgrund des Arrays (array.length) hab ich dann die Anzahl wie oft ein Student presented hat
Die Info “exampleName” deswegen, damit ich das in der Liste der Präsentierungen gleich so ausgeben kann mit User und Beispiel.

Ich hab dann ja beim Kurs (Admin/Owner-Ansicht) eine neue Tabelle mit den Zuordnungen. Diese kann ich dann selbst aus dem Result von “GET /users/course/{courseId}” zusammenbauen.
Sortiert wird diese Tabelle nach ParentOrder, dann nach order, dann nach martikelnummer.
Die Id brauche ich dann fürs mögliche Löschen

GET /course/{id} Anpassung

Zusätzliches Attribut presented <Array>
Alle Einträge aus der Zwischentabelle finishedExample mit coursId == id

Inhalt:

  • matriculationNumber
  • surname
  • forename
  • exampleId
  • exampleName

Kurse anlegen

  • Zuordnung von Benutzern (Student, Teacher, Tutor)

Auflistung der Benutzer am Client um zuzuweisen und/oder wieder eine CSV-Datei schicken für Mass-Zuweisung?
Auflistung: Tabelle mit Filter und Sortierfunktion. Spalten: Martikelnummer, Vorname, Nachname, Rolle (Dropdown mit "Leiter", "Student", "Tutor").
Oder man macht einfach beides. Wenn man die CSV-Datei auswählt wird diese nicht an den Server geschickt, sondern der Client macht diese auf, und setzt in der Tabelle die Häkchen

Kurs: Kreuzelliste der Studenten

Im Admin-Panel soll es möglich sein, die Kreuzelliste zu sehen (nicht nur PDF) und gegebenfalls Kreuzel wegnehmen/hinzufügen.
Zusätzliches Attribut bei GET /course/{id} kreuzel oder kreuzelList
Bedingung: state != "n"
Inhalt:

  • matriculationNumber
  • surname
  • forename
  • exerciseSheetName
  • state //wird gebraucht um zu unterscheiden ob "nicht sicher" oder "ja"
  • exampleName
  • exampleId //wird zum Löschen benötigt

Desweiteren sollte POST /user/kreuzel angepasst werden
Zusätzliches Attribut matriculationNumber <optional>. Falls matriculationNumber im Body, dann diese nehmen, sonst token.getMatriculationNumber() (also dann Admin/Owner, sonst Student).
Natürlich gilt, dass Admin keine Beschränkungen hat, der Owner das nur darf, wenn sich Student und Beispiel in seinem Kurs befinden.

Benutzer anlegen

Nur Admin darf diese Funktion ausführen
Zwei Varianten:
Variante 1:
User manuell anlegen mit Martikelnummer, Username, Vorname, Nachname, Password

Variante 2:
CSV-Datei mit dem Format "Username;Martikelnummer;Nachname;Vorname" hochladen können für multi-insert

Hochgeladene Dateien auf Server anstatt Datenbank speichern

POST /user/kreuzel/attachment, GET /user/kreuzel/attachment/{exampleId}

Dateiabgaben von Benutzern und Validatoren werden auf dem Server anstatt in der Datenbank gespeichert.
z.B.: Pfad für Beispiele
backend/attachments/Wintersemester 2020/100.200 MeinKurs/{exerciseSheetId}/{exampleId}/{subExampleId}/{matriculationNumber}.extension

GET Übungsblattinformationen für zugeteilten Benutzer

GET /exerciseSheetAssigned/{id}

Gibt Übungsblatt- und Beispielinformationen für einen Benutzer zurück, wenn dieser beim gegebenen Kurs zugeteilt worden ist.
Die Überprüfung in GET /exerciseSheet/{id} für AssignedUser fällt also weg; die Funktionalität ist jetzt bei diesem Call

Kreuzelliste

Rote/Grüne Schriftfarbe für Punkte/Kreuzel, wenn Bedingung erfüllt (minKreuzel, minPoints)

Sortierung der Präsentationen

GET /course/{id}
Es soll zuerst nach Abgabedatum, dann nach order und dann nach (sub)order sortiert werden.
Zusätzliches Attribut exerciseSheetid //wird für Filterung am Frontend benötigt

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.