Merge branch 'master' into fradrive/api-avs

This commit is contained in:
Steffen Jost 2022-12-22 09:06:17 +01:00
commit cb94586265
10 changed files with 58 additions and 35 deletions

View File

@ -2,6 +2,13 @@
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
## [27.0.2](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v27.0.1...v27.0.2) (2022-12-20)
### Bug Fixes
* **mail:** fix various minor email attachment problems ([90a5f07](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/90a5f07c0412c6820f935b483db8645bcefba160))
## [27.0.1](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v27.0.0...v27.0.1) (2022-12-15) ## [27.0.1](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v27.0.0...v27.0.1) (2022-12-15)

View File

@ -268,8 +268,8 @@ user-defaults:
max-favourites: 0 max-favourites: 0
max-favourite-terms: 2 max-favourite-terms: 2
theme: Default theme: Default
date-time-format: "%a %d %b %Y %R" date-time-format: "%d %b %y %R"
date-format: "%a %d %b %Y" date-format: "%d %b %Y"
time-format: "%R" time-format: "%R"
download-files: false download-files: false
warning-days: 1209600 warning-days: 1209600

View File

@ -1,3 +1,3 @@
{ {
"version": "27.0.1" "version": "27.0.2"
} }

View File

@ -1,3 +1,3 @@
{ {
"version": "27.0.1" "version": "27.0.2"
} }

2
package-lock.json generated
View File

