diff --git a/messages/uniworx/de.msg b/messages/uniworx/de.msg index 264cb3d79..c7c7f8574 100644 --- a/messages/uniworx/de.msg +++ b/messages/uniworx/de.msg @@ -571,13 +571,14 @@ MenuSheetNew: Neues Übungsblatt anlegen MenuSheetCurrent: Aktuelles Übungsblatt MenuSheetOldUnassigned: Abgaben ohne Korrektor MenuCourseEdit: Kurs editieren -MenuCourseNewTemplate: Als neuen Kurs klonen +MenuCourseClone: Als neuen Kurs klonen MenuCourseDelete: Kurs löschen MenuSubmissionNew: Abgabe anlegen MenuSubmissionOwn: Abgabe MenuCorrectors: Korrektoren MenuSheetEdit: Übungsblatt editieren MenuSheetDelete: Übungsblatt löschen +MenuSheetClone: Als neues Übungsblatt klonen MenuCorrectionsUpload: Korrekturen hochladen MenuCorrectionsCreate: Abgaben registrieren MenuCorrectionsGrade: Abgaben bewerten diff --git a/src/Foundation.hs b/src/Foundation.hs index fe61d882a..9ac8fb834 100644 --- a/src/Foundation.hs +++ b/src/Foundation.hs @@ -1275,8 +1275,8 @@ pageActions (CourseR tid ssh csh CShowR) = } , MenuItem { menuItemType = PageActionSecondary - , menuItemLabel = MsgMenuCourseNewTemplate - , menuItemIcon = Nothing + , menuItemLabel = MsgMenuCourseClone + , menuItemIcon = Just "copy" , menuItemRoute = SomeRoute (CourseNewR, [("tid", toPathPiece tid), ("ssh", toPathPiece ssh), ("csh", toPathPiece csh)]) , menuItemModal = False , menuItemAccessCallback' = return True @@ -1284,7 +1284,7 @@ pageActions (CourseR tid ssh csh CShowR) = , MenuItem { menuItemType = PageActionSecondary , menuItemLabel = MsgMenuCourseDelete - , menuItemIcon = Nothing + , menuItemIcon = Just "trash" , menuItemRoute = SomeRoute $ CourseR tid ssh csh CDeleteR , menuItemModal = False , menuItemAccessCallback' = return True @@ -1364,18 +1364,6 @@ pageActions (CSheetR tid ssh csh shn SShowR) = guard $ null submissions return True } - , MenuItem - { menuItemType = PageActionPrime - , menuItemLabel = MsgMenuCorrectionsOwn - , menuItemIcon = Nothing - , menuItemRoute = SomeRoute (CorrectionsR, [ ("corrections-term" , termToText $ unTermKey tid) - , ("corrections-school", CI.original $ unSchoolKey ssh) - , ("corrections-course", CI.original csh) - , ("corrections-sheet" , CI.original shn) - ]) - , menuItemModal = False - , menuItemAccessCallback' = (== Authorized) <$> evalAccessCorrector tid ssh csh - } , MenuItem { menuItemType = PageActionPrime , menuItemLabel = MsgMenuSubmissionOwn @@ -1388,6 +1376,18 @@ pageActions (CSheetR tid ssh csh shn SShowR) = guard . not $ null submissions return True } + , MenuItem + { menuItemType = PageActionPrime + , menuItemLabel = MsgMenuCorrectionsOwn + , menuItemIcon = Nothing + , menuItemRoute = SomeRoute (CorrectionsR, [ ("corrections-term" , termToText $ unTermKey tid) + , ("corrections-school", CI.original $ unSchoolKey ssh) + , ("corrections-course", CI.original csh) + , ("corrections-sheet" , CI.original shn) + ]) + , menuItemModal = False + , menuItemAccessCallback' = (== Authorized) <$> evalAccessCorrector tid ssh csh + } , MenuItem { menuItemType = PageActionPrime , menuItemLabel = MsgMenuCorrectors @@ -1412,10 +1412,18 @@ pageActions (CSheetR tid ssh csh shn SShowR) = , menuItemModal = False , menuItemAccessCallback' = return True } + , MenuItem + { menuItemType = PageActionSecondary + , menuItemLabel = MsgMenuSheetClone + , menuItemIcon = Just "copy" + , menuItemRoute = SomeRoute (CourseR tid ssh csh SheetNewR, [("shn", toPathPiece shn)]) + , menuItemModal = False + , menuItemAccessCallback' = return True + } , MenuItem { menuItemType = PageActionSecondary , menuItemLabel = MsgMenuSheetDelete - , menuItemIcon = Nothing + , menuItemIcon = Just "trash" , menuItemRoute = SomeRoute $ CSheetR tid ssh csh shn SDelR , menuItemModal = False , menuItemAccessCallback' = return True diff --git a/src/Handler/Sheet.hs b/src/Handler/Sheet.hs index 454b90a09..e798f9ca9 100644 --- a/src/Handler/Sheet.hs +++ b/src/Handler/Sheet.hs @@ -425,11 +425,17 @@ getSFileR tid ssh csh shn typ title = do getSheetNewR :: TermId -> SchoolId -> CourseShorthand -> Handler Html getSheetNewR tid ssh csh = do + parShn <- runInputGetResult $ iopt ciField "shn" + let searchShn sheet = case parShn of + (FormSuccess (Just shn)) -> E.where_ $ sheet E.^. SheetName E.==. E.val shn + -- (FormFailure msgs) -> -- not in MonadHandler anymore -- forM_ msgs (addMessage Error . toHtml) + _other -> return () lastSheets <- runDB $ E.select . E.from $ \(course `E.InnerJoin` sheet) -> do E.on $ course E.^. CourseId E.==. sheet E.^. SheetCourse E.where_ $ course E.^. CourseTerm E.==. E.val tid E.&&. course E.^. CourseSchool E.==. E.val ssh E.&&. course E.^. CourseShorthand E.==. E.val csh + searchShn sheet -- let lastSheetEdit = E.sub_select . E.from $ \sheetEdit -> do -- E.where_ $ sheetEdit E.^. SheetEditSheet E.==. sheet E.^. SheetId -- return . E.max_ $ sheetEdit E.^. SheetEditTime