diff --git a/src/Handler/Sheet.hs b/src/Handler/Sheet.hs index a7f672cc7..fdcc1c14b 100644 --- a/src/Handler/Sheet.hs +++ b/src/Handler/Sheet.hs @@ -83,7 +83,7 @@ makeSheetForm msId template = identForm FIDsheet $ \html -> do <*> aopt utcTimeField (fsb "Sichtbar ab") (sfVisibleFrom <$> template) <*> areq utcTimeField (fsb "Abgabe ab") (sfActiveFrom <$> template) <*> areq utcTimeField (fsb "Abgabefrist") (sfActiveTo <$> template) - <*> aopt (multiFileField $ oldFileIds SheetExercise) (fsb "Aufgabenstellung") (sfSheetF <$> template) + <*> aopt (multiFileField Nothing $ oldFileIds SheetExercise) (fsb "Aufgabenstellung") (sfSheetF <$> template) <*> aopt utcTimeField (fsb "Hinweis ab") (sfHintFrom <$> template) <*> fileAFormOpt (fsb "Hinweis") <*> aopt utcTimeField (fsb "Lösung ab") (sfSolutionFrom <$> template) diff --git a/src/Handler/Utils/Form.hs b/src/Handler/Utils/Form.hs index bbd547277..1c41fab33 100644 --- a/src/Handler/Utils/Form.hs +++ b/src/Handler/Utils/Form.hs @@ -245,8 +245,10 @@ schoolEntField = selectField schools where schools = optionsPersist [] [Asc SchoolName] schoolName -multiFileField :: Handler (Set FileId) -> Field Handler (Source Handler (Either FileId File)) -multiFileField permittedFiles' = Field{..} +multiFileField :: Maybe Bool -- ^ Override @unpackZips@-checkbox? + -> Handler (Set FileId) -- ^ Existing files to allow keeping + -> Field Handler (Source Handler (Either FileId File)) +multiFileField doUnpackOverride permittedFiles' = Field{..} where fieldEnctype = Multipart fieldParse vals files @@ -270,7 +272,9 @@ multiFileField permittedFiles' = Field{..} | otherwise = yieldM . acceptFile mapM_ handleFile files .| C.map Right where - doUnpack = unpackZips `elem` vals + doUnpack = case doUnpackOverride of + Nothing -> unpackZips `elem` vals + Just o -> o fieldView fieldId fieldName attrs val req = do pVals <- handlerToWidget permittedFiles' sentVals <- for val $ \src -> handlerToWidget . sourceToList $ src .| takeLefts diff --git a/templates/multiFileField.hamlet b/templates/multiFileField.hamlet index 9a9822c84..384408d49 100644 --- a/templates/multiFileField.hamlet +++ b/templates/multiFileField.hamlet @@ -1,17 +1,24 @@ $newline never - - -