feat(course-events): implement opt deletion

This commit is contained in:
Sarah Vaupel 2020-11-05 22:54:35 +01:00
parent 5f9aad8aa9
commit 0ecc3c689f
6 changed files with 29 additions and 11 deletions

View File

@ -139,6 +139,7 @@ ScheduleOffsetWeekForwardWeek: 1 Woche vorwärts
ScheduleOptActions: Terminübersicht
ScheduleOptOut: Deabonnieren
ScheduleOptIn: Abonnieren
ScheduleOptDelete: Standard wiederherstellen
ScheduleOptOutSuccess: Termin erfolgreich deabonniert
ScheduleOptInSuccess: Termin erfolgreich abonniert

View File

@ -140,6 +140,7 @@ ScheduleOffsetWeekForwardWeek: 1 week forward
ScheduleOptActions: Schedule
ScheduleOptOut: Unsubscribe
ScheduleOptIn: Subscribe
ScheduleOptDelete: Reset to default
ScheduleOptOutSuccess: Successfully unsubscribed from occurrence
ScheduleOptInSuccess: Successfully subscribed to occurrence

9
routes
View File

@ -216,10 +216,11 @@
!/download/*FilePath CNFileR GET !timeANDparticipant
!/events/add CEventsNewR GET POST
/events/#CryptoUUIDCourseEvent CourseEventR:
/schedule-opt/#Bool CEvScheduleOptR GET POST !free
/edit CEvEditR GET POST
/delete CEvDeleteR GET POST
/personalised-sheet-files CPersonalFilesR GET
/schedule-opt/set/#Bool CEvScheduleOptSetR GET POST !free
/schedule-opt/delete CEvScheduleOptDelR GET POST !free
/edit CEvEditR GET POST
/delete CEvDeleteR GET POST
/personalised-sheet-files CPersonalFilesR GET
/subs CorrectionsR GET POST !corrector !lecturer

View File

@ -207,7 +207,8 @@ instance BearerAuthSite UniWorX => YesodBreadcrumbs UniWorX where
breadcrumb (CourseR tid ssh csh CEventsNewR) = i18nCrumb MsgMenuCourseEventNew . Just $ CourseR tid ssh csh CShowR
breadcrumb (CourseR tid ssh csh (CourseEventR _cID sRoute)) = case sRoute of
CEvScheduleOptR _ -> i18nCrumb MsgBreadcrumbCourseEventScheduleOpt . Just $ CourseR tid ssh csh CShowR
CEvScheduleOptSetR _ -> i18nCrumb MsgBreadcrumbCourseEventScheduleOpt . Just $ CourseR tid ssh csh CShowR
CEvScheduleOptDelR -> i18nCrumb MsgBreadcrumbCourseEventScheduleOpt . Just $ CourseR tid ssh csh CShowR
CEvEditR -> i18nCrumb MsgMenuCourseEventEdit . Just $ CourseR tid ssh csh CShowR
CEvDeleteR -> i18nCrumb MsgBreadcrumbCourseEventDelete . Just $ CourseR tid ssh csh CShowR

View File

@ -1,13 +1,14 @@
module Handler.Course.Events.Schedule
( getCEvScheduleOptR , postCEvScheduleOptR
( getCEvScheduleOptSetR , postCEvScheduleOptSetR
, getCEvScheduleOptDelR , postCEvScheduleOptDelR
) where
import Import
getCEvScheduleOptR, postCEvScheduleOptR :: TermId -> SchoolId -> CourseShorthand -> CryptoUUIDCourseEvent -> Bool -> Handler Html
getCEvScheduleOptR = postCEvScheduleOptR
postCEvScheduleOptR tid ssh csh ceId opt = do
getCEvScheduleOptSetR, postCEvScheduleOptSetR :: TermId -> SchoolId -> CourseShorthand -> CryptoUUIDCourseEvent -> Bool -> Handler Html
getCEvScheduleOptSetR = postCEvScheduleOptSetR
postCEvScheduleOptSetR tid ssh csh ceId opt = do
uid <- requireAuthId
eId <- decrypt ceId
@ -21,3 +22,15 @@ postCEvScheduleOptR tid ssh csh ceId opt = do
addMessageI Success $ bool MsgScheduleOptOutSuccess MsgScheduleOptInSuccess opt
redirect $ CourseR tid ssh csh CShowR
getCEvScheduleOptDelR, postCEvScheduleOptDelR :: TermId -> SchoolId -> CourseShorthand -> CryptoUUIDCourseEvent -> Handler Html
getCEvScheduleOptDelR = postCEvScheduleOptDelR
postCEvScheduleOptDelR tid ssh csh ceId = do
uid <- requireAuthId
eId <- decrypt ceId
runDB $ deleteBy (UniqueCourseEventScheduleOpt eId uid)
addMessageI Success MsgScheduleOptDeleteSuccess
redirect $ CourseR tid ssh csh CShowR

View File

@ -285,9 +285,10 @@ $# $if NTop (Just 0) < NTop (courseCapacity course)
$maybe (_, User{userScheduleOccurrenceDisplayDefault}) <- mbAuth
<td .table__td>
<div .table__td-content>
<a .btn .btn-primary href=@{CEventR tid ssh csh cID (CEvScheduleOptR (not (maybe userScheduleOccurrenceDisplayDefault courseEventScheduleOptOpt mEventScheduleOpt)))}>
<a .btn .btn-primary href=@{CEventR tid ssh csh cID (CEvScheduleOptSetR (not (maybe userScheduleOccurrenceDisplayDefault courseEventScheduleOptOpt mEventScheduleOpt)))}>
_{bool MsgScheduleOptIn MsgScheduleOptOut (maybe userScheduleOccurrenceDisplayDefault courseEventScheduleOptOpt mEventScheduleOpt)}
$# TODO: add link to remove schedule opt-*
<a .btn .btn-primary href=@{CEventR tid ssh csh cID CEvScheduleOptDelR}>
_{MsgScheduleOptDelete}
$if mayCreateEvents
<td .table__td>
<ul .list--inline .list--iconless .list--comma-separated>