diff --git a/FragenSJ.txt b/FragenSJ.txt index 974d52943..c2219f2c1 100644 --- a/FragenSJ.txt +++ b/FragenSJ.txt @@ -18,11 +18,10 @@ - i18n der Links -> MenuItems verwenden wie bisher Page Titles -> setTitleI - Buttons? + Buttons? -> Kann leicht geändert werden! Was ist mit einfachen Text Feldern, z.B. die Beschriftung von Knöpfen wie in Handler.Course.getCourseListTermR, Zeile 66 "pageActions" für menuItemLabel? -** Page pageActions - - Berechtigungen prüfen? +** Page pageActions - Berechtigungen prüfen? => Eigener Constructor statt NavbarLeft/Right?! diff --git a/routes b/routes index 50deecf09..d8d4010e7 100644 --- a/routes +++ b/routes @@ -6,27 +6,29 @@ / HomeR GET POST /profile ProfileR GET -/users UsersR GET +/users UsersR GET !adminAny -/term TermShowR GET -/term/edit TermEditR GET POST -/term/#TermId/edit TermEditExistR GET +/term TermShowR GET +/term/edit TermEditR GET POST !adminAny +/term/#TermId/edit TermEditExistR GET !adminAny /course/ CourseListR GET -!/course/new CourseNewR GET POST +!/course/new CourseNewR GET POST !lecturerAny !/course/#TermId CourseListTermR GET /course/#TermId/#Text CourseR: /show CourseShowR GET POST - /edit CourseEditR GET POST + /edit CourseEditR GET POST !lecturer - /ex SheetR !registered: - / SheetListR GET - /new SheetNewR GET POST !lecturer - /#Text/show SheetShowR GET - /#Text/#SheetFileType/#FilePath SheetFileR GET - /#Text/edit SheetEditR GET POST !lecturer - /#Text/delete SheetDelR GET POST !lecturer + /ex SheetR !registered: + / SheetListR GET + /#Text/show SheetShowR GET !time + /#Text/#SheetFileType/#FilePath SheetFileR GET !time + /new SheetNewR GET POST !lecturer + /#Text/edit SheetEditR GET POST !lecturer + /#Text/delete SheetDelR GET POST !lecturer + +-- TODO below /submission SubmissionListR GET POST /submission/#CryptoUUIDSubmission SubmissionR GET POST /submissions.zip SubmissionDownloadMultiArchiveR POST diff --git a/src/Foundation.hs b/src/Foundation.hs index 474c51c13..50b84b6d8 100644 --- a/src/Foundation.hs +++ b/src/Foundation.hs @@ -95,11 +95,13 @@ data MenuItem = MenuItem , menuItemAccessCallback :: Handler Bool } -data MenuTypes - = NavbarAside { menuItem :: MenuItem } - | NavbarRight { menuItem :: MenuItem } - | NavbarExtra { menuItem :: MenuItem } - | NavbarSecondary { menuItem :: MenuItem } +data MenuTypes -- Semantische Rolle: + = NavbarAside { menuItem :: MenuItem } -- TODO + | NavbarExtra { menuItem :: MenuItem } -- TODO + | NavbarRight { menuItem :: MenuItem } -- Generell, nahezu immer sichtbar + | NavbarSecondary { menuItem :: MenuItem } -- Generell, nahezu immer sichtbar + | PageActionPrime { menuItem :: MenuItem } -- Seitenspezifische Aktion, häufig + | PageActionSecondary { menuItem :: MenuItem } -- Seitenspezifische Aktion, selten -- | Convenient Type Synonyms: type DB a = YesodDB UniWorX a @@ -205,6 +207,12 @@ instance Yesod UniWorX where makeLogger = return . appLogger isAuthorizedDB :: Route UniWorX -> Bool -> YesodDB UniWorX AuthResult +isAuthorizedDB route@(routeAttrs -> attrs) writeable + | "adminAny" `member` attrs = adminAccess Nothing + | "lecturerAny" `member` attrs = lecturerAccess Nothing + + + isAuthorizedDB UsersR _ = adminAccess Nothing isAuthorizedDB (SubmissionR cID) _ = submissionAccess $ Right cID isAuthorizedDB (SubmissionDownloadSingleR cID _) _ = submissionAccess $ Right cID diff --git a/src/Handler/Sheet.hs b/src/Handler/Sheet.hs index 02ab5d510..8496c26af 100644 --- a/src/Handler/Sheet.hs +++ b/src/Handler/Sheet.hs @@ -166,11 +166,11 @@ getSheetList courseEnt = do , headed "Abgabe ab" $ toWgt . formatTimeGerWD . sheetActiveFrom . snd3 , headed "Abgabe bis" $ toWgt . formatTimeGerWD . sheetActiveTo . snd3 , headed "Bewertung" $ toWgt . show . sheetType . snd3 - , headed "Korrigiert" $ toWgt . snd . trd3 - , headed "Eingereicht" $ toWgt . fst . trd3 ] let colAdmin = mconcat -- only show edit button for allowed course assistants - [ headed "" $ \s -> linkButton "Edit" BCLink $ CourseR tid csh $ SheetR $ SheetEditR $ sheetName $ snd3 s + [ headed "Korrigiert" $ toWgt . snd . trd3 + , headed "Eingereicht" $ toWgt . fst . trd3 + , headed "" $ \s -> linkButton "Edit" BCLink $ CourseR tid csh $ SheetR $ SheetEditR $ sheetName $ snd3 s , headed "" $ \s -> linkButton "Delete" BCLink $ CourseR tid csh $ SheetR $ SheetDelR $ sheetName $ snd3 s ] showAdmin <- case sheets of @@ -182,7 +182,7 @@ getSheetList courseEnt = do then colBase `mappend` colAdmin else colBase let pageActions = - [ NavbarAside $ MenuItem + [ PageActionPrime $ MenuItem { menuItemLabel = "Neues Übungsblatt" , menuItemIcon = Nothing , menuItemRoute = CSheetR tid csh SheetNewR diff --git a/templates/widgets/asidenav.hamlet b/templates/widgets/asidenav.hamlet index 1a507da3c..f28f3337d 100644 --- a/templates/widgets/asidenav.hamlet +++ b/templates/widgets/asidenav.hamlet @@ -10,6 +10,12 @@ $if isJust mIcon