moodle2.0's People
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
Sonderzeichen richtig speichern
Sonderzeichen werden nicht richtig in der Datenbank gespeichert bzw. zurückgegeben
Kreuzerluebungen/listen mit beliebigen „Kreuzerlwerten“
Ja/Nein/"Vielleicht"
Anwesenheitsliste generieren
GET /course/{id}/attendanceList
Inhalt:
- Matrikelnrnummer
- Vorname
- Nachname
- ein leeres Feld zum Unterschreiben
SonarCloud: Frontend und Backend aufsplitten. (Zwei Projekte)
Abgabe von Dateien
POST /user/kreuzel/attachement
Anhang für ein Beispiel hinzufügen oder aktualisieren (finishedExample)
Request:
- file
- id (exampleId)
Response: egal
Präsentationen filtern
Auswahl des Übungsblattes oder "ALLE"
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)
LDAP anbindung
Kurse verwalten
Dev-Server aufsetzen
Schnittstelle zum ZEUS/Moodle System
Beschreibung für Kurs hinzufügen
GET /course/{id}
, POST /course
, GET /courseAssigned/{id}
zusätzliches Attribut description <html/string>
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)
Datenbank aufsetzen/testen
Travis und SonarCloud aufsetzen
Continuous Integration (TravisCI) mit Quality Measures (SonarCloud) aufsetzen
Ü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
Beispiel im Übungsblatt löschen
DELETE /example/{id}
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
Rollenverwaltung
Trennung zwischen Student und Lehrer.
Weitere Attribute für den Kurs eines Studenten
minKreuzel
und minPoints
sollen bei den Übungsblättern zusätzlich mitgegeben werden
Semester anlegen
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)
Plagiatscheck
Login
- Credentials an Zeus schicken und überprüfen
- oder vorhandenen Web-Token vom Campus verwenden
Server: Routing immer auf "/"
Problem: Routing ist am Client. Eine direkte Eingabe der URL ist aber nicht möglich. Deswegen alles auf root "/" umleiten und den Client die Arbeit machen lassen.
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 UnterbeispieleexampleId
exampleName
Validierung bei Anlage User/Kurs/Semester ausbauen
Bei der Anlage von User/Kurs/Semester etc muss die Validierung ausgebaut werden
Nachabgaben
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
Admin User anlegen (Skript)
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
GET Kursinformationen für zugeteilten Benutzer
GET /courseAssigned/{id}
Gib die Kursinformationen zurück, wenn der Benutzer diesem Kurs zugeteilt ist
Docker Container
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.
Flexibles Regelwerk per LV
?
Datenmodell entwerfen
Initiales Datenmodell entwerfen (für die ersten paar Features)
Kurs: Nicht verwendetes Attribut entfernen
"includeThird" wird beim Kurs nicht mehr benötigt (ist jetzt beim Beispiel)
GET /semester/{semesterId}/courses; nicht benötigtes Attribut
GET /semester/{semesterId}/courses
Attribut "isOwner" wird nicht benötigt
Fehlerausgabe bei den Präsentationen
Falls es schon eine Präsentation mit Student und Beispiel gibt, soll eine Fehlermeldung ausgegeben werden
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
PDF Exporte (Listen, Bewertungen,…)
Wahrscheinlich: Liste der Studenten und Liste inkl. Kreuzel
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.