From 953f7af1228bb37f1235d97acd0eb956f2072014 Mon Sep 17 00:00:00 2001 From: Steffen Jost Date: Thu, 16 May 2019 12:11:48 +0200 Subject: [PATCH] Avoid reported confusion of bookmark using users --- messages/uniworx/de.msg | 5 +++-- routes | 2 +- src/Foundation.hs | 4 +++- src/Handler/Sheet.hs | 35 ++++++++++++++++++++++++++--------- 4 files changed, 33 insertions(+), 13 deletions(-) diff --git a/messages/uniworx/de.msg b/messages/uniworx/de.msg index ccd4eac45..83045e281 100644 --- a/messages/uniworx/de.msg +++ b/messages/uniworx/de.msg @@ -190,7 +190,8 @@ SheetErrVisibility: "Beginn Abgabezeitraum" muss nach "Sichbar für Teilnehmer a SheetErrDeadlineEarly: "Ende Abgabezeitraum" muss nach "Beginn Abzeitraum" liegen SheetErrHintEarly: Hinweise dürfen erst nach Beginn des Abgabezeitraums herausgegeben werden SheetErrSolutionEarly: Lösungen dürfen erst nach Ende der Abgabezeitraums herausgegeben werden - +SheetNoCurrent: Es gibt momentan kein aktives Übungsblatt. +SheetNoOldUnassigned: Alle Abgaben inaktiver Blätter sind bereits einen Korrektor zugeteilt. Deadline: Abgabe Done: Eingereicht @@ -794,7 +795,7 @@ MenuSheetEdit: Übungsblatt editieren MenuSheetDelete: Übungsblatt löschen MenuSheetClone: Als neues Übungsblatt klonen MenuCorrectionsUpload: Korrekturen hochladen -MenuCorrectionsDownload: Abgaben herunterladen +MenuCorrectionsDownload: Offene Abgaben herunterladen MenuCorrectionsCreate: Abgaben registrieren MenuCorrectionsGrade: Abgaben online korrigieren MenuAuthPreds: Authorisierungseinstellungen diff --git a/routes b/routes index 45fa74da5..d934bd8f6 100644 --- a/routes +++ b/routes @@ -95,7 +95,7 @@ /ex SheetListR GET !course-registered !materials !corrector /ex/new SheetNewR GET POST /ex/current SheetCurrentR GET !course-registered !materials !corrector - /ex/unassigned SheetOldUnassigned GET + /ex/unassigned SheetOldUnassignedR GET /ex/#SheetName SheetR: /show SShowR GET !timeANDcourse-registered !timeANDmaterials !corrector !timeANDtutor /edit SEditR GET POST diff --git a/src/Foundation.hs b/src/Foundation.hs index 7eaaeabba..48b5e033e 100644 --- a/src/Foundation.hs +++ b/src/Foundation.hs @@ -1450,6 +1450,8 @@ instance YesodBreadcrumbs UniWorX where breadcrumb (CourseR tid ssh csh CCorrectionsR) = return ("Abgaben" , Just $ CourseR tid ssh csh CShowR) breadcrumb (CourseR tid ssh csh SheetListR) = return ("Übungen" , Just $ CourseR tid ssh csh CShowR) breadcrumb (CourseR tid ssh csh SheetNewR ) = return ("Neu", Just $ CourseR tid ssh csh SheetListR) + breadcrumb (CourseR tid ssh csh SheetCurrentR) = return ("Aktuelles Blatt", Just $ CourseR tid ssh csh SheetListR) + breadcrumb (CourseR tid ssh csh SheetOldUnassignedR) = return ("Offene Abgaben", Just $ CourseR tid ssh csh SheetListR) breadcrumb (CourseR tid ssh csh CCommR ) = return ("Kursmitteilung", Just $ CourseR tid ssh csh CShowR) breadcrumb (CourseR tid ssh csh CTutorialListR) = return ("Tutorien", Just $ CourseR tid ssh csh CShowR) breadcrumb (CourseR tid ssh csh CTutorialNewR) = return ("Anlegen", Just $ CourseR tid ssh csh CTutorialListR) @@ -1949,7 +1951,7 @@ pageActions (CourseR tid ssh csh SheetListR) = { menuItemType = PageActionPrime , menuItemLabel = MsgMenuSheetOldUnassigned , menuItemIcon = Nothing - , menuItemRoute = SomeRoute $ CourseR tid ssh csh SheetOldUnassigned + , menuItemRoute = SomeRoute $ CourseR tid ssh csh SheetOldUnassignedR , menuItemModal = False , menuItemAccessCallback' = runDB . maybeT (return False) $ do void . MaybeT $ sheetOldUnassigned tid ssh csh diff --git a/src/Handler/Sheet.hs b/src/Handler/Sheet.hs index 754d27a95..c5c7fb45f 100644 --- a/src/Handler/Sheet.hs +++ b/src/Handler/Sheet.hs @@ -146,16 +146,33 @@ makeSheetForm msId template = identifyForm FIDsheet $ \html -> do getSheetCurrentR :: TermId -> SchoolId -> CourseShorthand -> Handler Html -getSheetCurrentR tid ssh csh = runDB $ do - let redi shn = redirectAccess $ CSheetR tid ssh csh shn SShowR - shn <- sheetCurrent tid ssh csh - maybe notFound redi shn +getSheetCurrentR tid ssh csh = do + mbShn <- runDB $ sheetCurrent tid ssh csh + case mbShn of + Just shn -> redirectAccess $ CSheetR tid ssh csh shn SShowR + Nothing -> do -- no current sheet exists + -- users should never see a link to this URL in this situation, + -- but we had confused users that used a bookmark instead. + let headingShort = [whamlet|_{MsgMenuSheetCurrent}|] + headingLong = prependCourseTitle tid ssh csh MsgMenuSheetCurrent + siteLayout headingShort $ do + setTitleI headingLong + [whamlet|_{MsgSheetNoCurrent}|] -getSheetOldUnassigned :: TermId -> SchoolId -> CourseShorthand -> Handler () -getSheetOldUnassigned tid ssh csh = runDB $ do - let redi shn = redirectAccess $ CSheetR tid ssh csh shn SSubsR - shn <- sheetOldUnassigned tid ssh csh - maybe notFound redi shn + +getSheetOldUnassignedR:: TermId -> SchoolId -> CourseShorthand -> Handler Html +getSheetOldUnassignedR tid ssh csh = do + mbShn <- runDB $ sheetOldUnassigned tid ssh csh + case mbShn of + Just shn -> redirectAccess $ CSheetR tid ssh csh shn SSubsR + Nothing -> do -- no unassigned submissions in any inactive sheet + -- users should never see a link to this URL in this situation, + -- but we had confused users that used a bookmark instead. + let headingShort = [whamlet|_{MsgMenuSheetOldUnassigned}|] + headingLong = prependCourseTitle tid ssh csh MsgMenuSheetOldUnassigned + siteLayout headingShort $ do + setTitleI headingLong + [whamlet|_{MsgSheetNoOldUnassigned}|] getSheetListR :: TermId -> SchoolId -> CourseShorthand -> Handler Html getSheetListR tid ssh csh = do