diff --git a/messages/de.msg b/messages/de.msg index 0ec55519f..d296157b4 100644 --- a/messages/de.msg +++ b/messages/de.msg @@ -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 diff --git a/src/Handler/Submission.hs b/src/Handler/Submission.hs index f101588f8..318551f4b 100644 --- a/src/Handler/Submission.hs +++ b/src/Handler/Submission.hs @@ -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

Archiv -

Enthaltene Dateien: - $forall (Entity _ File{..}) <- oldfiles - - #{fileTitle} -

- Last Edits - TODO + $maybe cid <- mcid +

Enthaltene Dateien: + $forall (Entity _ File{..}) <- oldfiles + + #{fileTitle} + $forall (name,time) <- lastEdits +
last edited by #{name} at #{formatTimeGerWDT time} |] diff --git a/src/Utils.hs b/src/Utils.hs index a1816cb71..25fbe61bb 100644 --- a/src/Utils.hs +++ b/src/Utils.hs @@ -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) ----------