@ -1,6 +1,6 @@
{ {
"name": "uni2work", "name": "uni2work",
"version": "27.0.1", "version": "27.0.2",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {

View File

@ -1,6 +1,6 @@
{ {
"name": "uni2work", "name": "uni2work",
"version": "27.0.1", "version": "27.0.2",
"description": "", "description": "",
"keywords": [], "keywords": [],
"author": "", "author": "",

View File

@ -1,5 +1,5 @@
name: uniworx name: uniworx
version: 27.0.1 version: 27.0.2
dependencies: dependencies:
- base - base
- yesod - yesod

View File

@ -26,6 +26,7 @@ import qualified Text.Pandoc as P
import qualified Text.Hamlet as Hamlet import qualified Text.Hamlet as Hamlet
import qualified Text.Shakespeare as Shakespeare (RenderUrl) import qualified Text.Shakespeare as Shakespeare (RenderUrl)
-- import qualified Text.Blaze.Html5 as H
addRecipientsDB :: ( MonadMail m addRecipientsDB :: ( MonadMail m
, HandlerSite m ~ UniWorX , HandlerSite m ~ UniWorX
@ -60,8 +61,7 @@ userMailT uid mAct = do
(underling, receivers, undercopy) <- liftHandler . runDB $ getReceivers uid (underling, receivers, undercopy) <- liftHandler . runDB $ getReceivers uid
let undername = underling ^. _userDisplayName -- nameHtml' underling let undername = underling ^. _userDisplayName -- nameHtml' underling
undermail = CI.original $ underling ^. _userEmail undermail = CI.original $ underling ^. _userEmail
infoSupervised :: Hamlet.HtmlUrlI18n UniWorXSendMessage (Route UniWorX) = [ihamlet| infoSupervised :: Hamlet.HtmlUrlI18n UniWorXSendMessage (Route UniWorX) = [ihamlet|
<meta charset="utf-8">
<h2>_{MsgMailSupervisedNote} <h2>_{MsgMailSupervisedNote}
<p> <p>
_{MsgMailSupervisedBody} _{MsgMailSupervisedBody}
@ -88,14 +88,10 @@ userMailT uid mAct = do
, mcCsvOptions = userCsvOptions , mcCsvOptions = userCsvOptions
} }
supername = supervisor ^. _userDisplayName -- nameHtml' supervisor supername = supervisor ^. _userDisplayName -- nameHtml' supervisor
infoSupervisor :: Hamlet.HtmlUrlI18n UniWorXSendMessage (Route UniWorX) = [ihamlet| infoSupervisor :: Hamlet.HtmlUrlI18n UniWorXSendMessage (Route UniWorX) = [ihamlet|
<meta charset="utf-8">
<h2>_{MsgMailSupervisorNote} <h2>_{MsgMailSupervisorNote}
<p> <p>
_{MsgMailSupervisorBody undername supername} # _{MsgMailSupervisorBody undername supername} <a href=@{NewsR}>FRADrive</a>. #
<a href=@{NewsR}>
FRADrive
. #
$if undercopy $if undercopy
_{MsgMailSupervisorCopy undermail} _{MsgMailSupervisorCopy undermail}
$else $else
@ -190,7 +186,7 @@ addHtmlMarkdownAlternatives html' = do
where where
writerOptions = markdownWriterOptions writerOptions = markdownWriterOptions
{ P.writerReferenceLinks = True { P.writerReferenceLinks = True
, P.writerPreferAscii = True , P.writerPreferAscii = False
} }
-- | Like @addHtmlMarkdownAlternatives, but adds subseqeunt parts with "content-disposition: inline" and the provided filename, if inline display is not permitted (receiver's choice) -- | Like @addHtmlMarkdownAlternatives, but adds subseqeunt parts with "content-disposition: inline" and the provided filename, if inline display is not permitted (receiver's choice)
@ -200,13 +196,24 @@ addHtmlMarkdownAlternatives' :: ( MonadMail m
) => Text -> a -> m () ) => Text -> a -> m ()
addHtmlMarkdownAlternatives' fn html' = do addHtmlMarkdownAlternatives' fn html' = do
html <- toMailHtml html' html <- toMailHtml html'
markdown <- runMaybeT $ renderMarkdownWith htmlReaderOptions writerOptions html markdown <- runMaybeT $ renderMarkdownWith htmlReaderOptions writerOptions html
addAlternatives $ do addAlternatives $ do
providePreferredAlternative $ NamedMailPart { disposition = InlineDisposition $ fn <> ".html", namedPart = html } --let html_meta = H.head $ H.preEscapedText "<meta charset=\"utf-8\">" -- this is probably not the correct way to do this
let html_meta = [shamlet|
$doctype 5
<html>
<head>
<meta charset="utf-8">
<title>
#{fn}
<body>
^{html}
|]
providePreferredAlternative $ NamedMailPart { disposition = InlineDisposition $ fn <> ".html", namedPart = html_meta }
whenIsJust markdown $ provideAlternative . NamedMailPart (InlineDisposition (fn <> ".txt")) whenIsJust markdown $ provideAlternative . NamedMailPart (InlineDisposition (fn <> ".txt"))
where where
writerOptions = markdownWriterOptions writerOptions = markdownWriterOptions
{ P.writerReferenceLinks = True { P.writerReferenceLinks = True
, P.writerPreferAscii = True , P.writerPreferAscii = False
} }

View File

@ -427,12 +427,21 @@ sendEmailOrLetter recipient letter = do
let (preferPost, postal) = getPostalPreferenceAndAddress rcvrUsr let (preferPost, postal) = getPostalPreferenceAndAddress rcvrUsr
isSupervised = recipient /= svr isSupervised = recipient /= svr
lang = selectDeEn $ rcvrUsr & userLanguages -- select either German or English only, default de; see Utils.Lang lang = selectDeEn $ rcvrUsr & userLanguages -- select either German or English only, default de; see Utils.Lang
lMeta = letterMeta letter lang formatter <> mkMeta lMeta = letterMeta letter lang formatter <> mkMeta (
[ toMeta "lang" lang ( if isSupervised
, toMeta "date" $ format SelFormatDate now then
, toMeta "address" $ fromMaybe [rcvrUsr & userDisplayName] postal [ toMeta "supervisor" (rcvrUsr & userDisplayName)
, mbMeta "supervisor" $ toMaybe isSupervised (rcvrUsr & userDisplayName) , toMeta "de-opening" ("Sehr geehrte Damen und Herren,"::Text)
] , toMeta "en-opening" ("Dear supervisor,"::Text)
]
else []
) <>
[ toMeta "lang" lang
, toMeta "date" $ format SelFormatDate now
, toMeta "address" $ fromMaybe [rcvrUsr & userDisplayName] postal
]
)
pdfLetter tmpl lMeta >>= \case pdfLetter tmpl lMeta >>= \case
_ | preferPost, isNothing postal -> do -- neither email nor postal is known _ | preferPost, isNothing postal -> do -- neither email nor postal is known
encRecipient :: CryptoUUIDUser <- encrypt svr encRecipient :: CryptoUUIDUser <- encrypt svr

View File

@ -9,7 +9,7 @@ email: fahrerausbildung@fraport.de
place: Frankfurt am Main place: Frankfurt am Main
return-address: return-address:
- 60547 Frankfurt - 60547 Frankfurt
de-opening: Liebe Fahrer, de-opening: Liebe Fahrberechtigungsinhaber,
en-opening: Dear driver, en-opening: Dear driver,
de-closing: | de-closing: |
Mit freundlichen Grüßen, Mit freundlichen Grüßen,
@ -67,12 +67,12 @@ $endif$
verlängert werden. verlängert werden.
$if(supervisor)$ $if(supervisor)$
Ansprechpartner werden gebeten, die Login-Daten aus dem geschützen Sichtfenster weiter unten Ansprechpartner werden gebeten, die Login-Daten aus dem geschützen Sichtfenster weiter unten
vertraulich an den Prüfling weiterzuleiten. vertraulich an den Fahrberechtigungsinhaber weiterzuleiten.
$else$ $else$
Dazu bitte die Login-Daten aus dem geschützen Sichtfenster weiter unten verwenden. Dazu bitte die Login-Daten aus dem geschützen Sichtfenster weiter unten verwenden.
$endif$ $endif$
Prüfling Fahrberechtigungsinhaber
: $examinee$ : $examinee$
@ -85,8 +85,9 @@ URL
: [$url-text$]($url$) : [$url-text$]($url$)
Sobald die Frist abgelaufen ist, muss zur Wiedererlangung der Fahrberechtigung "F" Sollte bis zum Ablaufdatum das E-Learning nicht erfolgreich abgeschlossen sein, muss
erneut der komplette Grundkurs bei der Fahrerausbildung absolviert werden. zur Wiedererlangung der Fahrberechtigung "F" erneut ein Grundkurs
bei der Fahrerausbildung absolviert werden.
Bei Fragen können Sie sich gerne an das Team der Fahrerausbildung wenden. Bei Fragen können Sie sich gerne an das Team der Fahrerausbildung wenden.
@ -94,12 +95,11 @@ Bei Fragen können Sie sich gerne an das Team der Fahrerausbildung wenden.
$else$ $else$
<!-- englische Version des Briefes --> <!-- englische Version des Briefes -->
$if(supervisor)$ $if(supervisor)$
the apron diving license of $examinee$ the apron diving license of $examinee$
$else$ $else$
your apron diving license your apron diving license
$endif$ $endif$
is about to expire soon. is about to expire soon.
The validity may be extended The validity may be extended
$if(validduration)$ $if(validduration)$
@ -124,7 +124,7 @@ Expiry
URL URL
:[$url-text$]($url$) : [$url-text$]($url$)
Should the apron driving license expire before completing this Should the apron driving license expire before completing this