From 13b575b952d61b442e8c6108f318ba62f739c792 Mon Sep 17 00:00:00 2001 From: SJost Date: Fri, 3 Aug 2018 11:46:13 +0200 Subject: [PATCH] Course List features Course Descriptions now. fixes issue #80 now. fix #80 --- ChangeLog.md | 1 + src/Handler/Course.hs | 32 +++++++++++++++++++++++----- src/Handler/Utils/Templates.hs | 15 ++++++++++--- templates/widgets/modalStatic.hamlet | 2 ++ 4 files changed, 42 insertions(+), 8 deletions(-) create mode 100644 templates/widgets/modalStatic.hamlet diff --git a/ChangeLog.md b/ChangeLog.md index a114345ce..c0392847e 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -1,6 +1,7 @@ * Version 01.08.2018 Verbesserter Campus-Login + (Ersatz einer C-Bibliothek mit undokumentierter Abhängigkeit durch selbst entwickelten Haskell-Code erlaubt nun auch Umlaute.) * Version 31.07.2018 diff --git a/src/Handler/Course.hs b/src/Handler/Course.hs index cfc236176..60c2af5a3 100644 --- a/src/Handler/Course.hs +++ b/src/Handler/Course.hs @@ -41,18 +41,37 @@ colCourse = sortable (Just "course") (i18nCell MsgCourse) anchorCell (CourseR courseTerm courseShorthand CShowR) [whamlet|#{display courseName}|] +colCourseDescr :: IsDBTable m a => Colonnade _ CourseTableData (DBCell m a) +colCourseDescr = sortable (Just "course") (i18nCell MsgCourse) + $ \DBRow{ dbrOutput=(Entity cid Course{..}, _, _) } -> mappend + ( anchorCell (CourseR courseTerm courseShorthand CShowR) [whamlet|#{display courseName}|] ) + ( case courseDescription of + Nothing -> mempty + (Just descr) -> cell [whamlet| ^{modalStatic descr} |] + ) + colDescription :: IsDBTable m a => Colonnade _ CourseTableData (DBCell m a) colDescription = sortable Nothing (i18nCell MsgCourseDescription) $ \DBRow{ dbrOutput=(Entity cid Course{..}, _, _) } -> case courseDescription of - Nothing -> cell mempty - (Just d)-> cell [whamlet|

|] + Nothing -> mempty + (Just descr) -> cell $ modalStatic descr colCShort :: IsDBTable m a => Colonnade _ CourseTableData (DBCell m a) colCShort = sortable (Just "cshort") (i18nCell MsgCourseShort) $ \DBRow{ dbrOutput=(Entity cid Course{..}, _, _) } -> anchorCell (CourseR courseTerm courseShorthand CShowR) [whamlet|#{display courseShorthand}|] +colCShortDescr :: IsDBTable m a => Colonnade _ CourseTableData (DBCell m a) +colCShortDescr = sortable (Just "cshort") (i18nCell MsgCourseShort) + $ \DBRow{ dbrOutput=(Entity cid Course{..}, _, _) } -> mappend + ( anchorCell (CourseR courseTerm courseShorthand CShowR) [whamlet|#{display courseShorthand}|] ) + ( case courseDescription of + Nothing -> mempty + (Just descr) -> cell + [whamlet| ^{modalStatic descr} |] + ) + colTerm :: IsDBTable m a => Colonnade _ CourseTableData (DBCell m a) colTerm = sortable (Just "term") (i18nCell MsgTerm) $ \DBRow{ dbrOutput=(Entity cid Course{..}, _, _) } -> @@ -144,10 +163,9 @@ getCourseListR :: Handler Html getCourseListR = do -- TODO: Suchfunktion für Kurse und Kürzel!!! muid <- maybeAuthId let colonnade = widgetColonnade $ mconcat - [ colCourse + [ colCourseDescr , colCShort , colTerm --- , colDescription -- does not work as intended issue #80 , maybe mempty (const colRegistered) muid ] whereClause = const $ E.val True @@ -158,6 +176,10 @@ getCourseListR = do -- TODO: Suchfunktion für Kurse und Kürzel!!! setTitleI MsgCourseListTitle [whamlet|TODO: Such-/Filterfunktion hier einbauen|] -- TODO $(widgetFile "courses") + [whamlet| + ^{modal "#UNIQUE_ID_98765" (Just "Test Inhalt für Modal")} +

? + |] getTermCurrentR :: Handler Html getTermCurrentR = do @@ -173,7 +195,7 @@ getTermCourseListR tid = do muid <- maybeAuthId let colonnade = widgetColonnade $ mconcat [ dbRow - , colCShort + , colCShortDescr , colRegFrom , colRegTo , colParticipants diff --git a/src/Handler/Utils/Templates.hs b/src/Handler/Utils/Templates.hs index 8bae783b0..e29d9e3f9 100644 --- a/src/Handler/Utils/Templates.hs +++ b/src/Handler/Utils/Templates.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE NoImplicitPrelude, TemplateHaskell #-} +{-# LANGUAGE NoImplicitPrelude, TemplateHaskell, QuasiQuotes #-} module Handler.Utils.Templates where @@ -7,8 +7,17 @@ import Import.NoFoundation lipsum :: WidgetT site IO () lipsum = $(widgetFile "widgets/lipsum") -modal :: [Char] -> Maybe [Char] -> WidgetT site IO () -modal modalTrigger (Just modalContent) = do +modalStatic :: Html -> WidgetT site IO () +modalStatic modalContent = do + uniqueId <- newIdent + let modalTrigger = cons '#' uniqueId -- SJ: I am confused why this is needed here? + modalId :: Int32 + modalId = 13 + $(widgetFile "widgets/modalStatic") + [whamlet|
?|] -- SJ: confused why ## is needed here either? + +modal :: Text -> Maybe [Char] -> WidgetT site IO () +modal modalTrigger (Just modalContent) = do -- WARNING: ModalContent should not have length 11. SJ: This is possibly bad. See Template! let modalId :: Int32 modalId = 13 diff --git a/templates/widgets/modalStatic.hamlet b/templates/widgets/modalStatic.hamlet new file mode 100644 index 000000000..a9b8e3587 --- /dev/null +++ b/templates/widgets/modalStatic.hamlet @@ -0,0 +1,2 @@ +
+ #{modalContent}