diff --git a/messages/de.msg b/messages/de.msg index 933d16a9b..8f5ef4442 100644 --- a/messages/de.msg +++ b/messages/de.msg @@ -11,12 +11,16 @@ SummerTerm year@Integer: Sommersemester #{tshow year} WinterTerm year@Integer: Wintersemester #{tshow year}/#{tshow $ succ year} PSLimitNonPositive: “pagesize” muss größer als null sein Page n@Int64: #{tshow n} -TermEdited tid@TermIdentifier: Semester #{termToText tid} erfolgreich editiert. -TermNewTitle: Semester editiere/anlegen. + +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. +TermNewTitle: Semester editieren/anlegen. InvalidInput: Eingaben bitte korrigieren. Term: Semester TermPlaceholder: W/S + vierstellige Jahreszahl -TermEditHeading: Semester editieren/anlegen LectureStart: Beginn Vorlesungen @@ -26,20 +30,25 @@ CourseNewOk tid@TermIdentifier courseShortHand@Text: Kurs #{termToText ti 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. -TermCourseListHeading tid@TermIdentifier: Kursübersicht #{termToText tid} -TermCourseListTitle tid@TermIdentifier: Kurse #{termToText tid} -CourseEditHeading: Kurs editieren/anlegen +FFSheetName: Name +TermCourseListHeading tk@TermId: Kursübersicht #{display tk} +TermCourseListTitle tk@TermId: Kurse #{display tk} +CourseNewHeading: Neuen Kurs anlegen +CourseEditHeading tk@TermId courseShortHand@Text: Kurs #{display tk}-#{courseShortHand} editieren CourseEditTitle: Kurs editieren/anlegen Sheet: Blatt -SheetNewOk tid@TermIdentifier courseShortHand@Text sheetName@Text: Neues Übungsblatt #{sheetName} wurde im Kurs #{termToText tid}-#{courseShortHand} erfolgreich erstellt. -SheetTitle tid@TermIdentifier courseShortHand@Text sheetName@Text: #{termToText tid}-#{courseShortHand} #{sheetName} -SheetTitleNew tid@TermIdentifier courseShortHand@Text : #{termToText tid}-#{courseShortHand}: Neues Übungsblatt -SheetEditOk tid@TermIdentifier courseShortHand@Text sheetName@Text: Übungsblatt #{sheetName} aus Kurs #{termToText tid}-#{courseShortHand} wurde gespeichert. -SheetNameDup tid@TermIdentifier courseShortHand@Text sheetName@Text: Es gibt bereits ein Übungsblatt #{sheetName} in diesem Kurs #{termToText tid}-#{courseShortHand}. -SheetDelTitle tid@TermIdentifier courseShortHand@Text sheetName@Text: Übungsblatt #{sheetName} wirklich aus Kurs #{termToText tid}-#{courseShortHand} herauslöschen? +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 tid@TermIdentifier courseShortHand@Text sheetName@Text: #{termToText tid}-#{courseShortHand}: Übungsblatt #{sheetName} gelöscht. +SheetDelOk tk@TermId courseShortHand@Text sheetName@Text: #{display tk}-#{courseShortHand}: Übungsblatt #{sheetName} gelöscht. Deadline: Abgabe Done: Eingereicht @@ -67,7 +76,7 @@ Submission: Abgabenummer SubmissionWrongSheet: Abgabenummer gehört nicht zum angegebenen Übungsblatt. SubmissionAlreadyExists: Sie haben bereits eine Abgabe zu diesem Übungsblatt. -SubmissionTitle tid@TermIdentifier courseShortHand@Text sheetName@Text: #{termToText tid}-#{courseShortHand} #{sheetName}: Abgabe editieren/anlegen +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 @@ -78,7 +87,7 @@ CourseCorrectionsTitle: Korrekturen für diesen Kurs EMail: E-Mail EMailUnknown email@Text: E-Mail #{email} gehört zu keinem bekannten Benutzer. -NotAParticipant user@Text tid@TermIdentifier csh@Text: #{user} ist nicht im Kurs #{termToText tid}-#{csh} angemeldet. +NotAParticipant user@Text tk@TermId csh@Text: #{user} ist nicht im Kurs #{display tk}-#{csh} angemeldet. AddCorrector: Zusätzlicher Korrektor CorrectorExists user@Text: #{user} ist bereits als Korrektor eingetragen @@ -94,10 +103,10 @@ CorrectorsUpdated: Korrektoren erfolgreich aktualisiert CorrectorsPlaceholder: Korrektoren... CorrectorsDefaulted: Korrektoren-Liste wurde aus bisherigen Übungsblättern diesen Kurses generiert. Es sind keine Daten gespeichert. +Users: Benutzer HomeHeading: Aktuelle Termine ProfileHeading: Benutzerprofil und Einstellungen ProfileDataHeading: Gespeicherte Benutzerdaten -TermsHeading: Semesterübersicht NumCourses n@Int64: #{tshow n} Kurse CloseAlert: Schliessen diff --git a/src/Foundation.hs b/src/Foundation.hs index e07c059d2..7fbf37604 100644 --- a/src/Foundation.hs +++ b/src/Foundation.hs @@ -578,36 +578,42 @@ instance Yesod UniWorX where -- Define breadcrumbs. instance YesodBreadcrumbs UniWorX where - breadcrumb TermShowR = return ("Semester", Just HomeR) - breadcrumb TermEditR = return ("Neu", Just TermShowR) - breadcrumb (TermEditExistR _) = return ("Editieren", Just TermShowR) + breadcrumb (AuthR _) = return ("Login" , Just HomeR) + breadcrumb HomeR = return ("Uni2work", Nothing) + breadcrumb UsersR = return ("Benutzer", Just HomeR) + breadcrumb AdminTestR = return ("Test" , Just HomeR) + breadcrumb (AdminUserR _) = return ("Users" , Just UsersR) - breadcrumb CourseListR = return ("Kurs", Just HomeR) - breadcrumb (TermCourseListR term) = return (toPathPiece term, Just TermShowR) - breadcrumb (CourseR term course CShowR) = return (course, Just $ TermCourseListR term) - breadcrumb CourseNewR = return ("Neu", Just CourseListR) - breadcrumb (CourseR tid csh CEditR) = return ("Editieren", Just $ CourseR tid csh CShowR) - breadcrumb (CourseR tid csh CourseCorrectionsR) = return ("Abgaben", Just $ CourseR tid csh CShowR) + breadcrumb ProfileR = return ("Profile" , Just HomeR) + breadcrumb ProfileDataR = return ("Data" , Just ProfileR) + breadcrumb TermShowR = return ("Semester" , Just HomeR) + breadcrumb TermCurrentR = return ("Aktuell" , Just TermShowR) + breadcrumb TermEditR = return ("Neu" , Just TermCurrentR) + breadcrumb (TermEditExistR tid) = return ("Editieren" , Just $ TermCourseListR tid) + breadcrumb (TermCourseListR term) = return (display term, Just TermShowR) + + breadcrumb CourseListR = return ("Kurs" , Just HomeR) + breadcrumb CourseNewR = return ("Neu" , Just CourseListR) + breadcrumb (CourseR tid csh CShowR) = return (csh , Just $ TermCourseListR tid) + -- (CourseR tid csh CRegisterR) -- is POST only + breadcrumb (CourseR tid csh CEditR) = return ("Editieren", Just $ CourseR tid csh CShowR) breadcrumb (CourseR tid csh SheetListR) = return ("Übungen",Just $ CourseR tid csh CShowR) breadcrumb (CourseR tid csh SheetNewR ) = return ("Neu", Just $ CourseR tid csh SheetListR) + breadcrumb (CSheetR tid csh shn SShowR) = return (shn, Just $ CourseR tid csh SheetListR) + -- (CSheetR tid csh shn SFileR) -- just for Downloads breadcrumb (CSheetR tid csh shn SEditR) = return ("Edit", Just $ CSheetR tid csh shn SShowR) breadcrumb (CSheetR tid csh shn SDelR ) = return ("DELETE", Just $ CSheetR tid csh shn SShowR) breadcrumb (CSheetR tid csh shn SCorrR) = return ("Korrektoren", Just $ CSheetR tid csh shn SShowR) breadcrumb (CSheetR tid csh shn SSubsR) = return ("Abgaben", Just $ CSheetR tid csh shn SShowR) + breadcrumb (CSheetR tid csh shn SubmissionNewR) = return ("Abgabe", Just $ CSheetR tid csh shn SShowR) + breadcrumb (CSheetR tid csh shn SubmissionOwnR) = return ("Abgabe", Just $ CSheetR tid csh shn SShowR) breadcrumb (CSheetR tid csh shn (SubmissionR _)) = return ("Abgabe", Just $ CSheetR tid csh shn SShowR) - + -- Deprecated below breadcrumb SubmissionListR = return ("Abgaben", Just HomeR) - - breadcrumb CorrectionsR = return ("Korrekturen", Just HomeR) - - - breadcrumb HomeR = return ("UniWorkY", Nothing) - breadcrumb (AuthR _) = return ("Login", Just HomeR) - breadcrumb ProfileR = return ("Profile", Just HomeR) - breadcrumb ProfileDataR = return ("Data", Just ProfileR) - breadcrumb _ = return ("home", Nothing) + -- Others + breadcrumb _ = return ("Uni2work", Nothing) -- Default is no breadcrumb at all pageActions :: Route UniWorX -> [MenuTypes] pageActions (CourseR tid csh CShowR) = @@ -688,13 +694,19 @@ pageActions TermShowR = , menuItemAccessCallback' = return True } ] -pageActions (TermCourseListR _) = +pageActions (TermCourseListR tid) = [ PageActionPrime $ MenuItem { menuItemLabel = "Neuen Kurs anlegen" , menuItemIcon = Just "book" , menuItemRoute = CourseNewR , menuItemAccessCallback' = return True } + , PageActionPrime $ MenuItem + { menuItemLabel = "Semster editieren" + , menuItemIcon = Nothing + , menuItemRoute = TermEditExistR tid + , menuItemAccessCallback' = return True + } ] pageActions (ProfileR) = [ PageActionPrime $ MenuItem @@ -729,26 +741,59 @@ i18nHeading msg = liftWidgetT $ toWidget =<< getMessageRender <*> pure msg pageHeading :: Route UniWorX -> Maybe Widget pageHeading HomeR = Just $ i18nHeading MsgHomeHeading +pageHeading UsersR + = Just $ i18nHeading MsgUsers pageHeading (AdminTestR) = Just $ [whamlet|Internal Code Demonstration Page|] +pageHeading (AdminUserR _) + = Just $ [whamlet|User Display for Admin|] + pageHeading ProfileR = Just $ i18nHeading MsgProfileHeading pageHeading ProfileDataR = Just $ i18nHeading MsgProfileDataHeading + pageHeading TermShowR = Just $ i18nHeading MsgTermsHeading +pageHeading TermCurrentR + = Just $ i18nHeading MsgTermCurrent pageHeading TermEditR = Just $ i18nHeading MsgTermEditHeading +pageHeading (TermEditExistR tid) + = Just $ i18nHeading $ MsgTermEditTid tid pageHeading (TermCourseListR tid) - = Just . i18nHeading . MsgTermCourseListHeading $ unTermKey tid + = Just . i18nHeading . MsgTermCourseListHeading $ tid + +-- CourseListR -- just a redirect to TermCurrentR pageHeading CourseNewR - = Just $ i18nHeading MsgCourseEditHeading + = Just $ i18nHeading MsgCourseNewHeading pageHeading (CourseR tid csh CShowR) = Just $ do Entity _ Course{..} <- handlerToWidget . runDB . getBy404 $ CourseTermShort tid csh toWidget courseName pageHeading CorrectionsR = Just $ i18nHeading MsgCorrectionsTitle +-- (CourseR tid csh CRegisterR) -- just for POST +pageHeading (CourseR tid csh CEditR) + = Just $ i18nHeading $ MsgCourseEditHeading tid csh +pageHeading (CourseR tid csh SheetListR) + = Just $ i18nHeading $ MsgSheetList tid csh +pageHeading (CourseR tid csh SheetNewR) + = Just $ i18nHeading $ MsgSheetNewHeading tid csh +pageHeading (CSheetR tid csh shn SShowR) + = Just $ i18nHeading $ MsgSheetTitle tid csh shn +-- (CSheetR tid csh shn SFileR) -- just for Downloads +pageHeading (CSheetR tid csh shn SEditR) + = Just $ i18nHeading $ MsgSheetEditHead tid csh shn +pageHeading (CSheetR tid csh shn SDelR) + = Just $ i18nHeading $ MsgSheetDelHead tid csh shn +pageHeading (CSheetR tid csh shn SubmissionNewR) + = Just $ i18nHeading $ MsgSubmissionEditHead tid csh shn +pageHeading (CSheetR tid csh shn SubmissionOwnR) + = Just $ i18nHeading $ MsgSubmissionEditHead tid csh shn +pageHeading (CSheetR tid csh shn (SubmissionR _)) -- TODO: Rethink this one! + = Just $ i18nHeading $ MsgSubmissionEditHead tid csh shn + -- TODO: add headings for more single course- and single term-pages pageHeading _ = Nothing diff --git a/src/Handler/Admin.hs b/src/Handler/Admin.hs index 1fc340912..d3e5d2353 100644 --- a/src/Handler/Admin.hs +++ b/src/Handler/Admin.hs @@ -46,7 +46,7 @@ getAdminTestR :: Handler Html -- Demo Page. Referenzimplementierungen sollte hie getAdminTestR = do (btnWdgt, btnEnctype) <- generateFormPost (buttonForm :: Form CreateButton) defaultLayout $ do - -- setTitle "UniWorkY Admin Testpage" + -- setTitle "Uni2work Admin Testpage" $(widgetFile "adminTest") postAdminTestR :: Handler Html diff --git a/src/Handler/Course.hs b/src/Handler/Course.hs index a8728f2c9..51b6c8a82 100644 --- a/src/Handler/Course.hs +++ b/src/Handler/Course.hs @@ -25,7 +25,7 @@ import qualified Data.UUID.Cryptographic as UUID getCourseListR :: Handler TypedContent -getCourseListR = redirect TermShowR +getCourseListR = redirect TermCurrentR getTermCurrentR :: Handler Html getTermCurrentR = do @@ -33,6 +33,9 @@ getTermCurrentR = do case fromNullable termIds of Nothing -> notFound (Just (maximum -> tid)) -> getTermCourseListR tid + -- why not "redirect $ TermCourseListR tid" + -- Would save us breadcrumbs, headings, etc.? + getTermCourseListR :: TermId -> Handler Html getTermCourseListR tidini = do @@ -73,7 +76,7 @@ getTermCourseListR tidini = do ] let coursesTable = encodeWidgetTable tableSortable colonnadeTerms courses defaultLayout $ do - setTitleI . MsgTermCourseListTitle $ unTermKey tidini + setTitleI . MsgTermCourseListTitle $ tidini $(widgetFile "courses") getCShowR :: TermId -> Text -> Handler Html diff --git a/src/Handler/Home.hs b/src/Handler/Home.hs index 464b56659..079c703ee 100644 --- a/src/Handler/Home.hs +++ b/src/Handler/Home.hs @@ -169,6 +169,6 @@ homeUser uid = do } defaultLayout $ do - -- setTitle "Willkommen zum Uniworky Test!" + -- setTitle "Willkommen zum Uni2work Test!" $(widgetFile "homeUser") $(widgetFile "dsgvDisclaimer") diff --git a/src/Handler/Sheet.hs b/src/Handler/Sheet.hs index 94d73ea80..fd44994ff 100644 --- a/src/Handler/Sheet.hs +++ b/src/Handler/Sheet.hs @@ -322,7 +322,6 @@ postSEditR = getSEditR handleSheetEdit :: TermId -> Text -> Maybe SheetId -> Maybe SheetForm -> (Sheet -> YesodDB UniWorX (Maybe SheetId)) -> Handler Html handleSheetEdit tid csh msId template dbAction = do - let tident = unTermKey tid let mbshn = sfName <$> template aid <- requireAuthId ((res,formWidget), formEnctype) <- runFormPost $ makeSheetForm msId template @@ -346,20 +345,20 @@ handleSheetEdit tid csh msId template dbAction = do } mbsid <- dbAction newSheet case mbsid of - Nothing -> False <$ addMessageI "danger" (MsgSheetNameDup tident csh sfName) + Nothing -> False <$ addMessageI "danger" (MsgSheetNameDup tid csh sfName) (Just sid) -> do -- save files in DB: whenIsJust sfSheetF $ insertSheetFile' sid SheetExercise whenIsJust sfHintF $ insertSheetFile sid SheetHint whenIsJust sfSolutionF $ insertSheetFile sid SheetSolution insert_ $ SheetEdit aid actTime sid - addMessageI "info" $ MsgSheetEditOk tident csh sfName + addMessageI "info" $ MsgSheetEditOk tid csh sfName return True when saveOkay $ redirect $ CSheetR tid csh sfName SShowR -- redirect must happen outside of runDB (FormFailure msgs) -> forM_ msgs $ (addMessage "warning") . toHtml _ -> return () - let pageTitle = maybe (MsgSheetTitleNew tident csh) - (MsgSheetTitle tident csh) mbshn - let formTitle = pageTitle + let pageTitle = maybe (MsgSheetTitleNew tid csh) + (MsgSheetTitle tid csh) mbshn +-- let formTitle = pageTitle -- no longer used in template let formText = Nothing :: Maybe UniWorXMessage actionUrl <- fromMaybe (CourseR tid csh SheetNewR) <$> getCurrentRoute defaultLayout $ do @@ -370,24 +369,23 @@ handleSheetEdit tid csh msId template dbAction = do getSDelR :: TermId -> Text -> Text -> Handler Html getSDelR tid csh shn = do - let tident = unTermKey tid ((result,formWidget), formEnctype) <- runFormPost (buttonForm :: Form BtnDelete) case result of (FormSuccess BtnAbort) -> redirectUltDest $ CSheetR tid csh shn SShowR (FormSuccess BtnDelete) -> do runDB $ fetchSheetId tid csh shn >>= deleteCascade -- TODO: deleteCascade löscht aber nicht die hochgeladenen Dateien!!! - addMessageI "info" $ MsgSheetDelOk tident csh shn + addMessageI "info" $ MsgSheetDelOk tid csh shn redirect $ CourseR tid csh SheetListR _other -> do submissionno <- runDB $ do sid <- fetchSheetId tid csh shn count [SubmissionSheet ==. sid] - let formTitle = MsgSheetDelTitle tident csh shn + let formTitle = MsgSheetDelHead tid csh shn let formText = Just $ MsgSheetDelText submissionno let actionUrl = CSheetR tid csh shn SDelR defaultLayout $ do - setTitleI $ MsgSheetTitle tident csh shn + setTitleI $ MsgSheetTitle tid csh shn $(widgetFile "formPageI18n") postSDelR :: TermId -> Text -> Text -> Handler Html diff --git a/src/Handler/Submission.hs b/src/Handler/Submission.hs index d0f89786b..b4ccdfd76 100644 --- a/src/Handler/Submission.hs +++ b/src/Handler/Submission.hs @@ -187,7 +187,7 @@ submissionHelper tid csh shn (SubmissionMode mcid) = do let failmsgs = flip Map.foldMapWithKey participants $ \email -> \case Nothing -> [mr $ MsgEMailUnknown $ CI.original email] - (Just (_,False,_)) -> [mr $ MsgNotAParticipant (CI.original email) (unTermKey tid) csh] + (Just (_,False,_)) -> [mr $ MsgNotAParticipant (CI.original email) tid csh] (Just (_,_, True)) -> [mr $ MsgSubmissionAlreadyExistsFor (CI.original email)] _other -> mempty return $ if null failmsgs @@ -232,7 +232,7 @@ submissionHelper tid csh shn (SubmissionMode mcid) = do mArCid <- fmap ZIPArchiveName <$> traverse encrypt msmid - let pageTitle = MsgSubmissionTitle (unTermKey tid) csh shn + let pageTitle = MsgSubmissionEditHead tid csh shn let formTitle = pageTitle let formText = Nothing :: Maybe UniWorXMessage actionUrl <- Data.Maybe.fromJust <$> getCurrentRoute diff --git a/src/Handler/Utils/Form.hs b/src/Handler/Utils/Form.hs index 14ecd12f9..3d233f6f1 100644 --- a/src/Handler/Utils/Form.hs +++ b/src/Handler/Utils/Form.hs @@ -487,7 +487,8 @@ setNameClass fs gName gClass = fs { fsName= Just gName, fsAttrs=("class",gClass) setTooltip :: String -> FieldSettings site -> FieldSettings site setTooltip tt fs | null tt = fs { fsTooltip = Nothing } - | otherwise = fs { fsTooltip = Just $ fromString tt, fsAttrs=("info",fromString tt):(fsAttrs fs) } + | otherwise = fs { fsTooltip = Just $ fromString tt + , fsAttrs=("data-tooltip",fromString tt):(fsAttrs fs) } optionsPersistCryptoId :: forall site backend a msg. ( YesodPersist site diff --git a/src/Model/Types.hs b/src/Model/Types.hs index a269d1493..efa329e4a 100644 --- a/src/Model/Types.hs +++ b/src/Model/Types.hs @@ -5,7 +5,7 @@ {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE DeriveGeneric, DeriveDataTypeable #-} {-# LANGUAGE FlexibleInstances, MultiParamTypeClasses #-} - +{-- # LANGUAGE ExistentialQuantification #-} -- for DA type module Model.Types where @@ -92,6 +92,14 @@ instance DisplayAble SheetFileType where -- deprecated, see RenderMessage instan display SheetSolution = "Musterlösung" display SheetMarking = "Korrekturhinweise" +{- +data DA = forall a . (DisplayAble a) => DA a + +instance DisplayAble DA where + display (DA x) = display x +-} + + data ExamStatus = Attended | NoShow | Voided deriving (Show, Read, Eq, Ord, Enum, Bounded) derivePersistField "ExamStatus" @@ -244,6 +252,11 @@ instance Read Theme where -- generic Read-Instance for Show/Bounded | (Just t) <- (Map.lookup s readTheme) = [(t,"")] | otherwise = [(Default,"")] -- read shall always succeed +{- +instance Default Theme where + def = Default +-} + derivePersistField "Theme" diff --git a/templates/adminTest.hamlet b/templates/adminTest.hamlet index f3a48a134..66e2b891c 100644 --- a/templates/adminTest.hamlet +++ b/templates/adminTest.hamlet @@ -1,7 +1,23 @@ -
+
Diese interne Seite dient lediglich zum Testen diverser Funktionalitäten und zur Demonstration der verschiedenen Hilfsfunktionen/Module. diff --git a/templates/course.hamlet b/templates/course.hamlet index 6b2e77ab9..4f53eba07 100644 --- a/templates/course.hamlet +++ b/templates/course.hamlet @@ -1,4 +1,4 @@ -