diff --git a/messages/uniworx/de.msg b/messages/uniworx/de.msg index aac9afe06..7fae879ce 100644 --- a/messages/uniworx/de.msg +++ b/messages/uniworx/de.msg @@ -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 diff --git a/src/Handler/Course/Edit.hs b/src/Handler/Course/Edit.hs index a670a8e1f..81dbe8573 100644 --- a/src/Handler/Course/Edit.hs +++ b/src/Handler/Course/Edit.hs @@ -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) diff --git a/src/Handler/Tutorial/Form.hs b/src/Handler/Tutorial/Form.hs index 2f1aa6ccf..a624af1f5 100644 --- a/src/Handler/Tutorial/Form.hs +++ b/src/Handler/Tutorial/Form.hs @@ -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 diff --git a/src/Handler/Utils/Form.hs b/src/Handler/Utils/Form.hs index f0573a00f..be29cc456 100644 --- a/src/Handler/Utils/Form.hs +++ b/src/Handler/Utils/Form.hs @@ -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] diff --git a/stack.yaml.lock b/stack.yaml.lock index 45c694d00..92aae0cdf 100644 --- a/stack.yaml.lock +++ b/stack.yaml.lock @@ -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 diff --git a/templates/course/lecturerMassInput/cellInvitation.hamlet b/templates/course/lecturerMassInput/cellInvitation.hamlet index 54ce6a15f..d1bc53f51 100644 --- a/templates/course/lecturerMassInput/cellInvitation.hamlet +++ b/templates/course/lecturerMassInput/cellInvitation.hamlet @@ -4,10 +4,6 @@ #{lEmail}