Cleanup
This commit is contained in:
parent
64c45c515e
commit
b40096db8a
@ -1,3 +1,9 @@
|
|||||||
|
* Version 29.04.2019
|
||||||
|
|
||||||
|
Tutorien
|
||||||
|
|
||||||
|
Anzeige von Korrektoren auf den Kursseiten
|
||||||
|
|
||||||
* Version 20.04.2019
|
* Version 20.04.2019
|
||||||
|
|
||||||
Versand von Benachrichtigungen an Kursteilnehmer
|
Versand von Benachrichtigungen an Kursteilnehmer
|
||||||
|
|||||||
@ -999,7 +999,7 @@ makeCourseUserTable cid restrict colChoices psValidator = do
|
|||||||
E.on $ tutorial E.^. TutorialId E.==. tutorialParticipant E.^. TutorialParticipantTutorial
|
E.on $ tutorial E.^. TutorialId E.==. tutorialParticipant E.^. TutorialParticipantTutorial
|
||||||
E.where_ $ tutorial E.^. TutorialCourse E.==. E.val cid
|
E.where_ $ tutorial E.^. TutorialCourse E.==. E.val cid
|
||||||
E.&&. E.hasInfix (tutorial E.^. TutorialName) criterion
|
E.&&. E.hasInfix (tutorial E.^. TutorialName) criterion
|
||||||
E.&&. tutorialParticipant E.^. TutorialParticipantUser E.==. (queryUser row) E.^. UserId
|
E.&&. tutorialParticipant E.^. TutorialParticipantUser E.==. queryUser row E.^. UserId
|
||||||
)
|
)
|
||||||
-- , ("course-registration", error "TODO") -- TODO
|
-- , ("course-registration", error "TODO") -- TODO
|
||||||
-- , ("course-user-note", error "TODO") -- TODO
|
-- , ("course-user-note", error "TODO") -- TODO
|
||||||
@ -1051,7 +1051,7 @@ postCUsersR tid ssh csh = do
|
|||||||
psValidator = def & defaultSortingByName
|
psValidator = def & defaultSortingByName
|
||||||
ent@(Entity cid _) <- getBy404 $ TermSchoolCourseShort tid ssh csh
|
ent@(Entity cid _) <- getBy404 $ TermSchoolCourseShort tid ssh csh
|
||||||
numParticipants <- count [CourseParticipantCourse ==. cid]
|
numParticipants <- count [CourseParticipantCourse ==. cid]
|
||||||
table <- makeCourseUserTable cid (const $ E.true) colChoices psValidator
|
table <- makeCourseUserTable cid (const E.true) colChoices psValidator
|
||||||
return (ent, numParticipants, table)
|
return (ent, numParticipants, table)
|
||||||
formResult participantRes $ \case
|
formResult participantRes $ \case
|
||||||
(CourseUserSendMail, selectedUsers) -> do
|
(CourseUserSendMail, selectedUsers) -> do
|
||||||
@ -1089,8 +1089,8 @@ postTUsersR tid ssh csh tutn = do
|
|||||||
psValidator = def
|
psValidator = def
|
||||||
& defaultSortingByName
|
& defaultSortingByName
|
||||||
& restrictSorting (\name _ -> none (== name) ["note"]) -- We need to be careful to restrict allowed sorting/filter to not expose sensitive information
|
& restrictSorting (\name _ -> none (== name) ["note"]) -- We need to be careful to restrict allowed sorting/filter to not expose sensitive information
|
||||||
isInTut q = E.exists . E.from $ \tutorialParticipant -> do
|
isInTut q = E.exists . E.from $ \tutorialParticipant ->
|
||||||
E.where_ $ tutorialParticipant E.^. TutorialParticipantUser E.==. (queryUser q) E.^. UserId
|
E.where_ $ tutorialParticipant E.^. TutorialParticipantUser E.==. queryUser q E.^. UserId
|
||||||
E.&&. tutorialParticipant E.^. TutorialParticipantTutorial E.==. E.val tutid
|
E.&&. tutorialParticipant E.^. TutorialParticipantTutorial E.==. E.val tutid
|
||||||
cid <- getKeyBy404 $ TermSchoolCourseShort tid ssh csh
|
cid <- getKeyBy404 $ TermSchoolCourseShort tid ssh csh
|
||||||
table <- makeCourseUserTable cid isInTut colChoices psValidator
|
table <- makeCourseUserTable cid isInTut colChoices psValidator
|
||||||
|
|||||||
@ -18,8 +18,12 @@ import qualified Data.Set as Set
|
|||||||
|
|
||||||
import qualified Data.CaseInsensitive as CI
|
import qualified Data.CaseInsensitive as CI
|
||||||
|
|
||||||
|
import qualified Data.Text as Text
|
||||||
|
|
||||||
import Utils.Lens
|
import Utils.Lens
|
||||||
|
|
||||||
|
{-# ANN module ("Hlint: ignore Redundant void" :: String) #-}
|
||||||
|
|
||||||
|
|
||||||
getCTutorialListR :: TermId -> SchoolId -> CourseShorthand -> Handler Html
|
getCTutorialListR :: TermId -> SchoolId -> CourseShorthand -> Handler Html
|
||||||
getCTutorialListR tid ssh csh = do
|
getCTutorialListR tid ssh csh = do
|
||||||
@ -241,7 +245,7 @@ tutorialForm cid template html = do
|
|||||||
<*> aopt (natFieldI MsgTutorialCapacityNonPositive) (fslpI MsgTutorialCapacity (mr MsgTutorialCapacity) & setTooltip MsgTutorialCapacityTip) (tfCapacity <$> template)
|
<*> aopt (natFieldI MsgTutorialCapacityNonPositive) (fslpI MsgTutorialCapacity (mr MsgTutorialCapacity) & setTooltip MsgTutorialCapacityTip) (tfCapacity <$> template)
|
||||||
<*> areq textField (fslpI MsgTutorialRoom $ mr MsgTutorialRoomPlaceholder) (tfRoom <$> template)
|
<*> areq textField (fslpI MsgTutorialRoom $ mr MsgTutorialRoomPlaceholder) (tfRoom <$> template)
|
||||||
<*> occurencesAForm (tfTime <$> template)
|
<*> occurencesAForm (tfTime <$> template)
|
||||||
<*> aopt ciField (fslI MsgTutorialRegGroup & setTooltip MsgTutorialRegGroupTip) ((tfRegGroup <$> template) <|> Just (Just "tutorial"))
|
<*> fmap (assertM (not . Text.null . CI.original) . fmap (CI.map Text.strip)) (aopt ciField (fslI MsgTutorialRegGroup & setTooltip MsgTutorialRegGroupTip) ((tfRegGroup <$> template) <|> Just (Just "tutorial")))
|
||||||
<*> aopt utcTimeField (fslpI MsgRegisterFrom (mr MsgDate)
|
<*> aopt utcTimeField (fslpI MsgRegisterFrom (mr MsgDate)
|
||||||
& setTooltip MsgCourseRegisterFromTip
|
& setTooltip MsgCourseRegisterFromTip
|
||||||
) (tfRegisterFrom <$> template)
|
) (tfRegisterFrom <$> template)
|
||||||
|
|||||||
@ -182,6 +182,54 @@ $newline text
|
|||||||
in Uni2work Abgaben angelegt,
|
in Uni2work Abgaben angelegt,
|
||||||
welche wie üblich korrigiert werden können.
|
welche wie üblich korrigiert werden können.
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h2>Tutorien
|
||||||
|
|
||||||
|
<dl .deflist>
|
||||||
|
<dt .deflist__dt> Termine
|
||||||
|
<dd .deflist__dd>
|
||||||
|
Tutorien können beliebig viele reguläre Termine haben, die sich wöchentlich wiederholen.
|
||||||
|
<br />
|
||||||
|
Zusätzlich können beliebig viele <i>Ausnahmen</i> angelegt werden.
|
||||||
|
<br />
|
||||||
|
Hierbei überschreibt eine Ausnahme, dass ein Termin nicht stattfindet, die reguläre Terminplanung (man gibt hierbei einen beliebigen Zeitpunkt innerhalb des regulären Termins an).
|
||||||
|
<br />
|
||||||
|
Eine Ausnahme, dass ein Termin außerplanmäßig stattfindet, überschreibt wiederrum Ausnahmen, die Termine ausfallen lassen.
|
||||||
|
<br />
|
||||||
|
Dieses Verhalten kann genutzt werden um einzelne Termine zeitlich zu verschieben, indem der reguläre Termin ausfällt und stattdessen ein außerplanmäßiger mit versetzter Zeit stattfindet.
|
||||||
|
|
||||||
|
<dt .deflist__dt> Tutoren
|
||||||
|
<dd .deflist__dd>
|
||||||
|
<p>
|
||||||
|
Tutoren werden ad hoc pro Tutoriumsgruppe festgelegt.
|
||||||
|
<br />
|
||||||
|
Eine Tutoriumsgruppe kann beliebig viele Tutoren haben und ein Tutor kann beliebig viele Tutoriengruppen betreuen.
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Tutoren haben Zugriff auf die Namen und Studiendaten ihrer Tutoriums-Teilnehmer und können auch Mitteilungen an sie verschicken (analog zu Kursmitteilungen).
|
||||||
|
|
||||||
|
<dt .deflist__dt> Anmeldung
|
||||||
|
<dd .deflist__dd>
|
||||||
|
<p>
|
||||||
|
Studenten können sich auf der Kursseite selbst zu Tutorien anmelden.
|
||||||
|
<br />
|
||||||
|
Die Anmeldung erfolgt momentan noch auf <i>first come, first served</i>-Basis
|
||||||
|
<br />
|
||||||
|
Eine vorherige Anmeldung zum Kurs ist Voraussetzung
|
||||||
|
<p>
|
||||||
|
Die Anmeldung kann pro Tutoriumsgruppe zeitlich beschränkt werden.
|
||||||
|
<p>
|
||||||
|
Tutoriumsgruppen können mit einer <i>Registrierungs-Gruppe</i> versehen werden.
|
||||||
|
<br />
|
||||||
|
Es handelt sich hierbei um einen beliebig wählbaren Text der ansonsten keine Bedeutung hat.
|
||||||
|
<br />
|
||||||
|
Studenten wird die Anmeldung nur in einem Tutorium pro Registrierungs-Gruppe erlaubt.
|
||||||
|
|
||||||
|
Leere Registrierungs-Gruppen zählen hierbei als <i>verschieden</i>.
|
||||||
|
<p>
|
||||||
|
Um die Anmeldung in beliebig viele Tutoriumsgruppen zuzulassen können alle Registrierungs-Gruppen leer gelassen werden.
|
||||||
|
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<h2>Klausuren
|
<h2>Klausuren
|
||||||
Das Verwalten von Klausuren und Notenmeldungen
|
Das Verwalten von Klausuren und Notenmeldungen
|
||||||
|
|||||||
Reference in New Issue
Block a user