Allow overriding unpackZips-Checkbox

This commit is contained in:
Gregor Kleen 2018-04-03 18:48:10 +02:00
parent 0b0444ede4
commit 8e43a314d3
3 changed files with 14 additions and 7 deletions

View File

@ -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)

View File

@ -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

View File

@ -16,6 +16,9 @@ $forall FileUploadInfo{..} <- fileInfos
$# new files
<input type="file" name=#{fieldName} multiple>
<div .file-input__unpack>
<label for=#{fieldId}_zip>ZIPs entpacken
<input type=checkbox id=#{fieldId}_zip name=#{fieldName} value=#{unpackZips} :req:required>
$case doUnpackOverride
$of Nothing
<div .file-input__unpack>
<label for=#{fieldId}_zip>ZIPs entpacken
<input type=checkbox id=#{fieldId}_zip name=#{fieldName} value=#{unpackZips} :req:required>
$of _