diff --git a/fill-db.hs b/fill-db.hs index cc3dbe804..0465dc665 100755 --- a/fill-db.hs +++ b/fill-db.hs @@ -43,7 +43,16 @@ main = db $ do , userEmail = "jost@tcs.ifi.lmu.de" , userDisplayName = "Steffen Jost" , userMaxFavourites = 14 - , userTheme = MintGreen + , userTheme = MossGreen + } + void . insert $ User + { userPlugin = "LDAP" + , userIdent = "max@campus.lmu.de" + , userMatrikelnummer = Nothing + , userEmail = "max@campus.lmu.de" + , userDisplayName = "Max Musterstudent" + , userMaxFavourites = 7 + , userTheme = AberdeenReds } void . insert $ Term { termName = summer2017 @@ -91,7 +100,7 @@ main = db $ do { courseName = "Fortgeschrittene Funktionale Programmierung" , courseDescription = Nothing , courseLinkExternal = Nothing - , courseShorthand = "ffp" + , courseShorthand = "FFP" , courseTerm = TermKey summer2018 , courseSchool = ifi , courseCapacity = Just 20 @@ -117,7 +126,7 @@ main = db $ do { courseName = "Einführung in die Programmierung" , courseDescription = Nothing , courseLinkExternal = Nothing - , courseShorthand = "eip" + , courseShorthand = "EIP" , courseTerm = TermKey summer2017 , courseSchool = ifi , courseCapacity = Just 20 @@ -135,7 +144,7 @@ main = db $ do { courseName = "Interaction Design (User Experience Design I & II)" , courseDescription = Nothing , courseLinkExternal = Nothing - , courseShorthand = "ixd" + , courseShorthand = "IXD" , courseTerm = TermKey summer2018 , courseSchool = ifi , courseCapacity = Just 20 @@ -153,7 +162,7 @@ main = db $ do { courseName = "Concept Development (User Experience Design III)" , courseDescription = Nothing , courseLinkExternal = Nothing - , courseShorthand = "ux3" + , courseShorthand = "UX3" , courseTerm = TermKey winter2017 , courseSchool = ifi , courseCapacity = Just 30 @@ -171,7 +180,7 @@ main = db $ do { courseName = "Programmierung und Modellierung" , courseDescription = Nothing , courseLinkExternal = Nothing - , courseShorthand = "pmo" + , courseShorthand = "ProMo" , courseTerm = TermKey summer2017 , courseSchool = ifi , courseCapacity = Just 50 @@ -189,7 +198,7 @@ main = db $ do { courseName = "Datenbanksysteme" , courseDescription = Nothing , courseLinkExternal = Nothing - , courseShorthand = "dbs" + , courseShorthand = "DBS" , courseTerm = TermKey summer2018 , courseSchool = ifi , courseCapacity = Just 50 diff --git a/messages/de.msg b/messages/de.msg index 77f35e422..a1eeab4f1 100644 --- a/messages/de.msg +++ b/messages/de.msg @@ -7,16 +7,16 @@ BtnDeregister: Abmelden RegisterFrom: Anmeldungen von RegisterTo: Anmeldungen bis -SummerTerm year@Integer: Sommersemester #{tshow year} -WinterTerm year@Integer: Wintersemester #{tshow year}/#{tshow $ succ year} +SummerTerm year@Integer: Sommersemester #{display year} +WinterTerm year@Integer: Wintersemester #{display year}/#{display $ succ year} PSLimitNonPositive: “pagesize” muss größer als null sein -Page n@Int64: #{tshow n} +Page n@Int64: #{display n} TermsHeading: Semesterübersicht TermCurrent: Aktuelles Semester TermEditHeading: Semester editieren/anlegen -TermEditTid tk@TermId: Semester #{display tk} editieren -TermEdited tid@TermIdentifier: Semester #{display tid} erfolgreich editiert. +TermEditTid tid@TermId: Semester #{display tid} editieren +TermEdited tid@TermId: Semester #{display tid} erfolgreich editiert. TermNewTitle: Semester editieren/anlegen. InvalidInput: Eingaben bitte korrigieren. Term: Semester @@ -26,33 +26,50 @@ LectureStart: Beginn Vorlesungen Course: Kurs CourseSecret: Zugangspasswort -CourseNewOk tid@TermIdentifier courseShortHand@Text: Kurs #{termToText tid}-#{courseShortHand} wurde erfolgreich erstellt. -CourseEditOk tid@TermIdentifier courseShortHand@Text: Kurs #{termToText tid}-#{courseShortHand} wurde erfolgreich geändert. -CourseNewDupShort tid@TermIdentifier courseShortHand@Text: Kurs #{termToText tid}-#{courseShortHand} konnte nicht erstellt werden: Es gibt bereits einen anderen Kurs mit dem Kürzel #{courseShortHand} in diesem Semester. -CourseEditDupShort tid@TermIdentifier courseShortHand@Text: Kurs #{termToText tid}-#{courseShortHand} konnte nicht geändert werden: Es gibt bereits einen anderen Kurs mit dem Kürzel #{courseShortHand} in diesem Semester. +CourseNewOk tid@TermId courseShortHand@Text: Kurs #{display tid}-#{courseShortHand} wurde erfolgreich erstellt. +CourseEditOk tid@TermId courseShortHand@Text: Kurs #{display tid}-#{courseShortHand} wurde erfolgreich geändert. +CourseNewDupShort tid@TermId courseShortHand@Text: Kurs #{display tid}-#{courseShortHand} konnte nicht erstellt werden: Es gibt bereits einen anderen Kurs mit dem Kürzel #{courseShortHand} in diesem Semester. +CourseEditDupShort tid@TermId courseShortHand@Text: Kurs #{display tid}-#{courseShortHand} konnte nicht geändert werden: Es gibt bereits einen anderen Kurs mit dem Kürzel #{courseShortHand} in diesem Semester. FFSheetName: Name -TermCourseListHeading tk@TermId: Kursübersicht #{display tk} -TermCourseListTitle tk@TermId: Kurse #{display tk} +TermCourseListHeading tid@TermId: Kursübersicht #{display tid} +TermCourseListTitle tid@TermId: Kurse #{display tid} CourseNewHeading: Neuen Kurs anlegen -CourseEditHeading tk@TermId courseShortHand@Text: Kurs #{display tk}-#{courseShortHand} editieren +CourseEditHeading tid@TermId courseShortHand@Text: Kurs #{display tid}-#{courseShortHand} editieren CourseEditTitle: Kurs editieren/anlegen Sheet: Blatt -SheetList tk@TermId courseShortHand@Text: #{display tk}-#{courseShortHand} Übersicht Übungsblätter -SheetNewHeading tk@TermId courseShortHand@Text: #{display tk}-#{courseShortHand} Neues Übungsblatt anlegen -SheetNewOk tk@TermId courseShortHand@Text sheetName@Text: Neues Übungsblatt #{sheetName} wurde im Kurs #{display tk}-#{courseShortHand} erfolgreich erstellt. -SheetTitle tk@TermId courseShortHand@Text sheetName@Text: #{display tk}-#{courseShortHand} #{sheetName} -SheetTitleNew tk@TermId courseShortHand@Text : #{display tk}-#{courseShortHand}: Neues Übungsblatt -SheetEditHead tk@TermId courseShortHand@Text sheetName@Text: #{display tk}-#{courseShortHand} #{sheetName} editieren -SheetEditOk tk@TermId courseShortHand@Text sheetName@Text: Übungsblatt #{sheetName} aus Kurs #{display tk}-#{courseShortHand} wurde gespeichert. -SheetNameDup tk@TermId courseShortHand@Text sheetName@Text: Es gibt bereits ein Übungsblatt #{sheetName} in diesem Kurs #{display tk}-#{courseShortHand}. -SheetDelHead tk@TermId courseShortHand@Text sheetName@Text: Übungsblatt #{sheetName} wirklich aus Kurs #{display tk}-#{courseShortHand} herauslöschen? -SheetDelText submissionNo@Int: Dies kann nicht mehr rückgängig gemacht werden! Alle Einreichungen gehen ebenfalls verloren! Es gibt #{show submissionNo} Abgaben. -SheetDelOk tk@TermId courseShortHand@Text sheetName@Text: #{display tk}-#{courseShortHand}: Übungsblatt #{sheetName} gelöscht. +SheetList tid@TermId courseShortHand@Text: #{display tid}-#{courseShortHand} Übersicht Übungsblätter +SheetNewHeading tid@TermId courseShortHand@Text: #{display tid}-#{courseShortHand} Neues Übungsblatt anlegen +SheetNewOk tid@TermId courseShortHand@Text sheetName@Text: Neues Übungsblatt #{sheetName} wurde im Kurs #{display tid}-#{courseShortHand} erfolgreich erstellt. +SheetTitle tid@TermId courseShortHand@Text sheetName@Text: #{display tid}-#{courseShortHand} #{sheetName} +SheetTitleNew tid@TermId courseShortHand@Text : #{display tid}-#{courseShortHand}: Neues Übungsblatt +SheetEditHead tid@TermId courseShortHand@Text sheetName@Text: #{display tid}-#{courseShortHand} #{sheetName} editieren +SheetEditOk tid@TermId courseShortHand@Text sheetName@Text: Übungsblatt #{sheetName} aus Kurs #{display tid}-#{courseShortHand} wurde gespeichert. +SheetNameDup tid@TermId courseShortHand@Text sheetName@Text: Es gibt bereits ein Übungsblatt #{sheetName} in diesem Kurs #{display tid}-#{courseShortHand}. +SheetDelHead tid@TermId courseShortHand@Text sheetName@Text: Übungsblatt #{sheetName} wirklich aus Kurs #{display tid}-#{courseShortHand} herauslöschen? +SheetDelText submissionNo@Int: Dies kann nicht mehr rückgängig gemacht werden! Alle Einreichungen gehen ebenfalls verloren! Es gibt #{display submissionNo} Abgaben. +SheetDelOk tid@TermId courseShortHand@Text sheetName@Text: #{display tid}-#{courseShortHand}: Übungsblatt #{sheetName} gelöscht. + +SheetExercise: Aufgabenstellung +SheetHint: Hinweise +SheetSolution: Lösung +SheetMarking: Korrekturhinweise Deadline: Abgabe Done: Eingereicht +Submission: Abgabenummer +SubmissionWrongSheet: Abgabenummer gehört nicht zum angegebenen Übungsblatt. +SubmissionAlreadyExists: Sie haben bereits eine Abgabe zu diesem Übungsblatt. +SubmissionEditHead tid@TermId courseShortHand@Text sheetName@Text: #{display tid}-#{courseShortHand} #{sheetName}: Abgabe editieren/anlegen +SubmissionMember g@Int: Mitabgebende(r) ##{display g} +SubmissionArchive: Zip-Archiv der Abgabedatei(en) +SubmissionFile: Datei zur Abgabe +SubmissionAlreadyExistsFor user@Text: #{user} hat bereits eine Abgabe zu diesem bÜbungsblatt. + +CorrectionsTitle: Zugewiesene Korrekturen +CourseCorrectionsTitle: Korrekturen für diesen Kurs + Unauthorized: Sie haben hierfür keine explizite Berechtigung. UnauthorizedAnd l@Text r@Text: #{l} UND #{r} UnauthorizedOr l@Text r@Text: #{l} ODER #{r} @@ -72,26 +89,13 @@ DeprecatedRoute: Diese Ansicht ist obsolet und könnte in Zukunft entfallen. UnfreeMaterials: Die Materialien für diese Veranstaltung sind nicht allgemein freigegeben. UnauthorizedWrite: Sie haben hierfür keine Schreibberechtigung -Submission: Abgabenummer - -SubmissionWrongSheet: Abgabenummer gehört nicht zum angegebenen Übungsblatt. -SubmissionAlreadyExists: Sie haben bereits eine Abgabe zu diesem Übungsblatt. -SubmissionEditHead tk@TermId courseShortHand@Text sheetName@Text: #{display tk}-#{courseShortHand} #{sheetName}: Abgabe editieren/anlegen -SubmissionMember g@Int: Mitabgebende(r) ##{tshow g} -SubmissionArchive: Zip-Archiv der Abgabedatei(en) -SubmissionFile: Datei zur Abgabe -SubmissionAlreadyExistsFor user@Text: #{user} hat bereits eine Abgabe zu diesem bÜbungsblatt. - -CorrectionsTitle: Zugewiesene Korrekturen -CourseCorrectionsTitle: Korrekturen für diesen Kurs - EMail: E-Mail EMailUnknown email@Text: E-Mail #{email} gehört zu keinem bekannten Benutzer. -NotAParticipant user@Text tk@TermId csh@Text: #{user} ist nicht im Kurs #{display tk}-#{csh} angemeldet. +NotAParticipant user@Text tid@TermId csh@Text: #{user} ist nicht im Kurs #{display tid}-#{csh} angemeldet. AddCorrector: Zusätzlicher Korrektor CorrectorExists user@Text: #{user} ist bereits als Korrektor eingetragen -SheetCorrectorsTitle tid@TermIdentifier courseShortHand@Text sheetName@Text: Korrektoren für #{termToText tid}-#{courseShortHand} #{sheetName} +SheetCorrectorsTitle tid@TermId courseShortHand@Text sheetName@Text: Korrektoren für #{display tid}-#{courseShortHand} #{sheetName} CountTutProp: Tutorien zählen gegen Proportion Corrector: Korrektor Correctors: Korrektoren @@ -108,7 +112,7 @@ HomeHeading: Aktuelle Termine ProfileHeading: Benutzerprofil und Einstellungen ProfileDataHeading: Gespeicherte Benutzerdaten -NumCourses n@Int64: #{tshow n} Kurse +NumCourses n@Int64: #{display n} Kurse CloseAlert: Schliessen Name: Name @@ -120,11 +124,6 @@ Ident: Identifizierung Settings: Individuelle Benutzereinstellungen SettingsUpdate: Einstellungen wurden gespeichert. -SheetExercise: Aufgabenstellung -SheetHint: Hinweise -SheetSolution: Lösung -SheetMarking: Korrekturhinweise - MultiFileUploadInfo: (Mehrere Dateien mit Shift oder Strg auswählen) NrColumn: Nr @@ -144,4 +143,4 @@ RemovedCorrections num@Int64: Korrektur-Daten wurden von #{display num} Abgaben UpdatedAssignedCorrectorsAuto num@Int64: #{display num} Abgaben wurden unter den Korrektoren aufgeteilt. CouldNotAssignCorrectorsAuto num@Int64: #{display num} Abgaben konnten nicht automatisch zugewiesen werden: -CorrectionsUploaded num@Int64: #{display num} Korrekturen wurden gespeichert: \ No newline at end of file +CorrectionsUploaded num@Int64: #{display num} Korrekturen wurden gespeichert: diff --git a/src/Foundation.hs b/src/Foundation.hs index 8f466ef20..c3991f64d 100644 --- a/src/Foundation.hs +++ b/src/Foundation.hs @@ -607,6 +607,19 @@ instance YesodBreadcrumbs UniWorX where -- Others breadcrumb _ = return ("Uni2work", Nothing) -- Default is no breadcrumb at all +submissionList :: TermId -> Text -> Text -> UserId -> DB [E.Value SubmissionId] +submissionList tid csh shn uid = E.select . E.from $ \(course `E.InnerJoin` sheet `E.InnerJoin` submission `E.InnerJoin` submissionUser) -> do + E.on $ submissionUser E.^. SubmissionUserSubmission E.==. submission E.^. SubmissionId + E.on $ submission E.^. SubmissionSheet E.==. sheet E.^. SheetId + E.on $ sheet E.^. SheetCourse E.==. course E.^. CourseId + + E.where_ $ submissionUser E.^. SubmissionUserUser E.==. E.val uid + E.&&. sheet E.^. SheetName E.==. E.val shn + E.&&. course E.^. CourseShorthand E.==. E.val csh + E.&&. course E.^. CourseTerm E.==. E.val tid + + return $ submission E.^. SubmissionId + pageActions :: Route UniWorX -> [MenuTypes] pageActions (CourseR tid csh CShowR) = [ PageActionPrime $ MenuItem @@ -657,13 +670,21 @@ pageActions (CSheetR tid csh shn SShowR) = { menuItemLabel = "Abgabe anlegen" , menuItemIcon = Nothing , menuItemRoute = CSheetR tid csh shn SubmissionNewR - , menuItemAccessCallback' = return True -- TODO: check that no submission already exists + , menuItemAccessCallback' = runDB . maybeT (return False) $ do + uid <- MaybeT $ liftHandlerT maybeAuthId + submissions <- lift $ submissionList tid csh shn uid + guard $ null submissions + return True } , PageActionPrime $ MenuItem { menuItemLabel = "Abgabe ansehen" , menuItemIcon = Nothing , menuItemRoute = CSheetR tid csh shn SubmissionOwnR - , menuItemAccessCallback' = return True -- TODO: check that a submission already exists + , menuItemAccessCallback' = runDB . maybeT (return False) $ do + uid <- MaybeT $ liftHandlerT maybeAuthId + submissions <- lift $ submissionList tid csh shn uid + guard . not $ null submissions + return True } , PageActionPrime $ MenuItem { menuItemLabel = "Korrektoren" @@ -719,7 +740,7 @@ pageActions (HomeR) = -- , NavbarAside $ MenuItem { menuItemLabel = "AdminDemo" - , menuItemIcon = Nothing + , menuItemIcon = Just "book" , menuItemRoute = AdminTestR , menuItemAccessCallback' = return True } diff --git a/src/Handler/Course.hs b/src/Handler/Course.hs index 51b6c8a82..3ecf90e58 100644 --- a/src/Handler/Course.hs +++ b/src/Handler/Course.hs @@ -174,7 +174,6 @@ courseEditHandler isGet course = do , cfShort = csh , cfTerm = tid })) -> do -- create new course - let tident = unTermKey tid now <- liftIO getCurrentTime insertOkay <- runDB $ insertUnique $ Course { courseName = cfName res @@ -195,17 +194,16 @@ courseEditHandler isGet course = do runDB $ do insert_ $ CourseEdit aid now cid insert_ $ Lecturer aid cid - addMessageI "info" $ MsgCourseNewOk tident csh + addMessageI "info" $ MsgCourseNewOk tid csh redirect $ TermCourseListR tid Nothing -> - addMessageI "danger" $ MsgCourseNewDupShort tident csh + addMessageI "danger" $ MsgCourseNewDupShort tid csh (FormSuccess res@( CourseForm { cfCourseId = Just cid , cfShort = csh , cfTerm = tid })) -> do -- edit existing course - let tident = unTermKey tid now <- liftIO getCurrentTime -- addMessage "debug" [shamlet| #{show res}|] runDB $ do @@ -215,7 +213,7 @@ courseEditHandler isGet course = do (Just oldCourse) -> do -- existing <- getBy $ CourseTermShort tid csh -- if ((entityKey <$> existing) /= Just cid) - -- then addMessageI "danger" $ MsgCourseEditDupShort tident csh + -- then addMessageI "danger" $ MsgCourseEditDupShort tid csh -- else do -- addMessage "debug" $ fromMaybe [shamlet|No description given.|] $ cfDesc res -- update cid @@ -249,9 +247,9 @@ courseEditHandler isGet course = do insert_ $ CourseEdit aid now cid -- if (isNothing updOkay) -- then do - addMessageI "success" $ MsgCourseEditOk tident csh + addMessageI "success" $ MsgCourseEditOk tid csh -- redirect $ TermCourseListR tid --- else addMessageI "danger" $ MsgCourseEditDupShort tident csh +-- else addMessageI "danger" $ MsgCourseEditDupShort tid csh (FormFailure _) -> addMessageI "warning" MsgInvalidInput (FormMissing) | isGet -> return () diff --git a/src/Handler/Profile.hs b/src/Handler/Profile.hs index c21527b77..b6639a11d 100644 --- a/src/Handler/Profile.hs +++ b/src/Handler/Profile.hs @@ -31,7 +31,7 @@ makeSettingForm template = identForm FIDsettings $ \html -> do <$> areq (natFieldI $ MsgNatField "Favoriten") -- TODO: natFieldI not working here (fslpI MsgFavoriten "Anzahl Favoriten") (stgMaxFavourties <$> template) <*> areq (selectFieldList themeList) - (fslI MsgTheme ) (stgTheme <$> template) + (fslpI MsgTheme "theme-select" ) (stgTheme <$> template) -- TODO: pass theme-select as id-attribute or similar. <* submitButton return (result, widget) -- no validation required here @@ -70,7 +70,7 @@ getProfileR = do E.where_ $ adright ^. UserAdminUser E.==. E.val uid E.on $ adright ^. UserAdminSchool E.==. school ^. SchoolId return (school ^. SchoolShorthand) - ) + ) <*> (E.select $ E.from $ \(lecright `E.InnerJoin` school) -> do E.where_ $ lecright ^. UserLecturerUser E.==. E.val uid diff --git a/src/Handler/Sheet.hs b/src/Handler/Sheet.hs index ddf39d970..3da6d34e7 100644 --- a/src/Handler/Sheet.hs +++ b/src/Handler/Sheet.hs @@ -592,7 +592,7 @@ getSCorrR, postSCorrR :: TermId -> Text -- ^ Sheet name -> Handler Html postSCorrR = getSCorrR -getSCorrR tid@(unTermKey -> tident) csh shn = do +getSCorrR tid csh shn = do Entity shid Sheet{..} <- runDB $ fetchSheet tid csh shn ((res,formWidget), formEnctype) <- runFormPost . identForm FIDcorrectors . renderAForm FormStandard $ formToAForm (correctorForm shid) <* submitButton @@ -606,10 +606,10 @@ getSCorrR tid@(unTermKey -> tident) csh shn = do FormMissing -> return () let - formTitle = MsgSheetCorrectorsTitle tident csh shn + formTitle = MsgSheetCorrectorsTitle tid csh shn formText = Nothing :: Maybe (SomeMessage UniWorX) actionUrl = CSheetR tid csh shn SCorrR -- actionUrl = CSheetR tid csh shn SShowR defaultLayout $ do - setTitleI $ MsgSheetCorrectorsTitle tident csh shn + setTitleI $ MsgSheetCorrectorsTitle tid csh shn $(widgetFile "formPageI18n") diff --git a/src/Handler/Term.hs b/src/Handler/Term.hs index d847acbd3..86c24f955 100644 --- a/src/Handler/Term.hs +++ b/src/Handler/Term.hs @@ -121,14 +121,15 @@ termEditHandler term = do ((result, formWidget), formEnctype) <- runFormPost $ newTermForm term case result of (FormSuccess res) -> do + let tid = TermKey $ termName res -- term <- runDB $ get $ TermKey termName - runDB $ repsert (TermKey $ termName res) res + runDB $ repsert tid res -- VOR INTERNATIONALISIERUNG: -- let tid = termToText $ termName res -- let msg = "Semester " `T.append` tid `T.append` " erfolgreich editiert." -- addMessage "success" [shamlet| #{msg} |] -- MIT INTERNATIONALISIERUNG: - addMessageI "success" $ MsgTermEdited $ termName res + addMessageI "success" $ MsgTermEdited tid redirect TermShowR (FormMissing ) -> return () (FormFailure _) -> addMessageI "warning" MsgInvalidInput diff --git a/src/Model/Types.hs b/src/Model/Types.hs index 526c88f7b..ce2057442 100644 --- a/src/Model/Types.hs +++ b/src/Model/Types.hs @@ -207,7 +207,7 @@ termFromRational n = TermIdentifier{..} season | remainder == 0 = Summer | otherwise = Winter - + instance PersistField TermIdentifier where toPersistValue = PersistRational . termToRational fromPersistValue (PersistRational t) = Right $ termFromRational t @@ -231,20 +231,20 @@ instance ToJSON TermIdentifier where instance FromJSON TermIdentifier where parseJSON = withText "Term" $ either (fail . Text.unpack) return . termFromText - + {- Must be defined in a later module: termField :: Field (HandlerT UniWorX IO) TermIdentifier termField = checkMMap (return . termFromText) termToText textField - -- TODO: this is too simple and inconvenient, use selector and year picker --} + -- TODO: this is too simple and inconvenient, use selector and year picker +-} withinTerm :: Day -> TermIdentifier -> Bool time `withinTerm` term = timeYear `mod` 100 == termYear `mod` 100 - where - timeYear = fst3 $ toGregorian time - termYear = year term - + where + timeYear = fst3 $ toGregorian time + termYear = year term + data StudyFieldType = FieldPrimary | FieldSecondary deriving (Eq, Ord, Enum, Show, Read, Bounded) @@ -254,9 +254,10 @@ derivePersistField "StudyFieldType" -- Skins / Themes data Theme --Simply add Themes to this type only. CamelCase will be converted to "-lower" = Default + | Lavender | NeutralBlue - | AberdeenReds - | MintGreen + | AberdeenReds -- e.g. turned into "theme--aberdeen-reds" + | MossGreen | SkyLove deriving (Eq,Ord,Bounded,Enum) @@ -280,5 +281,3 @@ instance Default Theme where -} derivePersistField "Theme" - - diff --git a/templates/course.hamlet b/templates/course.hamlet index 4f53eba07..858a48b74 100644 --- a/templates/course.hamlet +++ b/templates/course.hamlet @@ -1,40 +1,44 @@ -0
| Fakultät/Institut - | - #{schoolName school} + | Fakultät/Institut + |
+ | Beschreibung
- |
- #{descr}
+ | Beschreibung
+ |
+ | Website
- |
- #{link}
+ | Website
+ |
+ | Teilnehmer
- |
- #{participants}
- $maybe capacity <- courseCapacity course
- \ von #{capacity}
- | Anmeldezeitraum
- |
- $maybe regFrom <- courseRegisterFrom course
- #{formatTimeGerWD regFrom}
- $maybe regTo <- courseRegisterTo course
- \ bis #{formatTimeGerWD regTo}
-
- |
- |
- $if registrationOpen
- |
+ Teilnehmer
+ |
+ | Anmeldezeitraum
+ |
+ |
+ |
+ | |
|---|