feat(tooltips): add auto unzip and multiFileField tooltips

This commit is contained in:
Sarah Vaupel 2019-10-01 13:27:48 +02:00
parent 2205180350
commit 276dcb6ad9
8 changed files with 134 additions and 92 deletions

View File

@ -692,6 +692,9 @@ UploadModeSpecific: Upload, vorgegebene Dateinamen
UploadModeUnpackZips: Abgabe mehrerer Dateien
UploadModeUnpackZipsTip: Wenn die Abgabe mehrerer Dateien erlaubt ist, werden auch unterstützte Archiv-Formate zugelassen. Diese werden nach dann beim Hochladen automatisch entpackt.
AutoUnzip: ZIPs automatisch entpacken
AutoUnzipInfo: Entpackt hochgeladene ZIP-Dateien (*.zip) automatisch und fügt den Inhalt dem Stamm-Verzeichnis hinzu.
UploadModeExtensionRestriction: Zulässige Dateiendungen
UploadModeExtensionRestrictionTip: Komma-separiert. Wenn keine Dateiendungen angegeben werden erfolgt keine Einschränkung.
UploadModeExtensionRestrictionEmpty: Liste von zulässigen Dateiendungen darf nicht leer sein

View File

@ -149,6 +149,7 @@ makeCourseForm miButtonAction template = identifyForm FIDcourse . validateFormDB
return (Just <$> lrwRes,lrwView')
miCell _ (Left lEmail) defType nudge = \csrf -> do
(lrwRes,lrwView) <- mopt (selectField optionsFinite) ("" & addName (nudge "lecturer-type")) defType
invWarnMsg <- messageI Warning MsgEmailInvitationWarning
let lrwView' = $(widgetFile "course/lecturerMassInput/cellInvitation")
return (lrwRes,lrwView')
@ -255,6 +256,9 @@ makeCourseForm miButtonAction template = identifyForm FIDcourse . validateFormDB
optionalActionW' (bool mforcedJust mpopt mayChange) allocationForm' (fslI MsgCourseAllocationParticipate & setTooltip MsgCourseAllocationParticipateTip) (is _Just . cfAllocation <$> template)
-- TODO: internationalization
-- let autoUnzipInfo = [|Entpackt hochgeladene Zip-Dateien (*.zip) automatisch und fügt den Inhalt dem Stamm-Verzeichnis der Abgabe hinzu. TODO|]
(result, widget) <- flip (renderAForm FormStandard) html $ CourseForm
<$> pure (cfCourseId =<< template)
<*> areq (textField & cfStrip & cfCI) (fslI MsgCourseName) (cfName <$> template)

View File

@ -53,7 +53,8 @@ tutorialForm cid template html = do
miCell' :: Either UserEmail UserId -> Widget
miCell' (Left email) =
miCell' (Left email) = do
invWarnMsg <- messageI Warning MsgEmailInvitationWarning
$(widgetFile "tutorial/tutorMassInput/cellInvitation")
miCell' (Right userId) = do
User{..} <- liftHandler . runDB $ get404 userId

View File

@ -746,6 +746,7 @@ multiFileField permittedFiles' = Field{..}
| Right sentVals' <- sentVals = fuiId' `elem` sentVals'
| otherwise = True
return FileUploadInfo{..}
autoUnzipInfo = [whamlet| _{MsgAutoUnzipInfo} |]
fileInfos <- mapM toFUI <=< handlerToWidget . runDB . E.select . E.from $ \file -> do
E.where_ $ file E.^. FileId `E.in_` E.valList (setToList pVals)
E.orderBy [E.asc $ file E.^. FileTitle]

View File

@ -4,20 +4,6 @@
# https://docs.haskellstack.org/en/stable/lock_files
packages:
- completed:
cabal-file:
size: 1740
sha256: 2cab90bba4d15bf6a17e3cb8e50bc8708c1091de503dd4e91d3954240e89f37b
name: zip-stream
version: 0.1.0.1
git: https://github.com/uni2work/zip-stream.git
pantry-tree:
size: 657
sha256: d1626bbc3fb88a48ce9c5c37199f8cbf426be6410740891d76a8343de4f3c109
commit: 9272bbed000928d500febad1cdc98d1da29d399e
original:
git: https://github.com/uni2work/zip-stream.git
commit: 9272bbed000928d500febad1cdc98d1da29d399e
- completed:
cabal-file:
size: 4141
@ -47,33 +33,33 @@ packages:
git: https://github.com/uni2work/memcached-binary.git
commit: b5461747e7be226d3b67daebc3c9aefe8a4490ad
- completed:
hackage: colonnade-1.2.0@sha256:5620e999a68a394abfe157da6302dd6d8ce8a89b527ea9c294519efd7c4edb2c,2092
cabal-file:
size: 1423
sha256: 49818ee0de2d55cbfbc15ca4de1761c3adac6ba3dfcdda960b413cad4f4fa47f
name: conduit-resumablesink
version: '0.3'
git: https://github.com/uni2work/conduit-resumablesink.git
pantry-tree:
size: 327
sha256: 56ae7b84b5c8001784181e1710a6a1036e5b626e4539a7eee3db0f6ccdf2d861
size: 394
sha256: 0cccf4684bbd84f81d2d3d53dd81c46cb103b5322f1d8e89e9b222211281e1b7
commit: cbea6159c2975d42f948525e03e12fc390da53c5
original:
hackage: colonnade-1.2.0
git: https://github.com/uni2work/conduit-resumablesink.git
commit: cbea6159c2975d42f948525e03e12fc390da53c5
- completed:
hackage: yesod-colonnade-1.2.0@sha256:8908b30449ba5ee3de1d1fe38879acd0512094c6d4b0503c1f0011184a0e9310,897
hackage: zip-stream-0.2.0.1@sha256:78cd3244efbfba99184d17f5923980282f7d1b8f6d71c6e8af14e516e4239691,1742
pantry-tree:
size: 221
sha256: e813bb2dba2ce25557e4cf224bc77c505fdc72e3ecee2193a27c4dd64e9f8b2d
size: 559
sha256: 85960a435d280e933f697163c2ec6861261214d56f4c326d1ab920f37cb4f8c1
original:
hackage: yesod-colonnade-1.2.0
hackage: zip-stream-0.2.0.1
- completed:
hackage: ldap-client-0.2.0@sha256:a5fce1d809f4a2f7dcbb49e868257895209bb7624d8791cf72765edc90a1f1af,2132
hackage: ldap-client-0.3.0@sha256:e62aa1cbe7fc27fc2f197c9cf3601c2fd46e189f8cd84bd25f8323537d31067f,2220
pantry-tree:
size: 1717
sha256: 612ca1bd1a6f1a37a101ea63f22a10d4b58fc71e4a4752ac7c6ddf851f67550d
sha256: 4a682a32028e18a60397d347666fe796e85ef3ba2365c1b5d03cfdd694f0711b
original:
hackage: ldap-client-0.2.0
- completed:
hackage: conduit-resumablesink-0.2@sha256:eb7ac70862310a10038fa178594d6e0c0b03cf1a8c3aa6293fc316871c058b24,1375
pantry-tree:
size: 294
sha256: 29e514637bf0c40b8fa72cd091e02da0974d03855eee7ecd24650ef1081c1445
original:
hackage: conduit-resumablesink-0.2
hackage: ldap-client-0.3.0
- completed:
hackage: uuid-crypto-1.4.0.0@sha256:9e2f271e61467d9ea03e78cddad75a97075d8f5108c36a28d59c65abb3efd290,1325
pantry-tree:
@ -116,20 +102,6 @@ packages:
sha256: 3b22af3e6315835bf614a0d30381ec7e47aca147b59ba601aeaa26f1fdc19373
original:
hackage: system-locale-0.3.0.0
- completed:
hackage: persistent-2.7.3.1@sha256:ffab77bc3481466265ee32d01941731a34c969806fe5de838b13cba9e0fe6d9e,5237
pantry-tree:
size: 2164
sha256: 0ec69231caf6ed44e709fd5e742861f7eac50eb3de4817f4893295aa747ca824
original:
hackage: persistent-2.7.3.1
- completed:
hackage: saltine-0.1.0.1@sha256:77071b5746709d35821df74e870ca6bf3a14942bf3ff42d22b8adc413f066d05,3007
pantry-tree:
size: 1882
sha256: e4b0eb2e8b17eec2ea62ea73b29971780cedd3574331f1def521bee58503b80a
original:
hackage: saltine-0.1.0.1
- completed:
hackage: hlint-test-0.1.0.0@sha256:e427c0593433205fc629fb05b74c6b1deb1de72d1571f26142de008f0d5ee7a9,1814
pantry-tree:
@ -144,20 +116,6 @@ packages:
sha256: ab3c2d2880179a945ab3122c51d1657ab4a7a628292b646e047cd32b0751a80c
original:
hackage: pkcs7-1.0.0.1
- completed:
hackage: quickcheck-classes-0.4.14@sha256:fd07ec67aa5f3dc689b58db1212228428589397d75908a1fca4a0f635cd92187,3494
pantry-tree:
size: 2755
sha256: 4e768fdfb52bb1df8649b767dd5b1aba215164e03879752dda8b218928489597
original:
hackage: quickcheck-classes-0.4.14
- completed:
hackage: semirings-0.2.1.1@sha256:83bdfd8d3abf2e404056dbc70da02d05d68fdc87fdbaa63d06f815155947e7e2,3376
pantry-tree:
size: 431
sha256: ab5ecf0cdd682be98b8362d6793acdf96932bdd50ab528fb85763fa0c76f2711
original:
hackage: semirings-0.2.1.1
- completed:
hackage: systemd-1.2.0@sha256:94995d4f1268aa0049d1793b21adb1522b6041e270cea4095c43eb589cc7ce53,1389
pantry-tree:
@ -165,20 +123,6 @@ packages:
sha256: 16d20860c99050194570c4760337a9d9c156580dbe0ae707f4039f6da1474a93
original:
hackage: systemd-1.2.0
- completed:
hackage: filepath-1.4.2@sha256:397c08e88361563bd29168b8f85d58782d6e0e5eba2374fe246fd0cf5dfde34c,2205
pantry-tree:
size: 681
sha256: 288e706f3d38bea39a5d248c1a5bdbb489a84fea81652966a203b28b58c6a8ca
original:
hackage: filepath-1.4.2
- completed:
hackage: haskell-src-exts-util-0.2.1.2@sha256:2e14a871cda4416c0f3fb846f208b0d769e658091487db4b22b77930d200a79d,1029
pantry-tree:
size: 478
sha256: 247967e9b2ef347f0cc3494422c9758929a406c29b7bed0f82d3f8ac39cde8e6
original:
hackage: haskell-src-exts-util-0.2.1.2
- completed:
hackage: directory-1.3.4.0@sha256:500019f04494324d1df16cf83eefeb3f809b2b20b32a32ccd755ee0439c18bfd,2829
pantry-tree:
@ -186,6 +130,104 @@ packages:
sha256: 00c09e0c014d29ebfb921b64c1459e61a0ad6f10e70128d795246a47c06394b0
original:
hackage: directory-1.3.4.0
- completed:
hackage: HaXml-1.25.5@sha256:4f8534cda290b3d0a76b4ca5c4b9aa20902dcf029ddd50998d07c5dd608ad6f6,4420
pantry-tree:
size: 4076
sha256: 9682020b148433c41f5efee327b66708875015df8d4b3d48f875ac21f8222e1b
original:
hackage: HaXml-1.25.5
- completed:
hackage: esqueleto-3.0.0@sha256:efd84fd11ceaf0ae4e1b0c6236122b1f213c2c6f2f4f58e30f03eddc2ec3f423,5248
pantry-tree:
size: 1127
sha256: 74e43834d5cc468acc3cb6e8a81567ebfbb5350a3e07ae01dd7f30d6255274a1
original:
hackage: esqueleto-3.0.0
- completed:
hackage: HaskellNet-SSL-0.3.4.1@sha256:3ca14dd69460a380cf69aed40654fb10c4c03e344632b6a9986568c87feda157,1843
pantry-tree:
size: 577
sha256: 33fbfd0d8bbaa689f0169d442861dafcdcd4fe795a4b42aa0bedbfa41aa65b23
original:
hackage: HaskellNet-SSL-0.3.4.1
- completed:
hackage: sandi-0.5@sha256:b278d072ca717706ea38f9bd646e023f7f2576a778fb43565b434f93638849aa,3010
pantry-tree:
size: 3455
sha256: 5ca7ce4bc22ab9d4427bb149b5e283ab9db43375df14f7131fdfd48775f36350
original:
hackage: sandi-0.5
- completed:
hackage: storable-endian-0.2.6@sha256:cae7aac2bfe6037660b2cf294891867e69bcd74e739a3b3ea759e9ad99d6c889,801
pantry-tree:
size: 223
sha256: 6a8e43727f9b146238d4064fffc39d629f06622106922487fea922ec73aaee1e
original:
hackage: storable-endian-0.2.6
- completed:
hackage: universe-1.2@sha256:23e7486709c06f6b0e048a505f0bd8b82a9c5d0937c8a13ca215ff20adde0a77,1448
pantry-tree:
size: 292
sha256: 15f7f0675229769705c128a397c06c41eb86909ff34ddb4c4c0f7d77becbe71b
original:
hackage: universe-1.2
- completed:
hackage: universe-base-1.1.1@sha256:732e72a3597f834a01710c055d540cbc4174a8465015c1cdaaa542e9aeeadbd0,2476
pantry-tree:
size: 465
sha256: 165dbd1fa5eb81244b1ae2f9f527ebf4cc6d430911649347b33a92b97b377267
original:
hackage: universe-base-1.1.1
- completed:
hackage: universe-reverse-instances-1.1@sha256:9d46e98a81556a54c5be3346bc6e087cbd0036255eeb34cb28b3e59ab48646d3,1283
pantry-tree:
size: 549
sha256: 042fe63484542fa40a6071fad7c2930a85c569dce32280d5bc4b17e243b7cda4
original:
hackage: universe-reverse-instances-1.1
- completed:
hackage: unliftio-pool-0.2.1.0@sha256:4de658feb1b10051c5af024c20cd7baa369c777716c54a7b3e2888a73286aecf,922
pantry-tree:
size: 217
sha256: ddec03547e1feda7e861b49b2d1f2e188d41dc7bd04ae3d831f57d0813eb09a5
original:
hackage: unliftio-pool-0.2.1.0
- completed:
hackage: universe-instances-extended-1.1.1@sha256:6dfe9a7bbeb890a556c7f05ce3447ecd9e268e25a165ee233ad82ce76f91f327,1589
pantry-tree:
size: 251
sha256: 35972f6a95c04c018a0a634cc07f3c10c625e25e99e2f2b8090cebcf5f0292bd
original:
hackage: universe-instances-extended-1.1.1
- completed:
hackage: universe-some-1.2@sha256:e232f660c1cc130c8492e7267868ef6b08d47c54949cdf5c54b8500e6a280e78,2106
pantry-tree:
size: 299
sha256: 921349682b8aa7c0ea294cd63d9f8521691cc6247b2520e0ab107c81a4aa1df5
original:
hackage: universe-some-1.2
- completed:
hackage: some-1.0.0.3@sha256:d4e7f7ef114b1ae01915fcff15a9b46a078d459e30791276a565f5c015128347,2020
pantry-tree:
size: 708
sha256: c2627940f4cf87189dc0cb967a048cabf3292a935efa292d5c1674af56e75a88
original:
hackage: some-1.0.0.3
- completed:
hackage: network-bsd-2.8.1.0@sha256:47cb03786ff5371876582babc72cbd88efbcb96053f5bfbefbc024fa80380bb3,3742
pantry-tree:
size: 264
sha256: 90120543a56cc76ccd841dcbb73e4725115af9ca428120cde906c1b3ca2e7c88
original:
hackage: network-bsd-2.8.1.0
- completed:
hackage: persistent-qq-2.9.1@sha256:1da17d907298ad5bc0798b0f759b59cb1bd4a4530681e0be54ad5366d7c5b1d5,1271
pantry-tree:
size: 333
sha256: e75333f07a956842811d48f267f596111b8aebd9ee5b50b9afe64c5efcb17c71
original:
hackage: persistent-qq-2.9.1
- completed:
hackage: process-1.6.5.1@sha256:77a9afeb676357f67fe5cf1ad79aca0745fb6f7fb96b786d510af08f622643f6,2468
pantry-tree:
@ -195,7 +237,7 @@ packages:
hackage: process-1.6.5.1
snapshots:
- completed:
size: 568655
url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/10/5.yaml
sha256: d5d2a8f55085643b41a30e9191cbbd4f8f707dd63facdddfbce08d811f808444
original: lts-10.5
size: 498180
url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/13/21.yaml
sha256: eff2de19a6d4691ccbf6edc1fba858f1918683047dce0f09adede874bbd2a8f3
original: lts-13.21

View File

@ -4,10 +4,6 @@
<span style="font-family: monospace">
#{lEmail}
<td>
<div .tooltip>
<div .tooltip__handle>
#{iconWarning}
<div .tooltip__content>
_{MsgEmailInvitationWarning}
^{messageTooltip invWarnMsg}
<td>
^{fvInput lrwView}

View File

@ -3,7 +3,4 @@ $newline never
<span style="font-family: monospace">
#{email}
<td>
<div .tooltip>
<div .tooltip__handle>
<div .tooltip__content>
_{MsgEmailInvitationWarning}
^{messageTooltip invWarnMsg}

View File

@ -20,8 +20,6 @@ $# new files
_{MsgMultiFileUploadInfo}
<div .file-input__unpack>
<label for=#{fieldId}_zip>ZIPs automatisch entpacken
^{iconTooltip autoUnzipInfo Nothing}
<label for=#{fieldId}_zip>_{MsgAutoUnzip}
<input type=checkbox id=#{fieldId}_zip name=#{fieldName} value=#{unpackZips}>
<div class="tooltip">
<div class="tooltip__handle">
<div class="tooltip__content">Entpackt hochgeladene Zip-Dateien (*.zip) automatisch und fügt den Inhalt dem Stamm-Verzeichnis der Abgabe hinzu.