From 828ad4f86f7e8f305c2e57ec4562130bec362371 Mon Sep 17 00:00:00 2001 From: SJost Date: Tue, 3 Jul 2018 17:52:37 +0200 Subject: [PATCH] Course Deregister and Material Visible now added to CourseEdit --- messages/de.msg | 4 +- src/Handler/Course.hs | 102 +++++++++++++++++++++--------------------- 2 files changed, 53 insertions(+), 53 deletions(-) diff --git a/messages/de.msg b/messages/de.msg index c1be8c45e..87c7b35a1 100644 --- a/messages/de.msg +++ b/messages/de.msg @@ -6,6 +6,7 @@ BtnDeregister: Abmelden RegisterFrom: Anmeldungen von RegisterTo: Anmeldungen bis +DeRegUntil: Abmeldungen bis SummerTerm year@Integer: Sommersemester #{display year} WinterTerm year@Integer: Wintersemester #{display year}/#{display $ succ year} @@ -91,6 +92,7 @@ UnauthorizedSubmissionCorrector: Sie sind nicht der Korrektor für diese Abgabe. OnlyUploadOneFile: Bitte nur eine Datei hochladen. DeprecatedRoute: Diese Ansicht ist obsolet und könnte in Zukunft entfallen. UnfreeMaterials: Die Materialien für diese Veranstaltung sind nicht allgemein freigegeben. +MaterialFree: Kursmaterialien ohne Anmeldung zugänglich UnauthorizedWrite: Sie haben hierfür keine Schreibberechtigung EMail: E-Mail @@ -173,4 +175,4 @@ FileCorrected: Korrigiert FileCorrectedDeleted: Korrigiert (gelöscht) RatingUpdated: Korrektur gespeichert RatingDeleted: Korrektur zurückgesetzt -RatingFilesUpdated: Korrigierte Dateien überschrieben \ No newline at end of file +RatingFilesUpdated: Korrigierte Dateien überschrieben diff --git a/src/Handler/Course.hs b/src/Handler/Course.hs index 3ecf90e58..4afabc97b 100644 --- a/src/Handler/Course.hs +++ b/src/Handler/Course.hs @@ -184,10 +184,10 @@ courseEditHandler isGet course = do , courseSchool = cfSchool res , courseCapacity = cfCapacity res , courseRegisterSecret = cfSecret res + , courseMaterialFree = cfMatFree res , courseRegisterFrom = cfRegFrom res , courseRegisterTo = cfRegTo res - , courseDeregisterUntil = Nothing -- TODO - , courseMaterialFree = True -- TODO + , courseDeregisterUntil = cfDeRegUntil res } case insertOkay of (Just cid) -> do @@ -215,33 +215,19 @@ courseEditHandler isGet course = do -- if ((entityKey <$> existing) /= Just cid) -- then addMessageI "danger" $ MsgCourseEditDupShort tid csh -- else do - -- addMessage "debug" $ fromMaybe [shamlet|No description given.|] $ cfDesc res --- update cid --- [ CourseName =. cfName res --- , CourseDescription =. cfDesc res --- , CourseLinkExternal =. cfLink res --- , CourseShorthand =. cfShort res -- TODO: change here should generate a warning, or only allowed for Admins?! --- , CourseTerm =. tid -- TODO: change here should generate a warning, or only allowed for Admins?! --- , CourseSchool =. cfSchool res --- , CourseCapacity =. cfCapacity res --- , CourseRegisterFrom =. cfRegFrom res --- , CourseRegisterTo =. cfRegTo res --- , CourseChangedBy =. aid --- , CourseChanged =. now --- ] _updOkay <- replace cid ( -- TODO replaceUnique requires Eq?! - Course { courseName = cfName res - , courseDescription = cfDesc res - , courseLinkExternal = cfLink res - , courseShorthand = cfShort res - , courseTerm = cfTerm res - , courseSchool = cfSchool res - , courseCapacity = cfCapacity res - , courseRegisterSecret = cfSecret res - , courseRegisterFrom = cfRegFrom res - , courseRegisterTo = cfRegTo res - , courseDeregisterUntil = Nothing -- TODO - , courseMaterialFree = True -- TODO + Course { courseName = cfName res + , courseDescription = cfDesc res + , courseLinkExternal = cfLink res + , courseShorthand = cfShort res + , courseTerm = cfTerm res + , courseSchool = cfSchool res + , courseCapacity = cfCapacity res + , courseRegisterSecret = cfSecret res + , courseMaterialFree = cfMatFree res + , courseRegisterFrom = cfRegFrom res + , courseRegisterTo = cfRegTo res + , courseDeregisterUntil = cfDeRegUntil res } ) insert_ $ CourseEdit aid now cid @@ -261,17 +247,19 @@ courseEditHandler isGet course = do data CourseForm = CourseForm - { cfCourseId :: Maybe CourseId -- Maybe CryptoUUIDCourse - , cfName :: Text - , cfDesc :: Maybe Html - , cfLink :: Maybe Text - , cfShort :: Text - , cfTerm :: TermId - , cfSchool :: SchoolId - , cfCapacity :: Maybe Int - , cfSecret :: Maybe Text - , cfRegFrom :: Maybe UTCTime - , cfRegTo :: Maybe UTCTime + { cfCourseId :: Maybe CourseId -- Maybe CryptoUUIDCourse + , cfName :: Text + , cfDesc :: Maybe Html + , cfLink :: Maybe Text + , cfShort :: Text + , cfTerm :: TermId + , cfSchool :: SchoolId + , cfCapacity :: Maybe Int + , cfSecret :: Maybe Text + , cfMatFree :: Bool + , cfRegFrom :: Maybe UTCTime + , cfRegTo :: Maybe UTCTime + , cfDeRegUntil :: Maybe UTCTime } instance Show CourseForm where @@ -280,17 +268,19 @@ instance Show CourseForm where courseToForm :: Entity Course -> CourseForm courseToForm cEntity = CourseForm - { cfCourseId = Just $ entityKey cEntity - , cfName = courseName course - , cfDesc = courseDescription course - , cfLink = courseLinkExternal course - , cfShort = courseShorthand course - , cfTerm = courseTerm course - , cfSchool = courseSchool course - , cfCapacity = courseCapacity course - , cfSecret = courseRegisterSecret course - , cfRegFrom = courseRegisterFrom course - , cfRegTo = courseRegisterTo course + { cfCourseId = Just $ entityKey cEntity + , cfName = courseName course + , cfDesc = courseDescription course + , cfLink = courseLinkExternal course + , cfShort = courseShorthand course + , cfTerm = courseTerm course + , cfSchool = courseSchool course + , cfCapacity = courseCapacity course + , cfSecret = courseRegisterSecret course + , cfMatFree = courseMaterialFree course + , cfRegFrom = courseRegisterFrom course + , cfRegTo = courseRegisterTo course + , cfDeRegUntil = courseDeregisterUntil course } where course = entityVal cEntity @@ -318,12 +308,16 @@ newCourseForm template = identForm FIDcourse $ \html -> do <*> aopt textField (fslpI MsgCourseSecret "beliebige Zeichenkette" & setTooltip "Optional: Anmeldung zum Kurs benötigt ein Passwort") (cfSecret <$> template) - <*> aopt utcTimeField (fslpI MsgRegisterFrom "(ohne Datum keine Anmeldung möglich)" + <*> areq checkBoxField (fslI MsgMaterialFree)(cfMatFree <$> template) + <*> aopt utcTimeField (fslpI MsgRegisterFrom "Datum, sonst KEINE Anmeldung" & setTooltip "Ohne Datum ist keine Anmeldung zu diesem Kurs möglich!") (cfRegFrom <$> template) - <*> aopt utcTimeField (fslpI MsgRegisterTo "(ohne Datum unbegrenzte Anmeldung möglich)" + <*> aopt utcTimeField (fslpI MsgRegisterTo "Datum, sonst unbegr. Anmeldung" & setTooltip "Die Anmeldung darf ohne Begrenzung sein") (cfRegTo <$> template) + <*> aopt utcTimeField (fslpI MsgDeRegUntil "Datum, sonst unbegr. Abmeldung" + & setTooltip "Die Abmeldung darf ohne Begrenzung sein") + (cfDeRegUntil <$> template) <* submitButton return $ case result of FormSuccess courseResult @@ -353,6 +347,10 @@ validateCourse (CourseForm{..}) = ( NTop cfRegFrom <= NTop cfRegTo , "Ende des Anmeldezeitraums muss nach dem Anfang liegen" ) + , + ( NTop cfRegFrom <= NTop cfDeRegUntil + , "Ende des Abmeldezeitraums muss nach dem Anfang liegen" + ) -- No starting date is okay: effective immediately -- ( cfHasReg <= (isNothing cfRegFrom) -- , "Beginn der Anmeldung angeben oder Anmeldungen deaktivieren"