diff --git a/messages/uniworx/de.msg b/messages/uniworx/de.msg index c1b8fcca7..1bd1ddd42 100644 --- a/messages/uniworx/de.msg +++ b/messages/uniworx/de.msg @@ -5,6 +5,7 @@ BtnRegister: Anmelden BtnDeregister: Abmelden BtnHijack: Sitzung übernehmen +Aborted: Abgebrochen Registered: Angemeldet RegisterFrom: Anmeldungen von RegisterTo: Anmeldungen bis diff --git a/src/Handler/Profile.hs b/src/Handler/Profile.hs index 29918fe82..1eec221fe 100644 --- a/src/Handler/Profile.hs +++ b/src/Handler/Profile.hs @@ -142,14 +142,23 @@ postProfileR = do postProfileDataR :: Handler Html postProfileDataR = do - (uid, User{..}) <- requireAuthPair ((btnResult,_), _) <- runFormPost $ buttonForm case btnResult of - (FormSuccess BtnDelete) -> addMessage Warning "Delete-Knopf gedrückt" - (FormSuccess BtnAbort ) -> addMessage Warning "Knopf Abort erkannt" - _other -> addMessage Warning "KEIN Knopf erkannt" - addMessage Error "Löschen der Daten wurde noch nicht implementiert." - getProfileDataR + (FormSuccess BtnDelete) -> do + (uid, User{..}) <- requireAuthPair + addMessage Warning "Delete-Knopf gedrückt" + addMessage Error "Löschen der Daten wurde noch nicht implementiert." + -- first determine all submission that solely depend on this user: + -- SubmissionGroup / SubmissionGroupUser + -- Submission / SubmissionUser + + -- runDB $ deleteCascade uid + (FormSuccess BtnAbort ) -> do + addMessageI Info MsgAborted + getProfileDataR + _other -> do + getProfileDataR + getProfileDataR :: Handler Html getProfileDataR = do @@ -176,13 +185,30 @@ getProfileDataR = do -- TODO: move this into a Message and/or Widget-File let delWdgt = [whamlet|
-
Sind Sie sich absolut sicher, alle gespeicherten Daten zu löschen? - Abgegebene Hausaufgaben werden dadurch rückwirkend gelöscht, - wodurch eventuell ein Klausurbonus nicht mehr anerkannt wird.
- Gilt nicht in der Testphase von Uni2work: - Klausurnoten können Sie hiermit nicht löschen. - Da diese 5 Jahre bis nach Ihrer Exmatrikulation aufbewahrt werden müssen. + Während der Testphase von Uni2work können Sie hiermit + Ihren Account bei Uni2work vollständig löschen. + Mit Ihrem Campus-Account können Sie sich aber danach + jederzeit erneut einloggen, wodurch wieder ein leerer Account erstellt wird. +
+ Hochgeladene Hausaufgaben-Dateien werden unabhhängig vom Urherber nur dann gelöscht, + wenn die Dateien ausschließlich Ihnen zugeordnet sind. + Dateien aus Gruppenabgaben werden also erst dann gelöscht, + wenn alle Gruppenmitglieder Ihren Account gelöscht haben. +
+ Achtung: + Auch abgegebene Hausübungen werden gelöscht! + Falls ein Veranstalter Informationen darüber nicht anderweitig gespeichert hat, + kann dadurch ein etwaiger Hausaufgabenbonus verloren gehen. + (Verbuchte Noten sollten dadurch nicht betroffen sein, aber in einem etwaigen + Streitfall konnen die per Uni2work verwalteten Hausaufgaben dann + auch nicht mehr rekonstruiert/berücksichtigt werden.) +
+ Nach der Testphase von Uni2work wird das Löschen eines Accounts etwas + eingeschränkt werden, da z.B. Klausurnoten 5 Jahre bis nach Exmatrikulation + aufbewahrt werden müssen. +
+ Sind Sie sich absolut sicher, alle Ihre in Uni2work gespeicherten Daten zu löschen?
^{btnWdgt} |] defaultLayout $ do diff --git a/src/Handler/Utils/Form.hs b/src/Handler/Utils/Form.hs index 6236c1194..3bff46100 100644 --- a/src/Handler/Utils/Form.hs +++ b/src/Handler/Utils/Form.hs @@ -153,7 +153,7 @@ combinedButtonField btns inner csrf = do -} -- buttonForm :: Button a => Markup -> MForm (HandlerT UniWorX IO) (FormResult a, (WidgetT UniWorX IO ())) -buttonForm :: (Button UniWorX a) => Form a +buttonForm :: (Button UniWorX a, Show a) => Form a buttonForm csrf = do buttonIdent <- newFormIdent let button b = mopt (buttonField b) ("n/a"{ fsName = Just buttonIdent }) Nothing @@ -164,12 +164,15 @@ buttonForm csrf = do $forall bView <- btnViews ^{fvInput bView} |] + $logDebugS "FormResult" $ tshow results return (accResult results,widget) where accResult :: Foldable f => f (FormResult (Maybe a)) -> FormResult a accResult = Foldable.foldr accResult' FormMissing accResult' :: FormResult (Maybe a) -> FormResult a -> FormResult a + -- TODO: Does not work for Forms with more than 3 buttons, since all deliver FormFailure except for one! + -- TODO: Maybe change buttonField? accResult' (FormSuccess (Just _)) (FormSuccess _) = FormFailure ["Ambiguous button parse"] accResult' (FormSuccess (Just x)) _ = FormSuccess x accResult' _ x@(FormSuccess _) = x --SJ: Is this safe? Shouldn't Failure override Success? diff --git a/src/Utils/Form.hs b/src/Utils/Form.hs index 939169e9b..9a96781ef 100644 --- a/src/Utils/Form.hs +++ b/src/Utils/Form.hs @@ -195,7 +195,7 @@ buttonField btn = Field {fieldParse, fieldView, fieldEnctype} fieldParse [] _ = return $ Right Nothing fieldParse [str] _ | str == toPathPiece btn = return $ Right $ Just btn - | otherwise = return $ Left "Wrong button value" + | otherwise = return $ Left "Wrong button value" -- SJ: Right Nothing?! fieldParse _ _ = return $ Left "Multiple button values" combinedButtonField :: (Button site a, Show (ButtonCssClass site)) => [a] -> AForm (HandlerT site IO) [Maybe a]