diff --git a/messages/uniworx/categories/courses/submission/de-de-formal.msg b/messages/uniworx/categories/courses/submission/de-de-formal.msg index 5e4878a79..16cd74988 100644 --- a/messages/uniworx/categories/courses/submission/de-de-formal.msg +++ b/messages/uniworx/categories/courses/submission/de-de-formal.msg @@ -201,4 +201,9 @@ SubmissionAuthorshipStatementTip: Um abgeben zu können, müssen Sie die vorgege SubmissionLecturerAuthorshipStatement: Eigenständigkeitserklärung SubmissionLecturerAuthorshipStatementTip: Wenn Sie sich selbst als Mitabgebende/Mitabgebender eintragen müssen Sie eine Eigenständigkeitserklärung abgeben. Beachten Sie, dass Sie eine Eigenständigkeitserklärung nur für sich selbst abgeben können, nicht für etwaige andere Mitabgebende; falls Sie eine Eigenständigkeitserklärung abgeben, wird diese nur unter Ihrem Namen in Uni2work gespeichert. SubmissionLecturerAuthorshipStatementRequiredBecauseSubmittor: Da Sie sich selbst als Mitabgebende/Mitabgebender eingetragen haben, müssen Sie eine Eigenständigkeitserklärung abgeben. -SubmissionCoSubmittorsInviteRequiredBecauseAuthorshipStatements: Da für die Abgabe zu diesem Übungsblatt die Abgabe einer Eigenständigkeitserklärung vorausgesetzt wird, werden bekannte E-Mail Adressen bekannter Benutzer nicht aufgelöst. Mitabgebende müssen stattdessen per E-Mail eingeladen werden. \ No newline at end of file +SubmissionCoSubmittorsInviteRequiredBecauseAuthorshipStatements: Da für die Abgabe zu diesem Übungsblatt die Abgabe einer Eigenständigkeitserklärung vorausgesetzt wird, werden bekannte E-Mail Adressen bekannter Benutzer nicht aufgelöst. Mitabgebende müssen stattdessen per E-Mail eingeladen werden. + +SubmissionUserTable: Abgebende +SubmissionUserDisplayName !ident-ok: Name +SubmissionUserMatriculation: Matrikelnummer +SubmissionUserEmail: E-Mail \ No newline at end of file diff --git a/messages/uniworx/categories/courses/submission/en-eu.msg b/messages/uniworx/categories/courses/submission/en-eu.msg index 56264963d..67e8ad1a7 100644 --- a/messages/uniworx/categories/courses/submission/en-eu.msg +++ b/messages/uniworx/categories/courses/submission/en-eu.msg @@ -201,3 +201,8 @@ SubmissionLecturerAuthorshipStatement: Statement of Authorship SubmissionLecturerAuthorshipStatementTip: If you enter yourself as a submittor you have to confirm the Statement of Authorship. Note that you can only confirm the Statement of Authorship for yourself. If you confirm it, it will be recorded only under your name. SubmissionLecturerAuthorshipStatementRequiredBecauseSubmittor: Since you have entered yourself as a submittor you have to confirm the Statement of Authorship. SubmissionCoSubmittorsInviteRequiredBecauseAuthorshipStatements: Since Statements of Authorship are required to submit for this exercise sheet, e-mail addresses of known users are not resolved. Instead co-submittors will have to be invited via e-mail. + +SubmissionUserTable: Submittors +SubmissionUserDisplayName: Name +SubmissionUserMatriculation: Matriculation +SubmissionUserEmail: Email diff --git a/src/Handler/Submission/Helper.hs b/src/Handler/Submission/Helper.hs index 9b0727e7a..e70e89308 100644 --- a/src/Handler/Submission/Helper.hs +++ b/src/Handler/Submission/Helper.hs @@ -547,8 +547,8 @@ submissionHelper tid ssh csh shn mcid = do , formEncoding = formEnctype } - ((Entity _ Sheet{..}, _, lastEdits, maySubmit, _, _, msubmission, corrector), (showCorrection, correctionInvisible), mFileTable, filesCorrected, sheetTypeDesc, multipleSubmissionWarnWidget) <- runDB $ do - sheetInfo@(Entity shid Sheet{..}, _, _, _, _, _, msubmission, _) <- getSheetInfo + ((Entity _ Sheet{..}, _, lastEdits, maySubmit, _, _, msubmission, corrector), (showCorrection, correctionInvisible), mFileTable, filesCorrected, sheetTypeDesc, multipleSubmissionWarnWidget, subUsers, isLecturer) <- runDB $ do + sheetInfo@(Entity shid Sheet{..}, buddies, _, _, isLecturer, isOwner, msubmission, _) <- getSheetInfo (showCorrection, correctionInvisible) <- fmap (fromMaybe (False, Nothing)) . for ((,) <$> mcid <*> (Entity <$> msmid <*> msubmission)) $ \(cid, subEnt) -> do showCorrection <- hasReadAccessTo $ CSubmissionR tid ssh csh shn cid CorrectionR @@ -581,7 +581,13 @@ submissionHelper tid ssh csh shn mcid = do E.&&. submissionUser E.^. SubmissionUserSubmission E.==. E.val subId return $ notification NotificationBroad =<< messageIconI Warning IconSubmissionUserDuplicate MsgSubmissionSomeUsersDuplicateWarning - return (sheetInfo, (showCorrection, correctionInvisible), mFileTable, filesCorrected, sheetTypeDesc, multipleSubmissionWarnWidget) + subUsers <- do + let subUsers' = Set.toList $ bool id (maybe id (Set.insert . Right) muid) isOwner buddies + subUsers'' <- forMOf (traverse . _Right) subUsers' $ \uid -> (,) <$> (encrypt uid :: DB CryptoUUIDUser) <*> getJust uid + return $ subUsers'' + & sortOn (over _Right $ (,,,) <$> views _2 userSurname <*> views _2 userDisplayName <*> views _2 userEmail <*> view _1) + + return (sheetInfo, (showCorrection, correctionInvisible), mFileTable, filesCorrected, sheetTypeDesc, multipleSubmissionWarnWidget, subUsers, isLecturer) defaultLayout $ do setTitleI $ MsgHeadingSubmissionEditHead tid ssh csh shn diff --git a/src/Handler/Utils/Widgets.hs b/src/Handler/Utils/Widgets.hs index 81e624789..a3386447f 100644 --- a/src/Handler/Utils/Widgets.hs +++ b/src/Handler/Utils/Widgets.hs @@ -31,12 +31,19 @@ visibleUTCTime dtf t = do -- | Simple link to a known route -simpleLink :: RedirectUrl UniWorX url => Widget -> url -> Widget +simpleLink :: HasRoute UniWorX url => Widget -> url -> Widget simpleLink lbl url = do - tUrl <- toTextUrl url - [whamlet|^{lbl}|] + isAuth <- hasReadAccessTo $ urlRoute url + if | isAuth -> do + tUrl <- toTextUrl url + [whamlet| + $newline never + + ^{lbl} + |] + | otherwise -> lbl -simpleLinkI :: (RenderMessage UniWorX msg, RedirectUrl UniWorX url) => msg -> url -> Widget +simpleLinkI :: (RenderMessage UniWorX msg, HasRoute UniWorX url) => msg -> url -> Widget simpleLinkI = simpleLink . i18n -- | toWidget-Version of @nameHtml@, for convenience diff --git a/templates/submission.hamlet b/templates/submission.hamlet index e1eddf56a..c13d87f0e 100644 --- a/templates/submission.hamlet +++ b/templates/submission.hamlet @@ -9,7 +9,49 @@ $if is _Just mcid ^{wdgt} - ^{maybeVoid multipleSubmissionWarnWidget} +
+

+ _{MsgSubmissionUserTable} + + ^{maybeVoid multipleSubmissionWarnWidget} + + $if not (null subUsers) +
+ + + + +
+
+ _{MsgSubmissionUserDisplayName} + $if isLecturer +
+
+ _{MsgSubmissionUserMatriculation} +
+
+ _{MsgSubmissionUserEmail} + $forall subUser <- subUsers + $case subUser + $of Left email +
+ +
+
+ ^{simpleLink (nameWidget userDisplayName userSurname) (CourseR tid ssh csh (CUserR uCId))} + $if isLecturer +
+
+ $maybe matriculation <- userMatrikelnummer + #{matriculation} +
+