diff --git a/messages/uniworx/categories/qualification/de-de-formal.msg b/messages/uniworx/categories/qualification/de-de-formal.msg index 90efbf2db..2e749c35c 100644 --- a/messages/uniworx/categories/qualification/de-de-formal.msg +++ b/messages/uniworx/categories/qualification/de-de-formal.msg @@ -4,6 +4,7 @@ QualificationDescription: Beschreibung QualificationValidDuration: Gültigkeitsdauer QualificationAuditDuration: Aufbewahrung Audit Log QualificationRefreshWithin: Erneurerungszeitraum +QualificationRefreshWithinTooltip: Zeitraum für Versand einer Benachrichtigung oder für automatischen Start des E-Lernens QualificationElearningStart: E-Lernen automatisch starten TableQualificationCountActive: Aktive TableQualificationCountActiveTooltip: Anzahl Personen mit momentan gültiger Qualifkation @@ -31,4 +32,5 @@ LmsResultInsert: Neues LMS Ergebnis LmsResultUpdate: LMS Ergebnis aktualisierung LmsResultCsvExceptionDuplicatedKey: CSV Import fand uneindeutigen Schlüssel LmsUserlistCsvExceptionDuplicatedKey: CSV Import fand uneindeutigen Schlüssel -LmsDirectUpload: Direkter Upload für automatisierte Systeme \ No newline at end of file +LmsDirectUpload: Direkter Upload für automatisierte Systeme +LmsErrorNoRefreshElearning: Fehler: E-Lernen wird nicht automatisch gestartet, da die Zeitspanne für den Erneurerungszeitraum nicht festgelegt wurde. \ No newline at end of file diff --git a/messages/uniworx/categories/qualification/en-eu.msg b/messages/uniworx/categories/qualification/en-eu.msg index b321ffbbd..4e8e31c18 100644 --- a/messages/uniworx/categories/qualification/en-eu.msg +++ b/messages/uniworx/categories/qualification/en-eu.msg @@ -4,6 +4,7 @@ QualificationDescription: Description QualificationValidDuration: Validity period QualificationAuditDuration: Audit log keept QualificationRefreshWithin: Refresh within +QualificationRefreshWithinTooltip: Period before expiry to send a notification or to start e-learning QualificationElearningStart: Start e-learning automatically TableQualificationCountActive: Active TableQualificationCountActiveTooltip: Number of currently valid qualifcation holders @@ -19,8 +20,8 @@ TableLmsReceived: Received TableLmsSuccess: Completed TableLmsFailed: Blocked CsvColumnLmsIdent: E-learning identifier, unique for each qualfication and user -CsvColumnLmsPin: PIN for E-learning access -CsvColumnLmsResetPin: Will the E-learning PIN be reset upon next synchronisation? +CsvColumnLmsPin: PIN for e-learning access +CsvColumnLmsResetPin: Will the e-learning PIN be reset upon next synchronisation? CsvColumnLmsDelete: Will the identifier be deleted from the E-learning platfrom upon next synchronisation? CsvColumnLmsStaff: Is the user an internal staff member? (Legacy, currently ignored) CsvColumnLmsSuccess: Timestamp of successful completion (UTC) @@ -31,4 +32,5 @@ LmsResultInsert: New LMS result LmsResultUpdate: Update of LMS result LmsResultCsvExceptionDuplicatedKey: CSV import with ambiguous key LmsUserlistCsvExceptionDuplicatedKey: CSV import with ambiguous key -LmsDirectUpload: Direct upload for automated Systems \ No newline at end of file +LmsDirectUpload: Direct upload for automated Systems +LmsErrorNoRefreshElearning: Error: E-learning will not be started automatically due to refresh-within time period not being set. \ No newline at end of file diff --git a/src/Handler/LMS.hs b/src/Handler/LMS.hs index d70078b70..2bcf8e23e 100644 --- a/src/Handler/LMS.hs +++ b/src/Handler/LMS.hs @@ -204,15 +204,15 @@ mkLmsTable qid = do ] dbtFilter = mconcat [ single $ fltrUserNameLink queryUser - , single $ fltrUserNameEmail queryUser + -- , single $ fltrUserNameEmail queryUser --("user" , FilterColumn . E.mkContainsFilterWith Just $ views (to queryUser) (E.^. UserDisplayName)) -- , ("email" , FilterColumn . E.mkContainsFilterWith Just $ views (to queryUser) (E.^. UserEmail)) -- , (csvLmsIdent , FilterColumn . E.mkContainsFilterWith LmsIdent $ views (to queryLmsResult) (E.^. LmsResultIdent)) -- , (csvLmsSuccess, FilterColumn . E.mkExactFilter $ views (to queryLmsResult) (E.^. LmsResultSuccess)) ] dbtFilterUI mPrev = mconcat - [ fltrUserNameLinkUI mPrev - , fltrUserNameEmailUI mPrev + [ fltrUserNameLinkHdrUI MsgTableLmsUser mPrev + -- , fltrUserNameEmailUI mPrev -- prismAForm (singletonFilter "user" . maybePrism _PathPiece) mPrev $ aopt (hoistField lift textField) (fslI MsgTableLmsUser) --, prismAForm (singletonFilter "email" . maybePrism _PathPiece) mPrev $ aopt (hoistField lift textField) (fslI MsgTableEmail) -- , prismAForm (singletonFilter csvLmsIdent . maybePrism _PathPiece) mPrev $ aopt (hoistField lift textField) (fslI MsgTableLmsIdent) diff --git a/src/Handler/Utils/Table/Columns.hs b/src/Handler/Utils/Table/Columns.hs index 780bc1d7e..926c168d8 100644 --- a/src/Handler/Utils/Table/Columns.hs +++ b/src/Handler/Utils/Table/Columns.hs @@ -474,7 +474,7 @@ colUserName :: (IsDBTable m c, HasUser a) => Colonnade Sortable a (DBCell m c) colUserName = sortable (Just "user-name") (i18nCell MsgTableCourseMembers) cellHasUser colUserNameLink :: (IsDBTable m c, HasEntity a User) => (CryptoUUIDUser -> Route UniWorX) -> Colonnade Sortable a (DBCell m c) -colUserNameLink userLink = sortable (Just "user-name") (i18nCell MsgTableCourseMembers) (cellHasUserLink userLink) +colUserNameLink = colUserNameLinkHdr MsgTableCourseMembers colUserNameLinkHdr :: (IsDBTable m c, HasEntity a User, RenderMessage UniWorX msg) => msg -> (CryptoUUIDUser -> Route UniWorX) -> Colonnade Sortable a (DBCell m c) colUserNameLinkHdr colHeader userLink = sortable (Just "user-name") (i18nCell colHeader) (cellHasUserLink userLink) @@ -541,16 +541,22 @@ fltrUserNameEmail queryUser = ( "user-name-email", FilterColumn $ anyFilter ] ) -fltrUserNameLinkUI :: Maybe (Map FilterKey [Text]) -> AForm (YesodDB UniWorX) (Map FilterKey [Text]) -fltrUserNameLinkUI = fltrUserNameUI - fltrUserNameUI :: Maybe (Map FilterKey [Text]) -> AForm (YesodDB UniWorX) (Map FilterKey [Text]) -fltrUserNameUI mPrev = - prismAForm (singletonFilter "user-name") mPrev $ aopt textField (fslI MsgTableCourseMembers) +fltrUserNameUI = fltrUserNameLinkUI + +fltrUserNameLinkUI :: Maybe (Map FilterKey [Text]) -> AForm (YesodDB UniWorX) (Map FilterKey [Text]) +fltrUserNameLinkUI = fltrUserNameLinkHdrUI MsgTableCourseMembers + +fltrUserNameLinkHdrUI :: (RenderMessage UniWorX msg) => msg -> Maybe (Map FilterKey [Text]) -> AForm (YesodDB UniWorX) (Map FilterKey [Text]) +fltrUserNameLinkHdrUI msg mPrev = + prismAForm (singletonFilter "user-name") mPrev $ aopt textField (fslI msg) fltrUserNameEmailUI :: Maybe (Map FilterKey [Text]) -> AForm (YesodDB UniWorX) (Map FilterKey [Text]) -fltrUserNameEmailUI mPrev = - prismAForm (singletonFilter "user-name-email") mPrev $ aopt textField (fslI MsgTableCourseMembers) +fltrUserNameEmailUI = fltrUserNameEmailHdrUI MsgTableCourseMembers + +fltrUserNameEmailHdrUI :: (RenderMessage UniWorX msg) => msg -> Maybe (Map FilterKey [Text]) -> AForm (YesodDB UniWorX) (Map FilterKey [Text]) +fltrUserNameEmailHdrUI msg mPrev = + prismAForm (singletonFilter "user-name-email") mPrev $ aopt textField (fslI msg) ------------------- -- Matriculation -- diff --git a/templates/lms.hamlet b/templates/lms.hamlet index f64de0b21..0ec587ff3 100644 --- a/templates/lms.hamlet +++ b/templates/lms.hamlet @@ -14,7 +14,7 @@ $newline never
_{MsgMonths (fromIntegral daudit)} $maybe drefresh <- qualificationRefreshWithin quali -
_{MsgQualificationRefreshWithin} +
_{MsgQualificationRefreshWithin} ^{iconTooltip (msg2widget MsgQualificationRefreshWithinTooltip) Nothing True}
$with drm <- cdMonths drefresh $with drd <- cdDays drefresh @@ -27,6 +27,10 @@ $newline never
_{MsgQualificationElearningStart}
#{boolSymbol (qualificationElearningStart quali)} + $if (qualificationElearningStart quali) && isNothing (qualificationRefreshWithin quali) +

+ #{icon IconNotificationError} + _{MsgLmsErrorNoRefreshElearning} ^{lmsTable} diff --git a/test/Database/Fill.hs b/test/Database/Fill.hs index e8ef693c7..c1c0c4f38 100644 --- a/test/Database/Fill.hs +++ b/test/Database/Fill.hs @@ -461,9 +461,9 @@ fillDb = do let f_descr = Just $ htmlToStoredMarkup [shamlet|

Berechtigung zum Führen eines Fahrzeuges auf den Fahrstrassen des Vorfeldes.|] let r_descr = Just $ htmlToStoredMarkup [shamlet|

Berechtigung zum Führen eines Fahrzeuges auf dem gesamten Rollfeld.|] let l_descr = Just $ htmlToStoredMarkup [shamlet|

für unhabilitierte|] - qid_f <- insert' $ Qualification avn "F" "Vorfeldführerschein" f_descr (Just 24) (Just $ 5 * 12) Nothing True - qid_r <- insert' $ Qualification avn "R" "Rollfeldführerschein" r_descr (Just 24) (Just $ 5 * 12) Nothing False - qid_l <- insert' $ Qualification ifi "L" "Lehrbefähigung" l_descr Nothing (Just $ 5 * 12) Nothing False + qid_f <- insert' $ Qualification avn "F" "Vorfeldführerschein" f_descr (Just 24) (Just $ 5 * 12) (Just $ CalendarDiffDays 0 60) True + qid_r <- insert' $ Qualification avn "R" "Rollfeldführerschein" r_descr (Just 24) (Just $ 5 * 12) (Just $ CalendarDiffDays 2 3) False + qid_l <- insert' $ Qualification ifi "L" "Lehrbefähigung" l_descr Nothing (Just $ 5 * 12) Nothing True void . insert' $ QualificationUser jost qid_f (n_day 9) (n_day $ -1) (n_day $ -22) -- TODO: better dates! void . insert' $ QualificationUser gkleen qid_f (n_day $ -3) (n_day $ -4) (n_day $ -20) void . insert' $ QualificationUser maxMuster qid_f (n_day 0) (n_day $ -2) (n_day $ -8)