diff --git a/messages/uniworx/categories/avs/de-de-formal.msg b/messages/uniworx/categories/avs/de-de-formal.msg index b76926886..e01d1a517 100644 --- a/messages/uniworx/categories/avs/de-de-formal.msg +++ b/messages/uniworx/categories/avs/de-de-formal.msg @@ -1,3 +1,5 @@ +AvsPersonId: AVS Personen Id +AvsPersonNo: AVS Personennummer AvsCardNo: Ausweiskartennummer AvsFirstName: Vorname AvsLastName: Nachname diff --git a/messages/uniworx/categories/avs/en-eu.msg b/messages/uniworx/categories/avs/en-eu.msg index 8b73a8dee..52633931a 100644 --- a/messages/uniworx/categories/avs/en-eu.msg +++ b/messages/uniworx/categories/avs/en-eu.msg @@ -1,7 +1,9 @@ -AvsCardNo: Card number +AvsPersonId: AVS Person Id +AvsPersonNo: AVS Person Number +AvsCardNo: Card number AvsFirstName: First name AvsLastName: Last name AvsInternalPersonalNo: Personnel number (Fraport AG only) -AvsVersionNo: Version number +AvsVersionNo: Version number AvsQueryEmpty: At least one query field must be filled! AvsQueryStatusInvalid t: Numeric IDs only, comma seperated! #{show t} \ No newline at end of file diff --git a/messages/uniworx/utils/navigation/menu/de-de-formal.msg b/messages/uniworx/utils/navigation/menu/de-de-formal.msg index 2866ab4fa..42bde62de 100644 --- a/messages/uniworx/utils/navigation/menu/de-de-formal.msg +++ b/messages/uniworx/utils/navigation/menu/de-de-formal.msg @@ -134,6 +134,7 @@ MenuLmsDirect: Direkter Upload MenuAvs: Schnittstelle AVS MenuApc: Schnittstelle Druckerei +MenuPrintSend: Manueller Briefversand MenuApiDocs: API-Dokumentation (Englisch) MenuSwagger !ident-ok: OpenAPI 2.0 (Swagger) \ No newline at end of file diff --git a/messages/uniworx/utils/navigation/menu/en-eu.msg b/messages/uniworx/utils/navigation/menu/en-eu.msg index 45a0062c3..77e83ab28 100644 --- a/messages/uniworx/utils/navigation/menu/en-eu.msg +++ b/messages/uniworx/utils/navigation/menu/en-eu.msg @@ -135,6 +135,7 @@ MenuLmsDirect: Direct Upload MenuAvs: AVS Interface MenuApc: Print Center Interface +MenuPrintSend: Send Letter MenuApiDocs: API documentation MenuSwagger: OpenAPI 2.0 (Swagger) diff --git a/routes b/routes index b98e0b8f7..888d08982 100644 --- a/routes +++ b/routes @@ -60,7 +60,9 @@ /admin/tokens AdminTokensR GET POST /admin/crontab AdminCrontabR GET /admin/avs AdminAvsR GET POST -/admin/apc AdminApcR GET POST + +/print PrintCenterR GET POST +/print/send PrintSendR GET POST /health HealthR GET !free /instance InstanceR GET !free diff --git a/src/Application.hs b/src/Application.hs index 44a0c2f37..0eabab1f9 100644 --- a/src/Application.hs +++ b/src/Application.hs @@ -151,6 +151,7 @@ import Handler.Error import Handler.Upload import Handler.Qualification import Handler.LMS +import Handler.PrintCenter import Handler.ApiDocs import Handler.Swagger diff --git a/src/Foundation/Navigation.hs b/src/Foundation/Navigation.hs index 34791143f..2f39d3ffd 100644 --- a/src/Foundation/Navigation.hs +++ b/src/Foundation/Navigation.hs @@ -105,7 +105,9 @@ breadcrumb AdminErrMsgR = i18nCrumb MsgMenuAdminErrMsg $ Just AdminR breadcrumb AdminTokensR = i18nCrumb MsgMenuAdminTokens $ Just AdminR breadcrumb AdminCrontabR = i18nCrumb MsgBreadcrumbAdminCrontab $ Just AdminR breadcrumb AdminAvsR = i18nCrumb MsgMenuAvs $ Just AdminR -breadcrumb AdminApcR = i18nCrumb MsgMenuApc $ Just AdminR + +breadcrumb PrintCenterR = i18nCrumb MsgMenuApc Nothing +breadcrumb PrintSendR = i18nCrumb MsgMenuPrintSend $ Just PrintCenterR breadcrumb SchoolListR = i18nCrumb MsgMenuSchoolList $ Just AdminR breadcrumb (SchoolR ssh sRoute) = case sRoute of @@ -735,6 +737,18 @@ defaultLinks = fmap catMaybes . mapM runMaybeT $ -- Define the menu items of the , navForceActive = False } } + , return NavHeader + { navHeaderRole = NavHeaderPrimary + , navIcon = IconPrintCenter + , navLink = NavLink + { navLabel = MsgMenuApc + , navRoute = PrintCenterR + , navAccess' = NavAccessTrue + , navType = NavTypeLink { navModal = False } + , navQuick' = mempty + , navForceActive = False + } + } , return NavHeaderContainer { navHeaderRole = NavHeaderPrimary , navLabel = SomeMessage MsgMenuAdminHeading @@ -804,15 +818,6 @@ defaultLinks = fmap catMaybes . mapM runMaybeT $ -- Define the menu items of the , navQuick' = mempty , navForceActive = False } - , NavLink - { navLabel = MsgMenuApc - , navRoute = AdminApcR - , navAccess' = NavAccessTrue - , navType = NavTypeLink { navModal = False } - , navQuick' = mempty - , navForceActive = False - } - ] } , return NavHeaderContainer @@ -2492,6 +2497,19 @@ pageActions ApiDocsR = return , navChildren = [] } ] +pageActions PrintCenterR = return + [ NavPageActionPrimary + { navLink = NavLink + { navLabel = MsgMenuPrintSend + , navRoute = PrintSendR + , navAccess' = NavAccessTrue + , navType = NavTypeLink { navModal = False } + , navQuick' = mempty + , navForceActive = False + } + , navChildren = [] + } + ] pageActions _ = return [] submissionList :: ( MonadIO m diff --git a/src/Handler/Admin.hs b/src/Handler/Admin.hs index 72a47ed2f..262223ac4 100644 --- a/src/Handler/Admin.hs +++ b/src/Handler/Admin.hs @@ -9,7 +9,6 @@ import Handler.Admin.ErrorMessage as Handler.Admin import Handler.Admin.Tokens as Handler.Admin import Handler.Admin.Crontab as Handler.Admin import Handler.Admin.Avs as Handler.Admin -import Handler.Admin.Apc as Handler.Admin getAdminR :: Handler Html getAdminR = diff --git a/src/Handler/Admin/Avs.hs b/src/Handler/Admin/Avs.hs index 2c0a2367e..43ef56e44 100644 --- a/src/Handler/Admin/Avs.hs +++ b/src/Handler/Admin/Avs.hs @@ -36,7 +36,7 @@ validateAvsQueryPerson = do makeAvsStatusForm :: Maybe AvsQueryStatus -> Form AvsQueryStatus makeAvsStatusForm tmpl = identifyForm FIDAvsQueryStatus . validateForm validateAvsQueryStatus $ \html -> flip (renderAForm FormStandard) html $ - parseAvsIds <$> areq textField (fslI MsgAvsCardNo) (unparseAvsIds <$> tmpl) + parseAvsIds <$> areq textField (fslI MsgAvsPersonId) (unparseAvsIds <$> tmpl) where parseAvsIds :: Text -> AvsQueryStatus parseAvsIds txt = AvsQueryStatus $ Set.fromList ids diff --git a/src/Handler/Admin/Apc.hs b/src/Handler/PrintCenter.hs similarity index 79% rename from src/Handler/Admin/Apc.hs rename to src/Handler/PrintCenter.hs index 1f6104434..e1d241e43 100644 --- a/src/Handler/Admin/Apc.hs +++ b/src/Handler/PrintCenter.hs @@ -1,8 +1,8 @@ {-# OPTIONS -Wno-unused-top-binds #-} -- TODO: remove me, for debugging only -module Handler.Admin.Apc - ( getAdminApcR - , postAdminApcR +module Handler.PrintCenter + ( getPrintCenterR, postPrintCenterR + , getPrintSendR , postPrintSendR ) where import Import @@ -74,9 +74,9 @@ validateMetaPinRenewal = do || isPrefixOf "en" mppLang -getAdminApcR, postAdminApcR :: Handler Html -getAdminApcR = postAdminApcR -postAdminApcR = do +getPrintCenterR, postPrintCenterR :: Handler Html +getPrintCenterR = postPrintCenterR +postPrintCenterR = do {- ((presult, pwidget), penctype) <- runFormPost $ makeRenewalForm Nothing let procFormPerson fr = do @@ -95,7 +95,7 @@ postAdminApcR = do mbStatus <- formResultMaybe sresult procFormStatus -} -- actionUrl <- fromMaybe AdminAvsR <$> getCurrentRoute - siteLayoutMsg MsgMenuAvs $ do + siteLayoutMsg MsgMenuApc $ do setTitleI MsgMenuApc {- let personForm = wrapForm pwidget def @@ -111,3 +111,24 @@ postAdminApcR = do mbPerson = Just ("Not yet implemented"::Text) -- TODO: use i18nWidgetFile instead if this is to become permanent $(widgetFile "apc") + + +getPrintSendR, postPrintSendR:: Handler Html +getPrintSendR = postPrintSendR +postPrintSendR = do + siteLayoutMsg MsgMenuPrintSend $ do + setTitleI MsgMenuPrintSend + {- + let personForm = wrapForm pwidget def + { formAction = Just $ SomeRoute actionUrl + , formEncoding = penctype + } + statusForm = wrapForm swidget def + { formAction = Just $ SomeRoute actionUrl + , formEncoding = senctype + } + -} + let personForm = [whamlet|TODO|] + mbPerson = Just ("Not yet implemented"::Text) + -- TODO: use i18nWidgetFile instead if this is to become permanent + $(widgetFile "apc") diff --git a/src/Utils/Icon.hs b/src/Utils/Icon.hs index b3853b520..3b9013506 100644 --- a/src/Utils/Icon.hs +++ b/src/Utils/Icon.hs @@ -105,6 +105,7 @@ data Icon | IconRemoveUser | IconReset | IconBlocked + | IconPrintCenter deriving (Eq, Ord, Enum, Bounded, Show, Read, Generic, Typeable) deriving anyclass (Universe, Finite, NFData) @@ -193,6 +194,7 @@ iconText = \case IconSubmissionNoUsers -> "user-slash" IconReset -> "undo" -- From fontawesome v6 onwards: "arrow-rotate-left" IconBlocked -> "ban" + IconPrintCenter -> "mail-bulk" -- From fontawesome v6 onwards: "envelope-bulk" nullaryPathPiece ''Icon $ camelToPathPiece' 1 deriveLift ''Icon