Submission edit times are shown now.

This commit is contained in:
SJost 2018-04-19 17:43:42 +02:00
parent 917d767d30
commit f3aa2b32c9
3 changed files with 27 additions and 14 deletions

View File

@ -30,7 +30,7 @@ OnlyUploadOneFile: Bitte nur eine Datei hochladen.
SubmissionWrongSheet: Abgabenummer gehört nicht zum angegebenen Übungsblatt.
SubmissionAlreadyExists: Sie haben bereits eine Abgabe zu diesem Übungsblatt.
SubmissionTitle tid@TermIdentifier courseShortHand@Text sheetName@Text: #{termToText tid}-#{courseShortHand} #{sheetName}: Abgabe
SubmissionTitle tid@TermIdentifier courseShortHand@Text sheetName@Text: #{termToText tid}-#{courseShortHand} #{sheetName}: Abgabe editieren/anlegen
SubmissionMember g@Int: Mitabgebende(r) ##{tshow g}
SubmissionArchive: Zip-Archiv der Abgabedatei(en)
SubmissionFile: Datei zur Abgabe

View File

@ -74,7 +74,7 @@ getSubmissionR = postSubmissionR
postSubmissionR tid csh shn (SubmissionMode mcid) = do
uid <- requireAuthId
msmid <- traverse decrypt mcid
(Entity shid Sheet{..}, buddies, oldfiles) <- runDB $ do
(Entity shid Sheet{..}, buddies, oldfiles,lastEdits) <- runDB $ do
sheet@(Entity shid Sheet{..}) <- fetchSheet tid csh shn
case msmid of
Nothing -> do
@ -83,7 +83,7 @@ postSubmissionR tid csh shn (SubmissionMode mcid) = do
E.where_ $ submissionUser E.^. SubmissionUserUserId E.==. E.val uid
E.&&. submission E.^. SubmissionSheetId E.==. E.val shid
return $ submission E.^. SubmissionId
$logDebugS "Submission.DUPLICATENEW" (tshow submissions)
-- $logDebugS "Submission.DUPLICATENEW" (tshow submissions)
case submissions of
[] -> do
-- fetch buddies from previous submission in this course
@ -102,7 +102,7 @@ postSubmissionR tid csh shn (SubmissionMode mcid) = do
E.&&. submissionUser E.^. SubmissionUserUserId E.!=. E.val uid
E.orderBy [E.asc $ user E.^. UserEmail]
return $ user E.^. UserEmail
return (sheet,buddies,[])
return (sheet,buddies,[],[])
(E.Value smid:_) -> do
cID <- encrypt smid
addMessageI "info" $ MsgSubmissionAlreadyExists
@ -118,7 +118,15 @@ postSubmissionR tid csh shn (SubmissionMode mcid) = do
E.orderBy [E.asc $ user E.^. UserEmail]
return $ user E.^. UserEmail
oldfiles <- sourceToList $ submissionFileSource smid
return (sheet,buddies,oldfiles)
-- mLastEdit <- selectFirst [SubmissionEditSubmission ==. smid] [Desc SubmissionEditTime]
lastEditValues <- E.select . E.from $ \(user `E.InnerJoin` submissionEdit) -> do
E.on (user E.^. UserId E.==. submissionEdit E.^. SubmissionEditUser)
E.where_ $ submissionEdit E.^. SubmissionEditSubmission E.==. E.val smid
E.orderBy [E.desc $ submissionEdit E.^. SubmissionEditTime]
E.limit 1
return $ (user E.^. UserDisplayName, submissionEdit E.^. SubmissionEditTime)
let lastEdits = map (\(a,b)-> (E.unValue a, E.unValue b)) lastEditValues
return (sheet,buddies,oldfiles,lastEdits)
let unpackZips = True -- undefined -- TODO
((res,formWidget), formEnctype) <- runFormPost $ makeSubmissionForm unpackZips sheetGrouping $ map E.unValue buddies
mCID <- runDB $ do
@ -191,7 +199,6 @@ postSubmissionR tid csh shn (SubmissionMode mcid) = do
Nothing -> return ()
mArCid <- fmap ZIPArchiveName <$> traverse encrypt msmid
let mCidArCid = (,) <$> mcid <*> mArCid
let pageTitle = MsgSubmissionTitle (unTermKey tid) csh shn
let formTitle = pageTitle
@ -201,17 +208,17 @@ postSubmissionR tid csh shn (SubmissionMode mcid) = do
setTitleI pageTitle
$(widgetFile "formPageI18n")
[whamlet|
$maybe (cid, arCid) <-mCidArCid
$maybe arCid <- mArCid
<hr>
<h2>
<a href=@{SubmissionDownloadArchiveR arCid}>Archiv
<h3>Enthaltene Dateien:
$forall (Entity _ File{..}) <- oldfiles
<a href=@{SubmissionDownloadSingleR cid fileTitle}>
#{fileTitle}
<h2>
Last Edits
TODO
$maybe cid <- mcid
<h3>Enthaltene Dateien:
$forall (Entity _ File{..}) <- oldfiles
<a href=@{SubmissionDownloadSingleR cid fileTitle}>
#{fileTitle}
$forall (name,time) <- lastEdits
<div>last edited by #{name} at #{formatTimeGerWDT time}
|]

View File

@ -49,6 +49,12 @@ whenIsJust :: Monad m => Maybe a -> (a -> m ()) -> m ()
whenIsJust (Just x) f = f x
whenIsJust Nothing _ = return ()
------------
-- Tuples --
------------
both :: (a -> b) -> (a,a) -> (b,b)
both f (x,y) = (f x, f y)
----------